Cloudflare가 Workers에 Access를 직접 연결해 내부 애플리케이션을 도메인 단위가 아닌 Worker 단위로 보호하는 기능을 출시했다. 개발자가 각자 Access를 설정하지 않아도 계정 수준에서 모든 Workers를 기본 비공개로 만들 수 있고, 코드에서 인증된 사용자 정보를 JWT 파싱 없이 바로 꺼낼 수 있다.
핵심 포인트- Worker에 Access 정책을 직접 연결하면 커스텀 도메인·라우트·workers.dev·프리뷰 URL 등 어떤 경로로 들어오든 동일하게 인증이 강제된다. 기존에는 도메인별로 각각 설정해야 했다.
- 계정 수준 정책을 한 번 설정하면 현재·미래의 모든 Workers가 생성 즉시 비공개가 된다. 특정 Worker를 공개로 열려면 계정 정책을 오버라이드한다.
- `ctx.access.getIdentity()`로 인증된 사용자의 이메일·이름·그룹을 코드에서 바로 가져올 수 있다. JWT 서명 검증과 클레임 파싱이 불필요하다.
- wrangler.jsonc의 `access.dev.identity`를 설정하면 로컬 개발 중에도 같은 API로 사용자 전환 테스트를 할 수 있다.
- Workers for Platforms 디스패처 Worker에 Access를 설정하면 플랫폼 위에 배포된 모든 Workers가 자동으로 비공개가 된다.
상세 정리- 배경: AI 도구로 어느 팀원이든 Workers를 빠르게 만들고 공개 인터넷에 배포할 수 있게 됐다. 개인이 Access 설정을 빠뜨리면 내부 정보가 그대로 노출된다.
- 기존 방식의 한계: Access 정책이 호스트명 단위라 Worker에 새 도메인을 추가할 때마다 Access 정책도 업데이트해야 했다. 한 곳이라도 빠지면 인증 없이 접근 가능했다.
- 새 방식 — Worker 단위 연결: 정책이 Worker에 붙어 있어 이 Worker와 연결된 모든 도메인이 자동으로 보호된다. 프리뷰만 보호하거나 전체 호스트를 보호하는 범위 선택이 가능하다.
- 우선순위 계층: 호스트명 정책 > Worker 정책 > 계정 정책 순으로 가장 구체적인 정책이 우선 적용된다.
- ctx.access API: Access가 활성화된 Worker의 모든 인증 요청에 `ctx.access`가 자동 첨부된다. 세 줄 코드로 사용자 이메일을 꺼낼 수 있다.
- 로컬 테스트: wrangler.jsonc의 `access.dev.identity`에 이메일을 지정하면 배포 없이 서로 다른 사용자 시나리오를 검증한다. 프로덕션과 동일한 객체 구조를 반환한다.
- Workers for Platforms 연동: 디스패처 Worker에 Access 정책을 한 번 붙이면 그 아래 모든 테넌트 Workers가 자동 비공개다. 내부 플랫폼 오픈소스 예제도 공개됐다.
- 기술 기반 — FL2: Rust 기반 모듈형 프록시 FL2 덕분에 Workers 라우팅을 실행과 분리해 Access가 라우팅 후·실행 전에 끼어들 수 있게 됐다. FL1(NGINX+Lua)에서는 공유 상태 의존성 때문에 이 변경이 위험했을 것이다.
왜 읽나조직 내부에서 Workers로 다수의 내부 도구를 운영하거나 내부 플랫폼을 구축하는 엔지니어가 인증 설정을 중앙화하고 '안전을 기본값으로' 만드는 패턴을 바로 적용할 수 있다.