本页介绍了如何在入站和出站规则中使用 Identity and Access Management (IAM) 角色,以允许访问受服务边界保护的资源。
VPC Service Controls 使用入站和出站规则来允许访问受服务边界保护的资源和客户端或来自它们的访问。(可选)您可以使用 IAM 角色限制入站和出站规则。在规则中指定 IAM 角色后,该规则仅允许与 IAM 角色所含权限相关联的操作。
准备工作
在入站规则中配置 IAM 角色
控制台
使用 Google Cloud 控制台更新服务边界的入站流量政策或在创建边界时设置入站流量政策时,您可以将入站流量规则配置为使用 IAM 角色:
在 Google Cloud 控制台中创建边界或修改边界时,选择入站政策。
在入站流量规则窗格中,选择现有的入站流量规则,或点击添加入站流量规则。
在入站政策的目标部分,从操作或 IAM 角色列表中选择选择 IAM 角色(预览版)。
点击添加 IAM 角色。
在添加 IAM 角色窗格中,选择要允许的 IAM 角色。
如需了解受支持的服务和角色,请参阅支持的产品。
点击添加所选的 IAM 角色。
点击完成。
如需了解其他入站规则属性,请参阅入站规则参考。
gcloud
您可以使用 JSON 文件或 YAML 文件配置入站规则以使用 IAM 角色。以下示例使用 YAML 格式:
- ingressFrom:
identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
*OR*
identities:
- PRINCIPAL_IDENTIFIER
sources:
- resource: RESOURCE
*OR*
- accessLevel: ACCESS_LEVEL
ingressTo:
operations:
- serviceName: SERVICE_NAME
methodSelectors:
- method: METHOD_NAME
*OR*
roles:
- ROLE_NAME
resources:
- projects/PROJECT_NUMBER
将 ROLE_NAME
替换为用于定义规则中指定服务的访问权限范围的 IAM 角色。指定一个角色或角色组合,其中包含访问服务所需的所有权限。如需指定角色,请使用角色组件中提及的角色名称格式,但以下格式除外:projects/PROJECT_ID/roles/IDENTIFIER
。
如需了解受支持的服务和角色,请参阅支持的产品。
如需了解其他入站规则属性,请参阅入站规则参考。
更新现有入站规则以配置 IAM 角色后,您需要更新服务边界的规则政策:
gcloud access-context-manager perimeters update PERIMETER_ID --set-ingress-policies=RULE_POLICY.yaml
替换以下内容:
PERIMETER_ID
:您要更新的服务边界的 ID。RULE_POLICY
:修改后的入站规则文件的路径。
如需了解详情,请参阅更新服务边界的入站和出站政策。
在出站规则中配置 IAM 角色
控制台
使用 Google Cloud 控制台更新服务边界的出站流量政策或在创建边界时设置出站流量政策时,您可以将出站流量规则配置为使用 IAM 角色:
在 Google Cloud 控制台中创建或修改边界时,选择出站流量政策。
在出站流量规则窗格中,选择现有出站流量规则或点击添加出站流量规则。
在出站流量政策的目标部分,从操作或 IAM 角色列表中选择选择 IAM 角色(预览版)。
点击添加 IAM 角色。
在添加 IAM 角色窗格中,选择要允许的 IAM 角色。
如需了解受支持的服务和角色,请参阅支持的产品。
点击添加所选的 IAM 角色。
点击完成。
如需了解其他出站规则属性,请参阅出站规则参考。
gcloud
您可以使用 JSON 文件或 YAML 文件配置出站规则以使用 IAM 角色。以下示例使用 YAML 格式:
- egressTo:
operations:
- serviceName: SERVICE_NAME
methodSelectors:
- method: METHOD_NAME
*OR*
roles:
- ROLE_NAME
resources:
- projects/PROJECT_NUMBER
egressFrom:
identityType: ANY_IDENTITY | ANY_USER_ACCOUNT | ANY_SERVICE_ACCOUNT
*OR*
identities:
- PRINCIPAL_IDENTIFIER
sources:
- resource: RESOURCE
*OR*
- accessLevel: ACCESS_LEVEL
sourceRestriction: RESTRICTION_STATUS
将 ROLE_NAME
替换为用于定义规则中指定服务的访问权限范围的 IAM 角色。指定一个角色或角色组合,其中包含访问服务所需的所有权限。如需指定角色,请使用角色组件中提及的角色名称格式,但以下格式除外:projects/PROJECT_ID/roles/IDENTIFIER
。
如需了解受支持的服务和角色,请参阅支持的产品。
如需了解其他出站规则属性,请参阅出站规则参考。
更新现有出站规则以配置 IAM 角色后,您需要更新服务边界的规则政策:
gcloud access-context-manager perimeters update PERIMETER_ID --set-egress-policies=RULE_POLICY.yaml
替换以下内容:
PERIMETER_ID
:您要更新的服务边界的 ID。RULE_POLICY
:修改后的出站规则文件的路径。
如需了解详情,请参阅更新服务边界的入站和出站政策。
支持的产品
您可以在入站和出站规则中使用以下服务的 IAM 角色 Google Cloud :
产品 | 限制 |
---|---|
Artifact Registryartifactregistry.googleapis.com |
|
BigQuerybigquery.googleapis.com |
|
BigQuery Data Transfer Servicebigquerydatatransfer.googleapis.com |
|
Bigtablebigtable.googleapis.com |
|
二进制授权binaryauthorization.googleapis.com |
|
Cloud Composercomposer.googleapis.com |
|
Cloud Key Management Servicecloudkms.googleapis.com |
|
Cloud Logginglogging.googleapis.com |
|
Cloud Monitoringmonitoring.googleapis.com |
|
Cloud Runrun.googleapis.com |
|
Cloud Run 函数cloudfunctions.googleapis.com |
|
Cloud SQLsqladmin.googleapis.com |
|
Cloud Storagestorage.googleapis.com |
|
Compute Enginecompute.googleapis.com |
|
Dataflowdataflow.googleapis.com |
|
Dataprocdataproc.googleapis.com |
|
Google Kubernetes Enginecontainer.googleapis.com |
|
Identity and Access Managementiam.googleapis.com |
|
Pub/Subpubsub.googleapis.com |
|
Resource Managercloudresourcemanager.googleapis.com |
|
Secret Managersecretmanager.googleapis.com |
|
Spannerspanner.googleapis.com |
|
如需查看您可以在入站和出站规则中使用的这些服务的预定义 IAM 角色列表,请参阅预定义角色。
不过,这些服务中的部分 IAM 角色在入站和出站规则中部分受支持或不受支持,因为底层的部分或全部权限不受支持:
如果在入站规则或出站规则中使用部分受支持的 IAM 角色,则该规则对特定于底层不受支持的权限的请求或操作无效。
如需查看部分受支持的角色和相关的不受支持权限的列表,请参阅部分受支持的 IAM 角色。
在入站或出站规则中使用不受支持的 IAM 角色会导致规则无效。
如需查看不受支持的角色的列表,请参阅不受支持的 IAM 角色。
如果您想在入站和出站规则中使用自定义角色,请确保自定义角色仅包含受支持服务支持的权限。如需查看受支持服务的不受支持权限列表,请参阅部分受支持的 IAM 角色和不受支持的 IAM 角色。
您无法使用在项目级创建的自定义角色。换句话说,您不能使用格式为 projects/PROJECT_ID/roles/IDENTIFIER
的自定义角色。
部分受支持的 IAM 角色
下表列出了特定服务中部分受支持的 IAM 角色:
产品 | 部分支持的角色 | 不受支持的权限 |
---|---|---|
Cloud SQL |
|
|
|
|
|
Cloud Storage |
|
|
Identity and Access Management |
|
|
Resource Manager |
|
|
|
|
|
|
|
|
Spanner |
|
|
其他部分受支持的角色 |
|
|
不受支持的 IAM 角色
下表列出了特定服务不支持的 IAM 角色:
产品 | 不受支持的角色 |
---|---|
Identity and Access Management |
|
限制
您无法使用基于角色的入站规则或出站规则来允许请求跨边界设置项目的 IAM 允许政策。
如果您在 Google Cloud 控制台中加载服务的修改页面时遇到问题,并且问题是由于 VPC Service Controls 限制造成的,那么在入站规则中使用 IAM 角色可能无法解决此问题。此限制不会影响这些服务的查看权限页面。
如果请求涉及来自不同项目的多种资源类型,使用 IAM 角色的入站规则或出站规则可能无法正常运行。例如,当您启动从其他项目中的 Cloud Storage 读取文本的 Dataflow 模板时。
如果您在边界的入站规则或出站规则中引用了自定义角色,然后删除了该角色,则该边界将无法修改。