이 페이지에서는 Chrome Enterprise Premium 보안 게이트웨이를 통해 SaaS 애플리케이션을 보호하는 과정을 안내합니다.
Chrome Enterprise Premium 보안 게이트웨이는 포워드 프록시로 작동하여 제로 트러스트 액세스 프레임워크를 적용하고 SaaS 애플리케이션에 액세스하는 사용자에 대한 세부적인 컨텍스트 인식 제어를 제공합니다.
SaaS 애플리케이션에 대한 액세스 보안 작동 방식
다음은 보안 게이트웨이가 SaaS 애플리케이션을 보호하는 방법을 간략하게 설명한 것입니다.
- 클라이언트 측 브라우저 설정은 보안 게이트웨이 프록시를 통해 애플리케이션 트래픽을 라우팅합니다.
- 보안 게이트웨이는 컨텍스트 인식 액세스 정책을 확인하여 클라이언트(사용자 및 기기) 액세스를 승인합니다.
- 허용된 경우 게이트웨이는 해당 게이트웨이와 Google Cloud 리전에 할당된 고유한 소스 IP 주소를 사용하여 애플리케이션으로 트래픽을 전달합니다. 이러한 전용 소스 IP 주소를 사용하여 IP 허용 목록 규칙을 구현할 수 있습니다.
시작하기 전에
보안 게이트웨이를 설정하기 전에 다음 사항을 확인하세요.
- Chrome Enterprise Premium 라이선스
- 관리자 계정으로 Google 관리 콘솔에 액세스
- 할당된 결제 계정이 있고 다음 API가 사용 설정된 Google Cloud 프로젝트: BeyondCorp API
설정을 구성하는 관리자에게 부여되는 다음 Identity and Access Management (IAM) 역할: 프로젝트 수준: Cloud BeyondCorp 관리자 (
beyondcorp.admin
)보호하려는 SaaS 애플리케이션입니다. 애플리케이션은 Google 인프라에서 보안 검사를 강제 적용할 수 있도록
IP allowlisting
를 지원해야 합니다.
제한사항
Chrome Enterprise Premium 보안 게이트웨이에는 다음과 같은 제한사항이 있습니다. 보안 게이트웨이는 IPv6 연결만 허용하는 SaaS 애플리케이션을 지원하지 않습니다.
셸 환경 설정
설정 프로세스를 간소화하고 보안 게이트웨이 API와 상호작용하려면 작업 셸에서 다음 환경 변수를 정의하세요.
일반 매개변수
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=MY_PROJECT_ID APPLICATION_ID=MY_APPLICATION_ID APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME" HOST_NAME=MY_HOST_NAME
다음을 바꿉니다.
- MY_PROJECT_ID: 보안 게이트웨이가 생성된 프로젝트의 ID입니다.
- MY_APPLICATION_ID: 애플리케이션의 ID입니다. 예를 들면
github
입니다. 이름은 최대 63자(영문 기준)까지 입력할 수 있으며 소문자, 숫자, 하이픈을 포함할 수 있습니다. 첫 번째 문자는 문자여야 하고 마지막 문자는 문자 또는 숫자일 수 있습니다. - MY_APPLICATION_DISPLAY_NAME: 표시할 사람이 읽을 수 있는 이름입니다.
MY_HOST_NAME: 애플리케이션의 호스트 이름입니다. 예를 들면
github.com
입니다. 호스트 이름의 최대 길이는 253자(영문 기준)이며 다음 형식 중 하나를 준수해야 합니다.- 유효한 IPv4 주소
- 유효한 IPv6 주소
- 유효한 DNS 이름
- 별표 (*)
- 별표 (*)와 유효한 DNS 이름
보안 게이트웨이 매개변수
SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"
다음을 바꿉니다.
- MY_SECURITY_GATEWAY_ID: 보안 게이트웨이의 ID입니다. ID는 최대 63자(영문 기준)까지 입력할 수 있으며 소문자, 숫자, 하이픈을 포함할 수 있습니다. 첫 번째 문자는 문자여야 하고 마지막 문자는 문자 또는 숫자일 수 있습니다.
- MY_SECURITY_GATEWAY_DISPLAY_NAME: 보안 게이트웨이의 사람이 읽을 수 있는 이름입니다. 이름의 최대 길이는 63자(영문 기준)이며 인쇄 가능한 문자를 포함할 수 있습니다.
보안 게이트웨이 만들기
Chrome Enterprise Premium 보안 게이트웨이는 애플리케이션에 대한 보안 연결을 설정하기 위한 기본 구성요소입니다. 전용 프로젝트와 네트워크를 할당하여 격리와 보안을 제공합니다.
보안 게이트웨이를 만들려면 다음 단계를 완료하세요.
다음 예시를 사용하여
securityGateway.json
라는 파일을 만듭니다.{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} } }
이 예에서
hubs
은 대상 애플리케이션으로의 이그레스 연결을 사용 설정하는 데 필요한 리전 리소스를 나타냅니다. 리전당 하나의 허브를 사용할 수 있으며 각 허브는 두 개의 IP 주소를 제공합니다.다음 리전을 지정할 수 있습니다.
africa-south1
asia-east1
asia-south1
asia-south2
asia-southeast1
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west2
europe-west3
europe-west4
europe-west8
europe-west9
northamerica-northeast1
northamerica-northeast2
northamerica-south1
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-west1
Create
API를 호출하여 보안 게이트웨이 리소스를 만듭니다.curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @securityGateway.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
SaaS 애플리케이션 구성
보안 게이트웨이를 만든 후 보안 액세스를 위해 보안 게이트웨이를 사용하도록 SaaS 애플리케이션을 구성할 수 있습니다.
각 허브에 대해 보안 게이트웨이에서 할당한 IP 주소를 가져옵니다. 리전에 IP 주소 2개가 할당됩니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
다음은 허브가 있는 보안 게이트웨이의 샘플
GET
응답입니다. 이 예시에서는 허브가us-central1
및us-east1
리전에서 생성되며 응답에서 반환된 모든 IP 주소가 SaaS 애플리케이션에서 허용되어야 합니다.{ "securityGateways": [ { "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}", "createTime": "CREATE_TIME", "updateTime": "UPDATE_TIME", "displayName": "My security gateway", "state": "RUNNING", "hubs": { "us-central1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", "IP_ADDRESS_3", "IP_ADDRESS_4", "IP_ADDRESS_5" ] } }, "us-east1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", "IP_ADDRESS_3", "IP_ADDRESS_4", "IP_ADDRESS_5" ] } } } } ] }
SaaS 애플리케이션의 IP 허용 목록에 IP 주소를 추가합니다. 예를 들어 GitHub 애플리케이션의 경우 조직의 허용된 IP 주소 관리 가이드를 따를 수 있습니다.
애플리케이션 리소스 만들기
다음 정보는 보안 게이트웨이 애플리케이션 리소스를 설정하고 구성하는 과정을 안내합니다.
Google Cloud에서 보안 게이트웨이 애플리케이션 리소스 만들기
Google Cloud 애플리케이션 리소스는 보안 게이트웨이 리소스의 하위 리소스입니다. Create
API를 호출하여 애플리케이션 리소스를 만듭니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d "{ \"display_name\": \"${APPLICATION_DISPLAY_NAME}\", \"endpoint_matchers\": [{hostname: \"${HOST_NAME}\"}] }" \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
Google Chrome 프록시 모드 구성
보안 게이트웨이를 통해 애플리케이션 리소스의 트래픽을 라우팅하려면 Google 관리 콘솔의 Chrome 설정에서 PAC 파일을 적용하여 Chrome을 구성합니다.
PAC 파일을 만들거나 업데이트합니다.
첫 번째 애플리케이션을 만드는 경우 다음 예시 PAC 파일을 사용하여
pac_config.js
파일을 만듭니다.두 번째 또는 이후 애플리케이션을 만드는 경우 기존
pac_config.js
파일을 업데이트하고 다음 PAC 파일 예와 같이 새 애플리케이션의 도메인을 사이트 배열에 추가합니다.
function FindProxyForURL(url, host) { const PROXY = "HTTPS ingress.cloudproxy.app:443"; const sites = ["MY_HOST_NAME"]; for (const site of sites) { if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) { return PROXY; } } return 'DIRECT'; }
보안 게이트웨이에 특화되지 않은 기존 PAC 파일을 사용하는 경우 애플리케이션의 도메인을 사이트 배열에 추가하여 PAC 파일을 병합합니다.
파일을 공개적으로 다운로드할 수 있도록 업로드합니다. 예를 들어 Cloud Storage에 파일을 업로드하고 버킷에 대한 Storage Object User 역할을 모든 사용자에게 부여하여 파일을 공개적으로 다운로드할 수 있도록 설정할 수 있습니다.
업로드된 파일이 항상 최신 버전인지 확인하려면
Cache-Control
헤더를no-cache
로 설정하여 캐싱 동작을 조정하면 됩니다. 이 설정은 브라우저와 중간 서버가 파일의 사본을 저장하지 못하도록 하여 Chrome이 항상 최신 버전을 다운로드하도록 합니다.Cache-Control
및 브라우저 캐싱에 미치는 영향에 대한 자세한 내용은 Cache-Control 헤더를 참고하세요.업로드된 파일의 공개 URL을 복사합니다.
프록시 모드 설정 업데이트
- Google 관리 콘솔로 이동합니다.
- 기기 -> Chrome -> 설정을 클릭합니다.
- 조직 단위 또는 그룹을 선택한 다음 프록시 모드를 클릭합니다.
- 프록시 모드 페이지에서 항상 아래에 지정된 프록시 자동 구성 사용을 선택하고 Cloud Storage의 PAC 파일 URL을 입력합니다.
액세스 정책 구성
보안 게이트웨이 수준 또는 애플리케이션 수준에서 액세스 정책을 적용할 수 있습니다.
- 보안 게이트웨이 리소스: 보안 게이트웨이 수준에서 정책을 적용하여 연결된 모든 애플리케이션에 대한 액세스를 제어합니다.
- 개별 애플리케이션: 더 세부적으로 제어하려면 개별 애플리케이션에 액세스 정책을 적용하면 됩니다.
setIamPolicy.json
이라는 JSON 형식 파일을 만들고 다음을 추가합니다.{ "policy": { object (POLICY) } }
POLICY을 IAM 허용 정책으로 바꿉니다. 정책의
etag
은 활성 정책의etag
과 동일해야 하며, 이는getIamPolicy
메서드를 호출하여 가져올 수 있습니다.특정 그룹이 보안 게이트웨이를 사용하도록 허용하려면 그룹에
roles/beyondcorp.securityGatewayUser
역할을 부여하세요.{ "policy": { "version": 3, "bindings": [ { "role": "roles/beyondcorp.securityGatewayUser", "members": [ "group:
" ] } ], "etag": "AA1jlb" } } 정책 바인딩에 있는
serviceAccount
,user
,group
,principal
,principalSet
과 같은 식별자에 관한 자세한 내용은 IAM 주 구성원을 참고하세요.setIamPolicy
API를 호출하여 JSON 파일에 지정된 보안 게이트웨이에 액세스 정책을 적용합니다.curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @setIamPolicy.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}:setIamPolicy"
애플리케이션에 액세스 정책을 적용하려면 다음 명령어를 사용합니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @setIamPolicy.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"
다음 예와 같이 액세스 수준을 조건으로 사용하여 액세스 정책을 설정할 수도 있습니다.
{ "policy": { "version": 3, "bindings": [ { "role": "roles/beyondcorp.securityGatewayUser", "members": [ "group:" ], "condition": { "expression": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels", "title": "Source IP must be in US" } } ], "etag": "A1jlb" } }'
Chrome Enterprise Premium 확장 프로그램 설치
Chrome Enterprise Premium 확장 프로그램은 보안 게이트웨이의 필수적인 부분이며 인증을 지원합니다. 보안 게이트웨이의 모든 사용자에 대해 확장 프로그램을 설치합니다. 확장 프로그램 배포에 관한 자세한 내용은 앱 및 확장 프로그램 보기 및 구성하기를 참고하세요.
- Google 관리 콘솔로 이동합니다.
- Chrome 브라우저 -> 앱 및 확장 프로그램을 클릭합니다.
- 사용자 및 브라우저 탭을 클릭합니다.
- Chrome 확장 프로그램을 추가하려면 + 버튼을 클릭합니다.
ekajlcmdfcigmdbphhifahdfjbkciflj
을 검색한 다음 조직 단위 또는 그룹의 모든 사용자에게 강제 설치합니다.설치된 확장 프로그램을 클릭한 다음 확장 프로그램 정책 필드로 이동하여 다음 JSON 값을 제공합니다.
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" } } } }
최종 사용자 환경
설정이 완료되면 보호된 SaaS 애플리케이션에 액세스하는 최종 사용자에게 애플리케이션에 적용된 액세스 정책에 따라 액세스 권한이 부여되거나 거부됩니다.
Chrome에서 애플리케이션에 액세스
Chrome Enterprise Premium 확장 프로그램이 보안 게이트웨이를 통해 트래픽을 라우팅하는 데 필요합니다. 확장 프로그램은 사용자와 보안 게이트웨이 간의 인증을 처리합니다. 확장 프로그램은 도메인 정책을 통해 자동으로 설치됩니다.
사용자가 구성한 SaaS 애플리케이션에 액세스하면 트래픽이 보안 게이트웨이를 통과하며, 보안 게이트웨이에서는 사용자가 액세스 정책을 충족하는지 확인합니다. 사용자가 액세스 정책 검사를 통과하면 애플리케이션에 대한 액세스 권한이 부여됩니다.
승인 정책에 의해 애플리케이션에 대한 브라우저 액세스가 거부되면 사용자에게 Access denied
메시지가 표시됩니다.