이 페이지에서는 IAP(Identity-Aware Proxy)를 사용하여 Compute Engine 인스턴스를 보호하는 방법을 설명합니다.
시작하기 전에
Compute Engine에 IAP를 사용 설정하려면 다음이 필요합니다.
- 청구가 사용 설정된 Google Cloud Console 프로젝트
- 부하 분산기로 제공된 하나 이상의 Compute Engine 인스턴스 그룹
- 외부 HTTPS 부하 분산기 설정 알아보기
- 내부 HTTP 부하 분산기 설정 알아보기
- 부하 분산기 주소에 등록된 도메인 이름
- 모든 요청에 ID가 포함되었는지 확인하기 위한 애플리케이션 코드
- 사용자의 ID 가져오기에 대해 자세히 알아보세요.
Compute Engine 인스턴스를 아직 설정하지 않은 경우 전체적으로 둘러보려면 Compute Engine을 위한 IAP 설정을 참조하세요.
IAP는 Google 관리 OAuth 클라이언트를 사용하여 사용자를 인증합니다. 조직 내 사용자만 IAP가 사용 설정된 애플리케이션에 액세스할 수 있습니다. 조직 외부 사용자에게 액세스를 허용하려면 외부 애플리케이션에 IAP 사용 설정을 참조하세요.
Compute Engine 백엔드 서비스 또는 Compute Engine 전달 규칙에서 IAP를 사용 설정할 수 있습니다. Compute Engine 백엔드 서비스에서 IAP를 사용 설정하면 해당 백엔드 서비스만 IAP로 보호됩니다. Compute Engine 전달 규칙에서 IAP를 사용 설정하면 전달 규칙 뒤에 있는 모든 Compute Engine 인스턴스가 IAP로 보호됩니다.
전달 규칙에서 IAP 사용 설정
부하 분산기 승인 정책 프레임워크를 사용하여 전달 규칙에서 IAP를 사용 설정할 수 있습니다.
gcloud
- Run the following command to prepare a
policy.yaml
file.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- Run the following command to enable IAP on a forwarding rule.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
API
- Run the following command to prepare a
policy.json
file.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [], "customProvider": { "cloudIap": {} } } EOF
Run the following command to enable IAP on a forwarding rule.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
전달 규칙에서 IAP를 사용 설정한 후에 리소스에 권한을 적용할 수 있습니다.
Compute Engine 백엔드 서비스에서 IAP 사용 설정
해당 백엔드 서비스를 통해 Compute Engine 백엔드 서비스에서 IAP를 사용 설정할 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 IAP를 사용 설정하면 Google 관리 OAuth 클라이언트를 사용할 수 없습니다.
프로젝트의 OAuth 동의 화면을 구성하지 않았으면, 구성하라는 메시지가 표시됩니다. OAuth 동의 화면을 구성하려면 OAuth 동의 화면 설정을 참조하세요.
IAP 액세스 설정
-
Identity-Aware Proxy 페이지로 이동합니다.
IAP(Identity-Aware Proxy) 페이지로 이동 - IAP로 보호하려는 프로젝트를 선택합니다.
-
액세스 권한을 부여할 리소스 옆에 있는 체크박스를 선택합니다.
리소스가 표시되지 않으면 리소스가 생성되었고 BackendConfig Compute Engine 인그레스 컨트롤러가 동기화되었는지 확인합니다.
백엔드 서비스를 사용할 수 있는지 확인하려면 다음 gcloud 명령어를 실행합니다.
gcloud compute backend-services list
- 오른쪽 패널에서 주 구성원 추가를 클릭합니다.
-
표시된 주 구성원 추가 대화상자에서 프로젝트에 대한 IAP 보안 웹 앱 사용자 역할이 있어야 하는 그룹 또는 개별 사용자의 이메일 주소를 입력합니다.
다음과 같은 종류의 주 구성원이 이 역할을 가질 수 있습니다.
- Google 계정: user@gmail.com
- Google Groups: admins@googlegroups.com
- 서비스 계정: server@example.gserviceaccount.com
- Google Workspace 도메인: example.com
액세스 권한이 있는 Google 계정을 추가해야 합니다.
- 역할 드롭다운 목록에서 Cloud IAP > IAP 보안 웹 앱 사용자를 선택합니다.
- 저장을 클릭합니다.
IAP 사용 설정 중
-
IAP(Identity-Aware Proxy) 페이지의 APPLICATIONS에서 액세스를 제한하려는 instance group 을 제공하는 부하 분산기를 찾습니다. 리소스에 IAP를 사용하려면
IAP를 사용 설정하려면 다음 안내를 따르세요.- 부하 분산기 프런트엔드 구성에서 하나 이상의 프로토콜이 HTTPS여야 합니다. 부하 분산기 설정에 대해 자세히 알아보세요.
-
compute.backendServices.update
,clientauthconfig.clients.create
,clientauthconfig.clients.getWithSecret
권한이 필요합니다. 이러한 권한은 프로젝트 편집자 역할과 같은 역할에서 부여합니다. 자세한 내용은 IAP 보안 리소스에 대한 액세스 관리를 참조하세요.
- 표시되는 IAP 사용 창에서 사용을 클릭하여 IAP가 리소스를 보호할 것임을 확인합니다. IAP를 사용하면 부하 분산기에 대한 모든 연결에 로그인 사용자 인증 정보가 필요합니다. 프로젝트에서 IAP 보안 웹 앱 사용자 역할이 있는 계정만 액세스할 수 있습니다.
gcloud
프로젝트와 IAP를 설정하려면 최신 버전의 gcloud CLI가 필요합니다. gcloud CLI 설치 방법에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요.
-
인증하려면 Google Cloud CLI를 사용하고 다음 명령어를 실행합니다.
gcloud auth login
- 로그인하려면 표시되는 URL을 따릅니다.
- 로그인한 후에는 표시된 확인 코드를 복사하고 이를 명령줄에 붙여넣습니다.
-
다음 명령어를 실행하여 IAP로 보호하려는 리소스가 포함된 프로젝트를 지정합니다.
gcloud config set project PROJECT_ID
-
IAP를 사용 설정하려면 전역 또는 리전 범위 명령어를 실행합니다.
전역 범위 리전 범위gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
IAP를 사용 설정한 후 gcloud CLI를 사용하여 IAM 역할 roles/iap.httpsResourceAccessor
를 사용하여 IAP 액세스 정책을 수정할 수 있습니다. 역할 및 권한 관리에 대해 자세히 알아보세요.
API
다음 명령어를 실행하여
settings.json
파일을 준비합니다.cat << EOF > settings.json { "iap": { "enabled":true } } EOF
다음 명령어를 실행하여 IAP를 사용 설정합니다.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
IAP를 사용 설정한 후 Google Cloud CLI를 사용하여 IAM 역할 roles/iap.httpsResourceAccessor
를 사용하여 IAP 액세스 정책을 수정할 수 있습니다. 역할 및 권한 관리에 대해 자세히 알아보세요.