데이터인증
접근 제어
이 배포를 누가 볼 수 있는지 정합니다. 앱 안의 로그인과는 다른 층입니다.
아직 공개하고 싶지 않은 배포를 잠그는 기능입니다. 세 모드가 있습니다.
runlot access set public # 누구나 (기본)
runlot access set org # 이 조직의 멤버만
runlot access set password # 공유 비밀번호를 아는 사람만runlot access # 지금 상태
runlot access --jsonadmin 역할이 필요합니다.
password 모드
runlot access set password --password 'my-secret'--password 를 생략하시면 터미널에서 물어봅니다. 잠긴 배포에 오시면 앞단이 비밀번호 화면을 먼저 보여 줍니다.
org 모드
조직 멤버는 대시보드 로그인으로 그대로 들어옵니다. 멤버가 아니면 403 입니다.
워커가 받는 것
앞단이 판정한 결과를 헤더로 붙여 줍니다.
| 헤더 | 값 |
|---|---|
Runlot-Access-Mode | public · org · password · bypass |
Runlot-Access-Subject | 사용자 id (모드에 따라 다름) |
Runlot-Access-Email | 로그인 이메일 (org 모드) |
Runlot-Access-Org-Role | admin · member · viewer (org 모드) |
읽는 것은 작은 헬퍼가 대신합니다.
import { identity, isSignedIn } from "@runlot/access";
const who = identity(request);
// { mode: "org", subject: "…", email: "[email protected]", orgRole: "admin" }
if (who.orgRole !== "admin") return new Response(null, { status: 403 });들어오는 요청의 Runlot-* 헤더는 앞단에서 모두 지워지고 다시 붙습니다. 클라이언트가 흉내 낼 수 없습니다.
앞단 없이 도는 로컬 환경에서는 mode 가 public 이고 나머지가 null 입니다.
CI 용 우회
잠긴 배포를 자동화가 찔러 봐야 할 때 씁니다.
runlot access bypass --new시크릿이 한 번만 찍힙니다. 이후에는 볼 수 없습니다.
curl -H "Runlot-Access-Bypass: <secret>" https://my-app--me.runlot.app/healthrunlot access bypass --revoke잠긴 배포는 깨어나지 않습니다
접근 판정은 프로젝트를 깨우기 전에 일어납니다. 인증되지 않은 요청은 주차 된 프로젝트를 깨우지 못하고, 사용량에도 잡히지 않습니다.
아직 없는 것
경로별 규칙(
/admin 만 조직 멤버에게 열기 같은)은 아직 없습니다. 지금은 배포 전체가 한 모드입니다. password 모드의 무차별 대입 제한도 아직 없으니, 짧거나 추측하기 쉬운 값은 피해 주세요.