輸入和輸出規則支援的身分

VPC Service Controls 會使用輸入和輸出規則,控管對 service perimeter 內資源和用戶端的存取權,以及從這些資源和用戶端存取資料。如要進一步調整存取權,您可以在輸入和輸出規則中指定支援的身分。

本頁面列出 VPC Service Controls 支援的身分及其 ID 格式。

支援的身分

VPC Service Controls 支援下列身分 (來自允許政策的主體 ID),這些身分使用 IAM v1 API:

身分類型 主體類型 ID
單一主體 使用者帳戶 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/*
workload identity pool 中的單一身分 principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
workload identity pool 群組 principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP_ID
具有特定屬性的 workload identity pool 中的所有身分 principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
特定 workload identity pool 中的所有身分 principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
GKE 適用的 Workload Identity Federation
(預先發布版)
所有依名稱使用 Kubernetes 服務帳戶的 GKE Pod principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT
所有使用 Kubernetes 服務帳戶 ID 的 GKE Pod principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/kubernetes.serviceaccount.uid/SERVICEACCOUNT_ID
Kubernetes 命名空間中的所有 GKE Pod,無論服務帳戶或叢集為何 principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/namespace/NAMESPACE
叢集中的所有 GKE Pod principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.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/*

如要進一步瞭解這些身分,請參閱「允許政策的主體 ID」。

VPC Service Controls 也支援下列 SPIFFE 格式,適用於第三方員工和 Workload Identity:

身分類型 主體類型 ID
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 workload identity pool 中的單一身分 principal://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/SUBJECT_ATTRIBUTE_VALUE
具有特定屬性的 workload identity pool (做為信任網域) 中的所有身分 principalSet://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
信任網域中 workload identity pool 的所有身分 principalSet://POOL_ID.global.ORGANIZATION_ID.workload.id.goog/*

Workload Identity Federation for GKE 注意事項

  • 每項存取權政策最多可有 1,000 個 Workload Identity Federation for GKE 主體。詳情請參閱「配額與限制」。
  • Workload Identity Federation for GKE 主體不支援已刪除的主體語法。
  • 您可以指定 GKE 主體的 Workload Identity Federation,方法是使用完整的 IAM 主體 ID 格式 (例如 principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT),或對等的 SPIFFE 格式 (例如 principal://PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/KUBERNETES_SERVICE_ACCOUNT)。描述或擷取服務安全防護範圍時,如果該範圍包含以 SPIFFE 語法建立的規則,VPC Service Controls 會以 SPIFFE 格式傳回身分。

已刪除的 IAM 主體

為協助您管理參照已刪除帳戶的 service perimeter,VPC Service Controls 可讓您啟用已刪除 IAM 主體 ID 的支援功能。根據預設,如果嘗試更新或列出含有已刪除主體的 perimeter,系統會傳回 The email address is invalid or non-existent 錯誤。詳情請參閱「排解常見問題」。

如要擷取或更新含有已刪除主體的 perimeter,請使用 Access Context Manager API。在要求中,將 deletedPrincipalSyntax 參數 (REST) 或 deleted_principal_syntax 欄位 (gRPC) 設為 DELETED_PRINCIPAL_SYNTAX_SUPPORT_ENABLED,例如 get、list 或 patch 方法。

詳情請參閱 REST 或 gRPC 參考頁面。

舉例來說,您可以使用下列 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 主體類型清單,請參閱「允許政策的主體 ID」。

限制

在 VPC Service Controls perimeter 中,已刪除的 IAM 主體適用下列限制:

  • VPC Service Controls 僅支援使用 IAM v1 API 的已刪除 IAM 主體。不支援使用 IAM v2 或 v3 API 的已刪除主體。
  • 系統不支援在存取層級中刪除 IAM 主體。
  • 如果主體不支援 IAM 中的 deleted: 前置字元語法,VPC Service Controls 服務範圍規則也不支援。
  • 存取權政策最多可指定 500 個已刪除的身分。

後續步驟