이 페이지에서는 승인 정책을 사용하여 애플리케이션 부하 분산기의 승인 정책에서 IAP(Identity-Aware Proxy)를 커스텀 승인 엔진으로 지정하는 방법을 설명합니다.
IAP 및 Identity and Access Management(IAM)에 승인을 위임하려면 관리형 부하 분산기의 IAM 또는 최종 사용자 ID를 기반으로 전달 규칙에 대한 트래픽을 승인합니다. 이렇게 하면 백엔드 서비스에 IAP 기반 액세스 제어를 적용할 수 있습니다.
시작하기 전에
- 승인 정책 개념을 이해합니다.
- IAP가 전달 규칙의 백엔드 서비스에 사용 설정되어 있지 않은지 확인합니다. IAP가 사용 설정된 경우 구성을 제출하면 오류가 발생합니다.
- Network Services API를 사용 설정합니다.
승인 정책 만들기 및 IAP 사용 설정
승인 정책을 만들려면 타겟과 규칙을 정의하는 정책 파일을 만든 후 전달 규칙에서 IAP를 사용 설정합니다.
gcloud
- 다음 명령어를 실행하여
policy.yaml
파일을 준비합니다.
$ 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
- 다음 명령어를 실행하여 전달 규칙에서 IAP를 사용 설정합니다.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: 리소스가 있는 리전입니다.
- FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
- AUTHZ_POLICY_NAME: 승인 정책 이름입니다.
API
- 다음 명령어를 실행하여
policy.json
파일을 준비합니다.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
다음 명령어를 실행하여 전달 규칙에서 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://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: 리소스가 있는 리전입니다.
- FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
- AUTHZ_POLICY_NAME: 승인 정책 이름입니다.
리소스에 권한 적용
IAP API를 사용하여 IAP 보안 프로젝트의 개별 리소스에 IAM 권한을 적용할 수 있습니다. 특정 수준에 부여되는 IAM 권한은 모든 하위 수준에 적용됩니다. 예를 들어 프로젝트 수준에서 부여된 권한은 프로젝트의 모든 Google Cloud 리소스에 적용됩니다.
다음은 권한을 구성하는 명령어의 예시입니다. 자세한 내용은 gcloud alpha iap web set-iam-policy
을 참조하세요.
gcloud
명령어 예시에서 POLICY_FILE을 유효한 정책이 포함된 YAML 형식 파일의 경로로 바꿉니다. 다음은 YAML 파일의 예시입니다.
policy:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
전달 규칙 리소스에 액세스할 수 있는 사용자의 권한 업데이트
gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=/PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
조직 수준에서 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
폴더 수준에서 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
프로젝트 수준에서 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
프로젝트의 모든 전역 전달 규칙에 대한 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
리전의 프로젝트에 있는 모든 전달 규칙에 대한 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
프로젝트의 특정 전역 전달 규칙에 대한 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
특정 리전의 프로젝트에 있는 특정 전달 규칙에 대한 권한 구성
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
API
조직 수준에서 권한 구성
organization/ORGANIZATION
폴더 수준에서 권한 구성
folders/FOLDER
프로젝트 수준에서 권한 구성
projects/PROJECT_ID
프로젝트의 모든 전역 전달 규칙에 대한 권한 구성
projects/PROJECT_ID/forwarding_rule
리전의 프로젝트에 있는 모든 전달 규칙에 대한 권한 구성
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
프로젝트의 특정 전역 전달 규칙에 대한 권한 구성
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
특정 리전의 프로젝트에 있는 특정 전달 규칙에 대한 권한 구성
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
승인 정책 설정
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
policy.json
의 경우 다음 명령어를 실행하여 JSON 파일을 만들 수 있습니다. 필요에 따라 값을 업데이트합니다.
cat << EOF > policy.json { "policy": { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } } EOF