이 페이지에서는 Chrome Enterprise Premium 보안 게이트웨이를 통해 SaaS 애플리케이션을 보호하는 과정을 안내합니다.
Chrome Enterprise Premium 보안 게이트웨이는 포워드 프록시로 작동하여 제로 트러스트 액세스 프레임워크를 적용하고 SaaS 애플리케이션에 액세스하는 사용자에 대한 세분화된 컨텍스트 인식 제어를 제공합니다.
SaaS 애플리케이션에 대한 액세스 보안 작동 방식
다음은 보안 게이트웨이가 SaaS 애플리케이션을 보호하는 방식을 간략하게 설명한 것입니다.
- 클라이언트 측 브라우저 설정은 보안 게이트웨이 프록시를 통해 애플리케이션 트래픽을 라우팅합니다.
- 보안 게이트웨이는 컨텍스트 인식 액세스 정책을 확인하여 클라이언트 (사용자 및 기기) 액세스를 승인합니다.
- 클라이언트 액세스가 허용되면 게이트웨이는 해당 게이트웨이와 Google Cloud리전에 할당된 고유한 소스 IP 주소를 사용하여 트래픽을 애플리케이션으로 전달합니다. 할당된 이러한 IP 주소는 생성한 게이트웨이 전용으로 예약되며 다른 사용자나 게이트웨이에서 사용할 수 없습니다. 액세스를 제어하려면 이러한 전용 소스 IP 주소를 SaaS 애플리케이션의 허용 목록에 추가하면 됩니다.
필요한 역할
관리자에게 다음 역할을 부여해 달라고 요청하세요.
Cloud BeyondCorp 관리자 (
roles/beyondcorp.admin)가 프로젝트에서 Chrome Enterprise Premium을 설정할 수 있습니다.Access Context Manager 관리자 (
roles/accesscontextmanager.policyAdmin): 새 액세스 수준을 읽고 추가Google Cloud 콘솔을 사용하려면 서비스 사용량 뷰어 (
roles/serviceusage.serviceUsageViewer) 권한이 있어야 합니다.
Identity and Access Management (IAM) 역할에 대해 자세히 알아보세요.
시작하기 전에
보안 게이트웨이를 설정하기 전에 다음 사항을 확인하세요.
- Chrome Enterprise Premium 라이선스
- 관리자 계정으로 Google 관리 콘솔에 액세스할 수 있습니다.
- 사용자에게 사용 설정된Google Cloud 서비스
할당된 결제 계정이 있고 다음 API가 사용 설정된 Google Cloud 프로젝트: BeyondCorp API
보호하려는 SaaS 애플리케이션입니다. 애플리케이션은 보안 게이트웨이에서 보안 검사를 시행할 수 있도록
IP allowlisting를 지원해야 합니다.
제한사항
Chrome Enterprise Premium 보안 게이트웨이에는 다음과 같은 제한사항이 있습니다.
- IPv6 연결: Chrome Enterprise Premium 보안 게이트웨이는 IPv6 연결을 사용하는 SaaS 애플리케이션을 지원하지 않습니다.
- ID 공급업체가 SaaS 애플리케이션인 경우: 보안 게이트웨이를 통한 최종 사용자의 인증이 동일한 IdP에 종속되는 경우 ID 공급업체를 보안 게이트웨이로 보호되는 SaaS 애플리케이션으로 구성해서는 안 됩니다.
셸 환경 설정
설정 프로세스를 간소화하고 보안 게이트웨이 API와 상호작용하려면 작업 셸에서 다음 환경 변수를 정의하세요.
일반 매개변수
PROJECT_ID=
PROJECT_IDAPPLICATION_ID=APPLICATION_IDAPPLICATION_DISPLAY_NAME="APPLICATION_DISPLAY_NAME" HOST_NAME=HOST_NAME다음을 바꿉니다.
PROJECT_ID: 보안 게이트웨이가 생성된 프로젝트의 ID입니다.APPLICATION_ID: 애플리케이션의 ID입니다(예:github). 이름은 최대 63자(영문 기준)까지 입력할 수 있으며 소문자, 숫자, 하이픈을 포함할 수 있습니다. 첫 번째 문자는 문자여야 하고 마지막 문자는 문자 또는 숫자일 수 있습니다.APPLICATION_DISPLAY_NAME: 표시할 사람이 읽을 수 있는 이름입니다.HOST_NAME: 애플리케이션의 호스트 이름입니다. 예를 들면github.com입니다. 호스트 이름은 최대 253자(영문 기준)까지 가능하며 다음 형식 중 하나를 준수해야 합니다.- 유효한 IPv4 주소
- 유효한 IPv6 주소
- 유효한 DNS 이름
- 별표 (*)
- 별표 (*)와 유효한 DNS 이름
보안 게이트웨이 매개변수
SECURITY_GATEWAY_ID=
SECURITY_GATEWAY_IDSECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"다음을 바꿉니다.
SECURITY_GATEWAY_ID: 보안 게이트웨이의 ID입니다. ID는 최대 63자이며 소문자, 숫자, 하이픈을 포함할 수 있습니다. 첫 번째 문자는 문자여야 하고 마지막 문자는 문자 또는 숫자일 수 있습니다.SECURITY_GATEWAY_DISPLAY_NAME: 보안 게이트웨이의 사람이 읽을 수 있는 이름입니다. 이름의 최대 길이는 63자(영문 기준)이며 인쇄 가능한 문자만 포함할 수 있습니다.
보안 게이트웨이 만들기
Chrome Enterprise Premium 보안 게이트웨이는 애플리케이션에 대한 보안 연결을 설정하기 위한 기본 구성요소입니다. 전용 프로젝트와 네트워크를 할당하여 격리와 보안을 제공합니다.
콘솔
보안 게이트웨이 리소스를 만들려면 다음을 수행합니다.
- Google Cloud 콘솔에서 보안 게이트웨이 페이지로 이동합니다.
보안 게이트웨이로 이동 - 보안 게이트웨이를 만들 프로젝트를 선택합니다.
- 보안 게이트웨이를 만들려면 새 게이트웨이 만들기를 클릭하고 게이트웨이 생성 프로세스가 완료될 때까지 기다립니다.
- Google Cloud 콘솔의 알림 섹션에서 진행 상황을 추적할 수 있습니다.
- SaaS 애플리케이션 리소스를 만들기 전에 SaaS 이그레스 허브를 만드는 것이 좋습니다.
hubs플래그는 대상 애플리케이션에 대한 이그레스 연결을 사용 설정하는 데 필요한 리전 리소스를 나타냅니다. 리전별로 하나의 허브를 구성할 수 있으며 각 허브는 두 개의 IP 주소를 제공합니다. 보안 게이트웨이에는 최대 20개의 허브가 있을 수 있습니다. 다음 리전을 지정할 수 있습니다.africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
- Google Cloud 콘솔에서 SaaS Egress Hubs 페이지로 이동합니다.
SaaS 이그레스 허브로 이동 - SaaS 이그레스 허브를 만들 프로젝트를 선택합니다.
- SaaS 이그레스 허브를 추가하려면 SaaS 이그레스 허브 추가를 클릭합니다.
- 드롭다운 목록에서 이그레스 허브를 추가할 리전을 선택합니다. 이그레스 허브를 추가하려면 SaaS 이그레스 허브 추가를 클릭하여 허브를 두 개 이상 추가합니다. 완료되면 저장을 클릭하여 이그레스 허브를 만듭니다.
gcloud
보안 게이트웨이 리소스를 만들려면 다음 명령어를 실행합니다. --hubs 플래그의 경우 다음 목록에서 하나 이상의 리전을 지정합니다.
gcloud beyondcorp security-gateways create SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --display-name="SECURITY_GATEWAY_DISPLAY_NAME" \ --hubs=us-central1 \ --service-discovery={}
hubs 플래그는 대상 애플리케이션에 대한 이그레스 연결을 사용 설정하는 데 필요한 리전 리소스를 설정합니다. 리전별로 허브를 하나씩 사용할 수 있으며 각 허브는 두 개의 IP 주소를 제공합니다. 보안 게이트웨이에는 최대 20개의 허브가 있을 수 있습니다. 다음 리전을 지정할 수 있습니다.
africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
REST
보안 게이트웨이 리소스를 만들려면 요청 본문에 게이트웨이 세부정보를 사용하여 Create API 메서드를 호출합니다. hubs 플래그의 경우 다음 목록에서 하나 이상의 리전을 지정합니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} }, "service_discovery": {} }' \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways?security_gateway_id=SECURITY_GATEWAY_ID"
hubs 플래그는 대상 애플리케이션에 대한 이그레스 연결을 사용 설정하는 데 필요한 리전 리소스를 나타냅니다. 리전별로 허브를 하나씩 사용할 수 있으며 각 허브는 두 개의 IP 주소를 제공합니다. 보안 게이트웨이에는 최대 20개의 허브가 있을 수 있습니다. 다음 리전을 지정할 수 있습니다.
africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
SaaS 애플리케이션 구성
보안 게이트웨이를 만든 후 보안 액세스를 위해 보안 게이트웨이를 사용하도록 SaaS 애플리케이션을 구성할 수 있습니다.
콘솔
SaaS 이그레스 허브를 구성하려면 다음 단계를 따르세요.
- Google Cloud 콘솔에서 SaaS Egress Hubs 페이지로 이동합니다.
SaaS 이그레스 허브로 이동 - SaaS 이그레스 허브 페이지에서 허브가 나열된 표를 찾습니다. 사용하려는 각 리전의 경우 고정 전용 이그레스 IP 열에 나열된 모든 IP 주소를 복사합니다. 각 리전에서는 두 개의 IP 주소를 제공합니다.
- SaaS 애플리케이션의 IP 허용 목록에 IP 주소를 추가합니다. 예를 들어 GitHub 애플리케이션의 경우 조직의 허용된 IP 주소 관리 가이드를 따를 수 있습니다.
gcloud
SaaS 이그레스 허브를 구성하려면 다음 단계를 따르세요.
- 보안 게이트웨이에서 각 허브에 할당한 IP 주소를 가져옵니다. 리전에 IP 주소 2개가 할당됩니다.
- SaaS 애플리케이션의 IP 허용 목록에 IP 주소를 추가합니다. 예를 들어 GitHub 애플리케이션의 경우 조직의 허용된 IP 주소 관리 가이드를 따를 수 있습니다.
gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global
다음은 hubs이 있는 보안 게이트웨이의 샘플 GET 응답입니다. 이 예시에서는 hubs가 us-central1 및 us-east1 리전에서 생성되며, 응답에 반환된 모든 IP 주소가 SaaS 애플리케이션에서 허용되어야 합니다.
createTime: 'CREATE_TIME' displayName: My secure gateway hubs: us-central1: internetGateway: assignedIps: - IP_ADDRESS_1 - IP_ADDRESS_2 us-east1: internetGateway: assignedIps: - IP_ADDRESS_1 - IP_ADDRESS_2 name: projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID state: RUNNING updateTime: 'UPDATE_TIME'
REST
SaaS 이그레스 허브를 구성하려면 다음 단계를 따르세요.
- 보안 게이트웨이에서 각 허브에 할당한 IP 주소를 가져옵니다. 리전에 IP 주소 2개가 할당됩니다.
- SaaS 애플리케이션의 IP 허용 목록에 IP 주소를 추가합니다. 예를 들어 GitHub 애플리케이션의 경우 조직의 허용된 IP 주소 관리 가이드를 따를 수 있습니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
다음은 hubs이 있는 보안 게이트웨이의 샘플 GET 응답입니다. 이 예시에서는 hubs가 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 secure gateway", "state": "RUNNING", "hubs": { "us-central1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", ] } }, "us-east1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", ] } } } } ] }
애플리케이션 리소스 만들기
다음 정보는 보안 게이트웨이 애플리케이션 리소스를 설정하고 구성하는 과정을 안내합니다.
Google Cloud에서 보안 게이트웨이 애플리케이션 리소스 만들기
Google Cloud 애플리케이션 리소스는 보안 게이트웨이 리소스의 하위 리소스입니다. Google Cloud 콘솔을 사용하거나 Create API를 호출하여 애플리케이션 리소스를 만듭니다.
콘솔
SaaS 애플리케이션을 만들려면 다음 단계를 따르세요.
- Google Cloud 콘솔에서 보안 게이트웨이 페이지로 이동합니다.
보안 게이트웨이로 이동 - 애플리케이션을 만들려면 애플리케이션 추가를 클릭합니다.
- 애플리케이션 유형으로 공개 애플리케이션을 선택합니다.
- 이 보안 게이트웨이에 SaaS 이그레스 허브가 아직 구성되지 않은 경우 이를 만들라는 메시지가 표시됩니다. 공개 애플리케이션에는 SaaS 이그레스 허브가 하나 이상 필요합니다. SaaS 이그레스 허브를 구성하려면 SaaS 이그레스 허브로 이동을 클릭하고 리전을 하나 이상 추가합니다.
- 출구 허브가 하나 이상 있으면 다음을 클릭합니다.
- 애플리케이션 세부정보를 입력합니다.
- 애플리케이션 이름: 이름을 입력합니다(예:
GitHub). - 도메인 매처: 보안 게이트웨이를 통해 라우팅할 도메인 패턴의 쉼표로 구분된 목록을 입력합니다.
domain:port형식으로 포트를 포함합니다. 와일드 카드 (*)를 사용할 수 있습니다. 예를 들면github.com:443입니다.
- 애플리케이션 이름: 이름을 입력합니다(예:
- SaaS 애플리케이션을 구성하려면 계속을 클릭합니다.
- 보안 게이트웨이의 트래픽을 허용하도록 SaaS 애플리케이션을 구성합니다.
- 사용 중인 리전에 나열된 모든 IP 주소를 주의 깊게 기록하거나 복사합니다. 이 IP 주소는 보안 게이트웨이에서 고유합니다.
- SaaS 애플리케이션의 관리 콘솔에 로그인합니다.
- IP 허용 목록이 관리되는 네트워크 설정 또는 보안 설정으로 이동합니다.
- 획득한 모든 IP 주소를 애플리케이션의 IP 허용 목록에 추가합니다.
- 애플리케이션을 추가하려면 계속을 클릭합니다.
- 선택사항: 액세스 정책 정의: Access Context Manager 액세스 정책을 선택합니다. 이 가이드에서는 이 단계를 건너뛰어도 됩니다.
- 설정을 저장하고 애플리케이션을 만들려면 만들기를 클릭합니다.
gcloud
gcloud를 사용하여 SaaS 애플리케이션을 만들려면 다음 명령어를 실행합니다.
gcloud beyondcorp security-gateways applications create APPLICATION_ID \ --project=PROJECT_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --location=global \ --display-name="APPLICATION_DISPLAY_NAME" \ --endpoint-matchers="hostname=HOST_NAME,ports=443"
REST
REST API를 사용하여 SaaS 애플리케이션을 만들려면 다음 명령어를 실행합니다.
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\", ports: 443}] }" \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications?application_id=APPLICATION_ID"
액세스 정책 구성
액세스 정책을 적용하여 애플리케이션 수준에서 액세스를 제어할 수 있습니다. 액세스 정책이 구성되지 않은 경우 애플리케이션에 대한 액세스가 기본적으로 거부됩니다.
콘솔
여러 애플리케이션의 정책 만들기
액세스 정책을 구성하려면 다음 단계를 따르세요.
- 보안 게이트웨이에 연결된 여러 애플리케이션에 적용되는 정책을 만들려면 정책 페이지로 이동하세요.
정책으로 이동 - 애플리케이션에 액세스 정책을 추가하려면 정책 만들기를 클릭합니다.
- 드롭다운 목록에서 정책을 적용할 애플리케이션을 선택합니다.
- 정책에 주 구성원을 추가합니다.
주 구성원은 사용자, 그룹, 도메인 또는 서비스 계정일 수 있습니다. 이러한 주 구성원에게는 할당한 액세스 수준에 따라 액세스 권한이 부여되거나 거부됩니다.
- 주 구성원을 추가하려면 주 구성원 추가를 클릭합니다.
- 주 구성원 필드에 사용자, 그룹, 서비스 계정의 이메일 주소 또는 도메인 이름을 입력합니다.
- 액세스 수준 드롭다운에서 사전 정의된 컨텍스트 인식 액세스 수준을 하나 이상 선택합니다. 주 구성원이 선택한 액세스 수준의 조건을 충족하는 경우에만 액세스가 허용됩니다.
주 구성원을 더 추가하려면 주 구성원 추가를 다시 클릭하고 하위 단계를 반복합니다.
Access Context Manager에서 액세스 수준을 만들고 관리할 수 있습니다.
- 애플리케이션에 정책을 적용하려면 정책 만들기를 클릭합니다.
애플리케이션 수준 액세스 정책 수정
- 단일 애플리케이션의 정책을 수정하려면 애플리케이션 페이지로 이동하세요.
애플리케이션으로 이동 - 수정하려는 애플리케이션을 찾으려면 다음 단계를 따르세요.
- 애플리케이션 목록에서 수정할 애플리케이션을 검색합니다.
- 애플리케이션 세부정보를 보려면 추가 작업 메뉴 ()를 클릭하고 세부정보 보기를 선택합니다.
- 애플리케이션을 수정하려면 수정을 클릭합니다.
- 정책에 주 구성원을 추가합니다.
주 구성원은 사용자, 그룹, 도메인 또는 서비스 계정일 수 있습니다. 이러한 주 구성원에게는 할당한 액세스 수준에 따라 액세스 권한이 부여되거나 거부됩니다.
- 주 구성원을 추가하려면 주 구성원 추가를 클릭합니다.
- 주 구성원 필드에 사용자, 그룹, 서비스 계정의 이메일 주소 또는 도메인 이름을 입력합니다.
- 액세스 수준 드롭다운 목록에서 사전 정의된 컨텍스트 인식 액세스 수준을 하나 이상 선택합니다. 주 구성원이 선택한 액세스 수준의 조건을 충족하는 경우에만 액세스가 허용됩니다.
주 구성원을 더 추가하려면 주 구성원 추가를 다시 클릭하고 하위 단계를 반복합니다.
Access Context Manager에서 액세스 수준을 만들고 관리할 수 있습니다.
- 애플리케이션에 정책을 적용하려면 저장을 클릭합니다.
gcloud
서비스 검색 게이트웨이 수준 바인딩 추가
사용자에게 애플리케이션 액세스 권한을 부여하기 전에 사용자에게 보안 게이트웨이 수준의 서비스 검색 권한이 있는지 확인하세요.
gcloud beyondcorp security-gateways add-iam-policy-binding SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.serviceDiscoveryUser" \ --member=MEMBER
다음을 바꿉니다.
SECURITY_GATEWAY_ID: 보안 게이트웨이의 IDPROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDMEMBER: 서비스 검색 역할을 할당할 사용자, 그룹 또는 서비스 계정입니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
애플리케이션 수준 바인딩 추가
gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.sgApplicationUser" \ --member=MEMBER
다음을 바꿉니다.
APPLICATION_ID: 애플리케이션 리소스의 IDSECURITY_GATEWAY_ID: 보안 게이트웨이의 IDPROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDMEMBER: 서비스 검색 역할을 할당할 사용자, 그룹 또는 서비스 계정입니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
조건부 바인딩 추가
조건이 있는 바인딩을 추가할 수도 있습니다. 조건은 특정 위치에서 시작된 사용자의 IP 주소와 같은 요구사항을 지정합니다. (액세스 수준은 조직 수준 액세스 정책 또는 범위가 지정된 액세스 정책에서 정의할 수 있습니다.)
다음 예시 명령어는 소스 IP 주소가 지정된 액세스 수준 내에 있는 경우에만 액세스 권한을 부여합니다.
gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.sgApplicationUser" \ --member=MEMBER \ --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
서비스 검색 게이트웨이 수준 바인딩 삭제
보안 게이트웨이 수준에서 사용자의 서비스 검색 권한을 취소합니다.
gcloud beyondcorp security-gateways remove-iam-policy-binding SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.serviceDiscoveryUser" \ --member=MEMBER
다음을 바꿉니다.
SECURITY_GATEWAY_ID: 보안 게이트웨이의 IDPROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDMEMBER: 서비스 검색 역할을 삭제하려는 사용자, 그룹 또는 서비스 계정입니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
애플리케이션 수준 바인딩 삭제
gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.sgApplicationUser" \ --member=MEMBER
다음을 바꿉니다.
APPLICATION_ID: 애플리케이션 리소스의 IDSECURITY_GATEWAY_ID: 보안 게이트웨이의 IDPROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDMEMBER: 서비스 검색 역할을 삭제하려는 사용자, 그룹 또는 서비스 계정입니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
조건부 바인딩 삭제
조건이 있는 바인딩을 삭제할 수도 있습니다. 조건은 특정 위치에서 시작된 사용자의 IP 주소와 같은 요구사항을 지정합니다. (액세스 수준은 조직 수준 액세스 정책 또는 범위가 지정된 액세스 정책에서 정의할 수 있습니다.)
다음 예시 명령어는 지정된 액세스 수준이 있는 조건부 바인딩을 삭제합니다.
gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --role="roles/beyondcorp.sgApplicationUser" \ --member=MEMBER \ --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
REST
액세스 정책을 안전하게 업데이트
setIamPolicy 명령어는 기존 정책 전체를 제공된 정책으로 바꿉니다. 기존 권한이 실수로 삭제되지 않도록 하려면 다음 '읽기-수정-쓰기' 패턴을 사용하는 것이 좋습니다. 이 패턴은 기존 권한이 실수로 삭제되는 것을 방지하는 데 도움이 됩니다.
- 읽기: 현재 액세스 정책을 파일에 저장합니다.
- 수정: 로컬에서 정책 파일을 수정하여 권한을 추가하거나 변경합니다.
- 쓰기: 업데이트된 정책 파일을 적용합니다.
서비스 검색 게이트웨이 수준 정책 설정
서비스 검색 권한을 부여하려면 개별 애플리케이션이 아닌 보안 게이트웨이에 액세스 정책을 설정해야 합니다. 이는 동일한 '읽기-수정-쓰기' 패턴을 따릅니다.
현재 정책을 가져와 gateway_policy.json이라는 파일에 저장합니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:getIamPolicy" > gateway_policy.json
그런 다음 텍스트 편집기에서 gateway_policy.json 파일을 열고 애플리케이션 수준 수정과 마찬가지로 roles/beyondcorp.serviceDiscoveryUser 역할의 members 목록에 필요한 주 구성원을 추가합니다.
gateway_policy.json 파일은 다음 예와 유사합니다.
{ "version": 3, "bindings": [ { "role": "roles/beyondcorp.serviceDiscoveryUser", "members": [ "group:existing-group@example.com" ] } ], "etag": "BwXN8_d-bOM=" }
정책 바인딩에 serviceAccount, user, group, principal, principalSet과 같은 다른 유형의 구성원을 추가할 수도 있습니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
업데이트된 정책을 적용합니다.
jq '{policy: .}' gateway_policy.json | curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @- \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:setIamPolicy"
애플리케이션 수준 액세스 정책 설정
현재 정책 가져오기
현재 정책을 가져옵니다. etag 필드는 여러 관리자가 동시에 변경하는 경우 업데이트가 충돌하는 것을 방지합니다.
다음 명령어는 정책을 검색하고 policy.json이라는 파일에 저장합니다.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
다음을 바꿉니다.
PROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDSECURITY_GATEWAY_ID: 보안 게이트웨이의 IDAPPLICATION_ID: 애플리케이션 리소스의 ID
이 명령어는 현재 정책이 포함된 policy.json 파일을 만듭니다.
정책 파일 수정
보안 게이트웨이를 사용할 수 있는 액세스 권한을 그룹에 부여하려면 다음 단계를 따르세요.
- 텍스트 편집기에서
policy.json파일을 엽니다. roles/beyondcorp.securityGatewayUser역할의members목록에 그룹을 추가합니다.
policy.json 파일은 다음 예와 유사합니다.
{ "version": 3, "bindings": [ { "role": "roles/beyondcorp.sgApplicationUser", "members": [ "group:existing-group@example.com" ] } ], "etag": "BwXN8_d-bOM=" }
그룹을 추가하려면 members 배열에 새 항목을 추가합니다. 앞의 항목 뒤에 쉼표를 포함합니다.
다음 예에서는 new-group@example.com를 추가합니다.
{ "version": 3, "bindings": [ { "role": "roles/beyondcorp.sgApplicationUser", "members": [ "group:existing-group@example.com", "group:new-group@example.com" ] } ], "etag": "BwXN8_d-bOM=" }
정책 바인딩에 serviceAccount, user, group, principal, principalSet과 같은 다른 유형의 구성원을 추가할 수도 있습니다. 자세한 내용은 IAM 주 구성원을 참고하세요.
업데이트된 정책 적용
policy.json 파일을 수정하고 저장한 후 setIamPolicy 명령어를 사용하여 리소스에 적용합니다. 이 명령어는 파일의 etag를 사용하여 올바른 버전을 업데이트하도록 합니다.
jq '{policy: .}' policy.json | curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @- \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
다음을 바꿉니다.
PROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDSECURITY_GATEWAY_ID: 보안 게이트웨이의 IDAPPLICATION_ID: 애플리케이션 리소스의 ID
조건부 액세스 정책 추가
조건이 있는 액세스 정책을 설정할 수도 있습니다. 조건은 특정 위치에서 시작된 사용자의 IP 주소와 같은 요구사항을 지정합니다. (액세스 수준은 조직 수준 액세스 정책 또는 범위가 지정된 액세스 정책에서 정의할 수 있습니다.)
다음 예시 정책은 소스 IP 주소가 지정된 액세스 수준 내에 있는 경우에만 액세스 권한을 부여합니다.
{ "version": 3, "bindings": [ { "role": "roles/beyondcorp.sgApplicationUser", "members": [ "group:group@example.com" ], "condition": { "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')", "title": "Source IP must be in US" } } ], "etag": "BwXN8_d-bOM=" }
이 정책을 적용하려면 앞에서 설명한 단계를 따르세요.
컨텍스트 인식 액세스로 보안 강화
보안을 더욱 강화하고 관리 Chrome 인스턴스만 보안 게이트웨이를 통해 웹 애플리케이션에 액세스할 수 있도록 하려면 컨텍스트 인식 액세스 (CAA) 규칙을 추가하는 것이 좋습니다. 이 규칙은 사용자의 Chrome 프로필이 관리 대상인지 확인하여 관리되지 않거나 악성 브라우저의 잠재적인 오용을 방지합니다.
참고: 이 기능을 사용하려면 엔드포인트 확인 확장 프로그램을 설치하고 설정해야 합니다.Access Context Manager 맞춤 액세스 수준에 조건을 추가하여 이를 구현할 수 있습니다. 다음은 조정할 수 있는 조건의 예입니다.
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
이 상태를 구성, 확인, 관리하는 방법에 관한 자세한 내용은 Chrome 브라우저 속성을 참고하세요.
Chrome Enterprise Premium 확장 프로그램 설치
Chrome Enterprise Premium 확장 프로그램은 보안 게이트웨이의 필수적인 부분이며 인증에 도움이 됩니다. 보안 게이트웨이의 모든 사용자에 대해 확장 프로그램을 설치합니다. 확장 프로그램 배포에 관한 자세한 내용은 앱 및 확장 프로그램 보기 및 구성하기를 참고하세요. Chrome Enterprise Premium 확장 프로그램을 설치하려면 다음 단계를 따르세요.
- Google 관리 콘솔로 이동합니다.
- Chrome 브라우저 > 앱 및 확장 프로그램을 클릭합니다.
- 사용자 및 브라우저 탭을 클릭합니다.
- Chrome 확장 프로그램을 추가하려면 + 버튼을 클릭한 다음 ID로 Chrome 앱 또는 확장 프로그램 추가를 선택합니다.
다음 ID를 사용하여 보안 엔터프라이즈 브라우저 확장 프로그램을 검색한 다음 조직 단위 또는 그룹의 모든 사용자에 대해 설치 정책을 강제 설치로 설정합니다.
ekajlcmdfcigmdbphhifahdfjbkciflj
설치된 확장 프로그램을 클릭하고 확장 프로그램 정책 필드에 다음 JSON 값을 입력합니다.
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" }, "serviceDiscovery": { "routes": {} } } } }
다음을 바꿉니다.
PROJECT_ID: 보안 게이트웨이가 구성된 프로젝트의 IDSECURITY_GATEWAY_ID: 보안 게이트웨이의 ID
구성을 저장하려면 저장을 클릭합니다.
기존 PAC 파일 설정
사용 설정하면 서비스 검색을 통해 Chrome 브라우저 클라이언트가 보안 게이트웨이를 통해 구성된 애플리케이션을 자동으로 감지하고 트래픽을 라우팅하므로 PAC 파일을 사용하여 라우팅 구성을 수동으로 설정할 필요가 없습니다.
보안 게이트웨이에서 서비스 검색이 사용 설정되어 있지 않으면 기존 설정이 있는 것입니다. Chrome 브라우저 클라이언트에서 라우팅을 제어하려면 PAC 파일을 구성해야 합니다.
기존 설정이 있는지 확인하려면 다음 명령어를 사용하여 서비스 검색이 사용 설정되어 있는지 확인하세요.
gcloud
gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global | grep -i "serviceDiscovery"
REST
curl --silent \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" | grep -i "serviceDiscovery"
명령어가 출력을 반환하지 않으면 게이트웨이에서 기존 설정을 사용합니다. 기존 설정을 사용하는 게이트웨이의 경우 호스팅된 PAC 파일을 사용하여 라우팅이 처리됩니다.
1단계: PAC 파일 만들기 및 호스팅
다음 JavaScript를 사용하여
pac_config.js라는 파일을 만들고HOST_NAME을 애플리케이션의 도메인 (예:myapp.example.com)으로 바꿉니다.function FindProxyForURL(url, host) { const PROXY = "HTTPS via.prod.securegateway.goog:443"; const sites = ["HOST_NAME"]; for (const site of sites) { if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) { return PROXY; } } return 'DIRECT'; }
PAC 파일을 Cloud Storage 버킷과 같은 호스팅 서비스에 업로드합니다.
- 파일이 공개적으로 다운로드 가능한지 확인합니다.
- 브라우저가 항상 최신 라우팅 규칙을 가져오도록 HTTP 헤더
Cache-Control를no-cache로 설정합니다.
업로드된 PAC 파일의 공개 URL을 복사합니다.
2단계: Google 관리 콘솔에서 PAC 파일 적용하기
- Google 관리 콘솔로 이동합니다.
- 기기 > Chrome > 설정으로 이동합니다.
- 조직 단위 또는 그룹을 선택한 다음 프록시 모드를 클릭합니다.
- 프록시 모드에서 항상 아래에 지정된 프록시 자동 구성 사용을 선택합니다.
- 호스팅된 PAC 파일의 공개 URL을 제공된 필드에 입력합니다.
- 저장을 클릭합니다.
3단계: Chrome Enterprise Premium 확장 프로그램 구성
확장 프로그램이 인증을 처리해야 합니다. 이 확장 프로그램 정책은 serviceDiscovery 블록을 제외하므로 표준 구성과 다릅니다.
- Google 관리 콘솔에서 Chrome 브라우저> 앱 및 확장 프로그램으로 이동합니다.
- 사용자 및 브라우저 탭으로 이동하여 보안 엔터프라이즈 브라우저 확장 프로그램 (
ekajlcmdfcigmdbphhifahdfjbkciflj)이 추가되고 적용되었는지 확인합니다. 확장 프로그램을 클릭하고 확장 프로그램 정책 필드에 다음 JSON 값을 입력합니다.
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" } } } }
저장을 클릭합니다.
서비스 검색 설정으로 전환
기존 보안 게이트웨이를 PAC 파일 설정에서 최신 서비스 검색 설정으로 전환하려면 기능을 수동으로 사용 설정하고 구성을 업데이트해야 합니다.
보안 게이트웨이에서 서비스 검색 사용 설정: 기존 게이트웨이를 업데이트하여 서비스 검색을 사용 설정합니다.
gcloud
gcloud beyondcorp security-gateways update SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global \ --service-discovery={}
REST
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "service_discovery": {} }' \ "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID?updateMask=service_discovery"
게이트웨이 수준 액세스 정책 설정: 사용자가 서비스 검색을 사용할 수 있도록 게이트웨이 수준에서
roles/beyondcorp.serviceDiscoveryUser역할을 부여합니다. 서비스 검색 게이트웨이 수준 바인딩 추가 섹션의 안내를 따릅니다.Chrome Enterprise Premium 확장 프로그램 구성 업데이트: Chrome Enterprise Premium 확장 프로그램 설치 섹션의 안내에 따라 확장 프로그램 정책을 업데이트합니다. 새 JSON 구성에는
"serviceDiscovery": { "routes": {} }블록이 포함되어야 합니다.기존 PAC 파일 삭제: 서비스 검색이 활성화되면 기존 PAC 파일이 더 이상 필요하지 않습니다.
- Google 관리 콘솔에서 기기 > Chrome > 설정 > 사용자 및 브라우저 설정 > 네트워크로 이동합니다.
- 프록시 모드 설정을 찾습니다.
- 프록시 자동 구성 (PAC) URL을 삭제하거나 설정을 항상 아래에 지정된 프록시 자동 구성 사용에서 사용자가 구성하도록 허용과 같은 네트워크에 적합한 모드로 전환합니다.
- 저장을 클릭합니다.
최종 사용자 환경
설정이 완료되면 보호된 SaaS 애플리케이션에 액세스하는 최종 사용자에게 애플리케이션에 적용된 액세스 정책에 따라 액세스 권한이 부여되거나 거부됩니다.
Chrome에서 애플리케이션에 액세스
Chrome Enterprise Premium 확장 프로그램은 보안 게이트웨이를 통해 트래픽을 라우팅하는 데 필요합니다. 확장 프로그램은 사용자와 보안 게이트웨이 간의 인증을 처리합니다. 확장 프로그램이 도메인 정책을 통해 자동으로 설치됩니다.
사용자가 구성한 SaaS 애플리케이션에 액세스하면 트래픽이 보안 게이트웨이를 통과하며, 보안 게이트웨이는 사용자가 액세스 정책을 충족하는지 확인합니다. 사용자가 액세스 정책 검사를 통과하면 애플리케이션에 대한 액세스 권한이 부여됩니다.
승인 정책에 따라 애플리케이션에 대한 브라우저 액세스가 거부되면 사용자에게 Access denied 메시지가 표시됩니다.