本页介绍了如何使用授权政策在应用负载平衡器的授权政策中将 Identity-Aware Proxy (IAP) 指定为自定义授权引擎。
如需将授权委托给 IAP 和 Identity and Access Management (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 @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