本頁面說明如何使用授權政策,在應用程式負載平衡器的授權政策中,將 Identity-Aware Proxy (IAP) 指定為自訂授權引擎。
如要將授權委派給 IAP 和身分與存取權管理 (IAM),您可以根據 IAM 或代管負載平衡器的使用者身分,將流量授權給轉送規則。這樣一來,您就能為後端服務強制執行以 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 @policy.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,將 IAM 權限套用至受 IAP 保護專案中的個別資源。在特定層級授予的 IAM 權限會套用至其下方的所有層級。舉例來說,在專案層級授予的權限會套用至專案中的所有 Google Cloud 資源。
以下是設定權限的範例指令。詳情請參閱 gcloud alpha iap web set-iam-policy
。
gcloud
在範例指令中,將 POLICY_FILE 替換為含有有效政策的 YAML 格式檔案路徑。以下是 YAML 檔案範例:
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
更改下列內容:
- POLICY_FILE:包含有效政策的 YAML 檔案路徑。
- ORGANIZATION:貴機構的 ID。
- FOLDER:包含應用程式的資料夾。
- PROJECT_ID: Google Cloud 專案 ID。
- RESOURCE_TYPE:IAP 資源類型。資源類型必須為
app-engine
、iap_web
、compute
、organization
或folder
。 - SERVICE:轉送規則 ID 或名稱。
- 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 { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } EOF
更改下列內容:
- ORGANIZATION:貴機構的 ID。
- FOLDER:包含應用程式的資料夾。
- PROJECT_ID: Google Cloud 專案 ID。
- REGION:資源所在的區域。
- SERVICE:轉送規則 ID 或名稱。