VPC Service Controls 使用入站和出站规则 来控制对服务边界内资源和客户端的访问以及来自它们的访问。如需进一步细化访问权限,您可以在入站和出站规则中指定受支持的身份。
本页列出了 VPC Service Controls 支持的身份及其标识符格式。
支持的身份
VPC Service Controls 支持允许政策的主账号标识符
中的以下身份,这些身份使用 IAM
v1 API:
| 身份类型 | 主账号类型 | 标识符 |
|---|---|---|
| 单个主账号 | 用户账号 | user:USER_EMAIL_ADDRESS |
| 服务账号 | serviceAccount:SA_EMAIL_ADDRESS |
|
| 身份群组和第三方身份 | 群组 | group:GROUP_EMAIL_ADDRESS |
| 员工身份池中的单个身份 | principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE |
|
| 群组中的所有员工身份 | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID |
|
| 具有特定属性值的所有员工身份 | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE |
|
| 员工身份池中的所有身份 | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/* |
|
| 工作负载身份池中的单个身份 | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE |
|
| 工作负载身份池组 | principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP_ID |
|
| 工作负载身份池中具有特定属性的所有身份 | principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE |
|
| 工作负载身份池中的所有身份 | principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* |
|
|
适用于 GKE 的工作负载身份联合 (预览版) |
按名称使用 Kubernetes 服务帐号的所有 GKE Pod | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT |
| 按 ID 使用 Kubernetes 服务帐号的所有 GKE Pod | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/kubernetes.serviceaccount.uid/SERVICEACCOUNT_ID |
|
| Kubernetes 命名空间中的所有 GKE Pod(无论服务帐号或集群如何) | principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/namespace/NAMESPACE |
|
| 集群中的所有 GKE Pod | principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/kubernetes.cluster/https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME |
|
| 代理身份 | 代理身份 | principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER |
| 信任域中具有特定属性的所有代理身份 | principalSet://TRUST_DOMAIN/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE |
|
| 信任域中的所有代理身份 | principalSet://TRUST_DOMAIN/* |
如需详细了解这些身份,请参阅允许政策的 主账号标识符。
VPC Service Controls 还支持以下 SPIFFE 格式的第三方员工和 Workload Identity:
| 身份类型 | 主账号类型 | 标识符 |
|---|---|---|
| SPIFFE 格式的员工身份 | 员工身份池中的单个身份 | principal://POOL_ID.global.workforce.id.goog/SUBJECT_ATTRIBUTE_VALUE |
| 员工身份池中的所有身份(作为具有特定属性的信任域) | principalSet://POOL_ID.global.workforce.id.goog/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE |
|
| 员工身份池中的所有身份(作为信任域) | principalSet://POOL_ID.global.workforce.id.goog/* |
|
| SPIFFE 格式的 Workload Identity | 工作负载身份池中的单个身份 | principal://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/SUBJECT_ATTRIBUTE_VALUE |
| 工作负载身份池中的所有身份(作为具有特定属性的信任域) | principalSet://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE |
|
| 工作负载身份池中的所有身份(作为信任域) | principalSet://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/* |
适用于 GKE 的工作负载身份联合注意事项
- 每个访问权限政策最多可使用 1,000 个 Workload Identity Federation for GKE 主账号。如需了解详情,请参阅 配额和限制。
- 适用于 GKE 的工作负载身份联合主账号不支持 已删除的主账号语法。
- 您可以使用
完整的 IAM 主账号标识符格式(例如
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT) 或等效的 SPIFFE 格式(例如principal://PROJECT_ID.s3ns.svc.id.goog/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT)指定适用于 GKE 的工作负载身份联合主账号。 当您描述或检索服务边界时,如果该服务边界 包含使用 SPIFFE 语法创建的规则,则 VPC Service Controls 会以 SPIFFE 格式返回 身份。
已删除的 IAM 主账号
为了帮助您管理引用已删除账号的服务边界,VPC Service Controls 允许您启用对已删除 IAM 主账号标识符的支持。默认情况下,尝试更新或列出包含已删除主账号的边界会失败,并显示 The email address is invalid or
non-existent 错误。如需了解详情,
请参阅 排查常见问题。
如需检索或更新包含已删除主账号的边界,请使用 Access Context Manager API。在请求(例如 get、list 或 patch 方法)中,将 deletedPrincipalSyntax 参数 (REST) 或 deleted_principal_syntax 字段 (gRPC) 设置为 DELETED_PRINCIPAL_SYNTAX_SUPPORT_ENABLED。
例如,您可以使用以下 curl 命令获取边界:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/accessPolicies/\
POLICY_NAME/servicePerimeters/PERIMETER_NAME?\
deletedPrincipalSyntax=DELETED_PRINCIPAL_SYNTAX_SUPPORT_ENABLED"
如需查看支持已删除 语法的 IAM 主账号类型列表,请参阅 允许政策的主账号标识符。
限制
以下限制适用于 VPC Service Controls 边界中已删除的 IAM 主账号:
- VPC Service Controls 仅支持使用 IAM
v1API 的已删除 IAM 主账号。它不支持使用 IAMv2或v3API 的已删除主账号。 - 访问权限级别不支持已删除的 IAM 主账号。
- VPC Service Controls 服务边界规则也不支持 IAM 中不支持
deleted:前缀语法的主账号。 - 您最多可以在访问权限政策中指定 500 个已删除的身份。