동적 코드가 통신할 범위를 브라우저에 전달
구글은 9월 23일 Connection Allowlists를 소개하며 Chrome 152부터 사용할 수 있다고 밝혔다. 제3자 스크립트나 생성형 AI가 만든 코드를 실행하는 환경에서 허용된 목적지만 접속하도록 브라우저에 정책을 전달하는 기능이다. 서버는 Connection-Allowlist 응답 헤더에 URLPattern 형식의 주소 패턴을 지정하며, 브라우저는 해당 문맥의 나가는 연결을 비교해 허용되지 않은 요청을 막는다. 이는 사용자 컴퓨터 전체나 서버 인프라에 방화벽을 설정하는 기능과 다르다. 구글의 Chrome 제공 안내는 다른 브라우저에 같은 기능이 출시됐다는 증거도 아니므로 지원 범위를 따로 확인해야 한다.
문서별 정책과 보고 전용 헤더
정책은 윈도나 워커 문맥별로 적용된다. response-origin 토큰은 응답이 제공된 오리진을 목록에 포함하는 데 쓰이며, 필요한 API 주소 패턴을 함께 지정할 수 있다. Connection-Allowlist-Report-Only는 같은 방식으로 정책을 읽되 연결을 차단하지 않고 위반 보고를 보낸다. 구글은 report-to로 선택한 이름을 실제 보고 URL에 연결하는 Reporting-Endpoints 설정도 요구한다. 따라서 보고 전용 헤더를 설치한 것과 차단 정책을 시행한 것은 구분해야 한다. 보고 경로를 정했더라도 정상 흐름의 어떤 요청이 허용 목록 밖으로 나가는지 실제로 확인해야 적용 범위를 조정할 수 있다.
리디렉션 허용이 여는 별도 예외
기본 정책은 리디렉션과 WebRTC 연결을 막으며, redirects=allow와 webrtc=allow로 각각 허용할 수 있다. WICG 초안의 리디렉션 설명에는 특히 중요한 조건이 있다. redirects=allow에서는 최초 요청에만 목록을 적용하고, 그 뒤 리디렉션은 목적지가 목록 밖이어도 허용한다. 따라서 주소가 바뀐 모든 단계가 같은 목록으로 검사된다고 기대해서는 안 된다. WebRTC 허용 역시 통신을 여는 별도 선택이다. 로그인이나 파일 전달 과정의 정상 리디렉션을 살리려고 예외를 추가한다면, 신뢰한 서버가 이후에 어디로 보내는지까지 함께 판단해야 하는 구조다.
CSP와 목적지 경계는 함께 설계할 대상
ARCH.B는 이 기능을 기존 보안 정책을 보완하는 연결 경계로 이해하는 것이 정확하다고 본다. CSP의 connect-src도 fetch, XHR, EventSource, Beacon과 WebSocket 등의 목적지를 제한하므로, CSP가 네트워크 통신을 전혀 제어하지 못한다고 설명할 수는 없다. 새 목록은 통신 종류마다 정책을 나누는 작업과 별도로 넓은 목적지 경계를 두려는 접근이다. WICG 초안은 postMessage 같은 명시적 메시지 채널이 범위에 포함되지 않는다고 설명한다. 허용된 서버나 다른 실행 문맥에 전달된 데이터가 이후 어디로 움직일지까지 헤더 하나가 보장한다고 볼 수 없는 이유다. 실행 가능한 코드와 외부 연결을 각각 제한하는 정책은 함께 유지할 필요가 있다.
격리한 코드의 정상 동작부터 조사하기
구글은 신뢰하지 않는 코드를 별도 iframe에 넣고 그 문서에 헤더를 적용하되, 같은 오리진의 스크립팅으로 제약을 우회하지 않도록 교차 오리진 또는 샌드박스 iframe을 사용하라고 권한다. 운영팀에는 필요한 연결을 먼저 좁혀 보는 접근이 도움이 된다. 보고 전용 단계에서 정상 요청을 수집하고, API 호출·리디렉션·실시간 연결의 목적을 나눠 목록을 검토할 수 있다. 개발 중 차단된 요청과 헤더 해석 문제는 DevTools의 Network와 Issues에서 조사할 수 있다고 구글은 안내한다. 워커도 자체 정책 문맥을 가지므로 문서에 제한을 걸었다는 이유만으로 모든 워커 통신까지 같다고 가정해서는 안 된다. WICG 문서는 워커가 대신 바깥 요청을 수행할 가능성과 별도 정책의 필요성을 설명한다. 기능의 효과는 헤더 유무보다 실제 코드가 접근할 문맥과 예외가 얼마나 넓게 열려 있는지에 달려 있다.
출처
Chrome for Developers의 원출처와 본문에 표시한 참고자료를 바탕으로 한국어로 재구성했습니다. ‘ARCH.B 분석’은 자료를 읽고 덧붙인 편집 해석입니다.
Connection allowlists: Secure your web application's network access (새 창)