Cloudflare는 Cloudflare Access for Workers 출시를 발표했습니다. 이는 Access 정책을 하나의 Worker 애플리케이션 또는 계정 내 모든 Workers 애플리케이션에 직접 연결할 수 있는 도구 모음입니다. 이 연결에 따라 애플리케이션은 기본적으로 회사 로그인 뒤에 배치되므로, 각 개발자가 접근 제어 설정을 별도로 구성했는지 기억할 필요가 없습니다.
이번 조치는 직원들이 인공지능 도구의 지원을 받아 애플리케이션을 더 빠르게 구축하고 배포할 수 있게 된 상황에서 나왔습니다. Cloudflare는 이러한 속도가 내부 애플리케이션이나 비공개 데이터를 실수로 공개 인터넷에 배포하는 결과로도 이어질 수 있다고 보고 있습니다. 따라서 새 도구는 Workers에서 호스팅되는 애플리케이션 보호를 배포 과정 자체의 일부로 만들도록 설계되었습니다.
접근 방식과 관계없이 애플리케이션 보호
Worker에서 Access를 활성화하면 Cloudflare는 애플리케이션 코드에 어떤 요청이 도달하기 전에 인증을 요구합니다. 사용자가 사용자 지정 도메인, 경로, workers.dev 하위 도메인 또는 미리보기 URL을 통해 애플리케이션에 접근하는지와 관계없이 적용됩니다.
이전에는 Access 설정이 호스트 이름 수준에서 이루어졌기 때문에 사용자가 Worker에 접근할 수 있는 각 도메인마다 별도의 정책을 만들어야 했습니다. 새 사용자 지정 도메인을 추가할 때 먼저 정책을 업데이트하지 않으면 해당 도메인에 인증 없이 접근할 수 있었습니다. 이제 정책이 Worker 자체에 연결되므로 관련 도메인과 URL이 자동으로 보호됩니다.
필요에 따라 보호 범위를 선택할 수 있습니다.
- workers.dev URL 또는 미리보기에 사용되는 사용자 지정 도메인을 포함해 미리보기 URL만 보호합니다.
- 사용자 지정 도메인, 경로, workers.dev 도메인 및 미리보기 URL을 포함해 애플리케이션과 연결된 모든 호스트 이름을 보호합니다.
계정 수준의 기본 정책
다수의 Workers 애플리케이션을 관리하는 팀은 계정 수준에서 Access 정책을 한 번 설정할 수 있습니다. 그러면 모든 기존 및 향후 애플리케이션이 생성되는 순간부터 비공개 상태가 되며, 정책이 미리보기 트래픽, 프로덕션 트래픽 또는 둘 다를 적용할지 지정할 수 있습니다.
프로덕션 환경에서는 애플리케이션을 공개 상태로 유지하면서 개발 중인 버전의 노출을 막고자 하는 애플리케이션에는 미리보기만 보호하는 옵션이 적합할 수 있습니다. 또한 Cloudflare는 공개 상태여야 하는 특정 Worker에 대해 계정 정책을 재정의할 수 있도록 합니다.
포괄적인 정책이 필요하지 않은 경우에는 하나의 Worker에 직접 Access를 적용할 수 있습니다. Worker 인터페이스의 새로운 Access 탭에는 애플리케이션에 적용되는 정책이 표시됩니다. 둘 이상의 정책이 존재할 경우 더 구체적인 정책이 우선하며, 우선순위는 다음과 같습니다. 호스트 이름 정책, Worker 정책, 계정 정책 순입니다.
애플리케이션 코드에서 사용자 신원 확인
Access를 사용하면 각 요청을 애플리케이션으로 보내는 사용자의 신원을 확인할 수 있으며, 여기에는 이메일 주소, 이름 및 그룹이 포함됩니다. Cloudflare는 이 데이터를 콘텐츠 맞춤 설정, 권한 적용 또는 사용자별 활동 기록에 사용할 수 있다고 설명합니다.
신원 정보는 Worker의 ctx 컨텍스트 객체, 구체적으로는 ctx.access를 통해 제공됩니다. 애플리케이션은 ctx.access.getIdentity()를 호출해 인증된 사용자의 신원을 가져올 수 있으므로, JSON Web Token을 직접 검증할 필요가 없습니다. 여기에는 토큰 분석, 서명 확인 및 클레임 추출이 포함됩니다.
Access는 조직의 기존 ID 공급자 연결을 지원하며, 특정 이메일 주소, 이메일 도메인 또는 그룹을 기준으로 접근을 제한할 수도 있습니다. 에이전트의 경우 서비스 토큰을 통해 접근 권한을 부여할 수 있습니다.
로컬 테스트 및 내부 플랫폼
wrangler dev를 사용해 로컬에서 신원 동작을 테스트할 수 있습니다. 인증된 사용자를 시뮬레이션하려면 wrangler.jsonc 파일에 Access 설정을 추가하면 됩니다. 이를 통해 개발자는 설정에서 이메일 주소를 바꾸고 배포 전에 각 사용자에게 적절한 콘텐츠가 표시되는지 확인할 수 있습니다.
Cloudflare는 드래그 앤 드롭 방식으로 정적 사이트를 배포할 수 있는 내부 플랫폼의 오픈 소스 예제도 공개했습니다. 이 플랫폼에서는 배포되는 모든 Worker가 기본적으로 비공개 상태가 됩니다. 이 아키텍처는 Workers for Platforms를 활용하며, 네임스페이스 내 애플리케이션 트래픽이 하나의 디스패처 Worker를 통과합니다. 해당 Worker에 Access 정책을 적용하면 이를 통해 배포된 애플리케이션이 기본적으로 비공개 상태가 됩니다.
가용성 및 기술 아키텍처
이 기능은 이제 대시보드를 통해 모든 사용자에게 제공되며, 시작을 위한 Cloudflare Access for Workers 문서도 제공됩니다. 새 기능은 Rust로 구축되고 Cloudflare의 엣지 인프라에서 실행되는 모듈식 미들웨어 프록시인 FL2를 기반으로 합니다.
Cloudflare는 호스트 이름 대신 Worker 수준에서 Access를 적용하기 위해 Workers 라우팅과 실행을 분리하고 라우팅 로직을 Access보다 앞선 단계로 옮겼습니다. 회사는 모듈이 명확하게 정의되고 단계가 순서대로 배치된 FL2 시스템이 이러한 변경을 관리하는 데 도움이 되었다고 설명합니다. 각 구성 요소가 입력과 출력을 일관된 방식으로 선언하므로, 구조를 재편하는 동안 컴파일러를 사용해 단계 간의 잘못된 상호작용을 발견할 수 있었습니다.