在輸入和輸出規則中設定 IAM 角色

本頁說明如何在入站和出站規則中使用 Identity and Access Management (IAM) 角色,允許存取受服務範圍保護的資源。

VPC Service Controls 會使用進出規則,允許客戶和受服務範圍保護的資源存取服務。您可以選擇使用 IAM 角色限制輸入和輸出規則。在規則中指定 IAM 角色時,該規則只會允許與 IAM 角色相關聯的權限相關動作。

事前準備

在入站規則中設定 IAM 角色

控制台

更新服務範圍的入站政策在建立範圍時設定入站政策時,您可以使用 Google Cloud 主控台設定入站規則,以便使用 IAM 角色:

  1. 在 Google Cloud 主控台中建立或編輯外圍時,請選取「入站政策」

  2. 在「Ingress rules」窗格中,選取現有的 ingress 規則,或按一下「Add an ingress rule」

  3. 在「To」部分的「Operations or IAM roles」清單中,選取「Select IAM roles (Preview)」

  4. 按一下「新增 IAM 角色」

  5. 在「新增 IAM 角色」窗格中,選取要允許的 IAM 角色。

    如要瞭解支援的服務和角色,請參閱「支援的產品」。

  6. 按一下「新增所選 IAM 角色」

  7. 按一下 [完成]

如要瞭解其他入站規則屬性,請參閱「入站規則參考資料」。

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 角色:

  1. 在 Google Cloud 主控台中建立或編輯外圍時,請選取「輸出政策」

  2. 在「Egress rules」窗格中,選取現有的輸出規則,或按一下「Add an egress rule」

  3. 在傳出政策的「To」部分,從「操作或 IAM 角色」清單中選取「選取 IAM 角色 (預先發布版)」

  4. 按一下「新增 IAM 角色」

  5. 在「新增 IAM 角色」窗格中,選取要允許的 IAM 角色。

    如要瞭解支援的服務和角色,請參閱「支援的產品」。

  6. 按一下「新增所選 IAM 角色」

  7. 按一下 [完成]

如要瞭解其他輸出規則屬性,請參閱輸出規則參考資料

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:已修改的輸出規則檔案路徑。

詳情請參閱「更新服務邊界輸入和輸出政策」。

支援的產品

您可以在入站和出站規則中使用下列 Google Cloud 服務的 IAM 角色:

產品 限制
Artifact Registry
artifactregistry.googleapis.com
  • 沒有已知限制。
BigQuery
bigquery.googleapis.com
  • 沒有已知限制。
BigQuery 資料移轉服務
bigquerydatatransfer.googleapis.com
  • 沒有已知限制。
Bigtable
bigtable.googleapis.com
  • 沒有已知限制。
二進位授權
binaryauthorization.googleapis.com
  • 沒有已知限制。
Cloud Composer
composer.googleapis.com
  • 沒有已知限制。
Cloud Key Management Service
cloudkms.googleapis.com
Cloud Logging
logging.googleapis.com
  • 沒有已知限制。
Cloud Monitoring
monitoring.googleapis.com
  • 沒有已知限制。
Cloud Run
run.googleapis.com
  • 沒有已知限制。
Cloud Run functions
cloudfunctions.googleapis.com
  • 沒有已知限制。
Cloud SQL
sqladmin.googleapis.com
  • 沒有已知限制。
Cloud Storage
storage.googleapis.com
  • VPC Service Controls 支援入站和出站規則中的 Cloud Storage 自訂角色,但不支援預先定義的 Cloud Storage 角色。當您嘗試在輸入或輸出規則中使用預先定義的 Cloud Storage 角色時,VPC Service Controls 會傳回 INVALID_ARGUMENT 錯誤。
  • 當您要對受 VPC Service Controls 保護的專案執行物件插入或寫入 API 要求時,必須設定輸入和輸出規則,允許 storage.objects.deletestorage.objects.create 權限。
  • 在 Cloud Storage 中啟用要求者付費功能時,VPC Service Controls 不支援在入站和出站規則中使用 Cloud Storage 角色。
Compute Engine
compute.googleapis.com
  • 沒有已知限制。
Dataflow
dataflow.googleapis.com
  • 沒有已知限制。
Dataproc
dataproc.googleapis.com
  • 沒有已知限制。
Google Kubernetes Engine
container.googleapis.com
  • 沒有已知限制。
Identity and Access Management
iam.googleapis.com
  • 沒有已知限制。
Pub/Sub
pubsub.googleapis.com
  • 沒有已知限制。
Resource Manager
cloudresourcemanager.googleapis.com
  • 沒有已知限制。
Secret Manager
secretmanager.googleapis.com
  • 沒有已知限制。
Spanner
spanner.googleapis.com
  • 沒有已知限制。

如要查看這些服務的預先定義 IAM 角色清單,您可以在入站和出站規則中使用這些角色,請參閱「預先定義角色」。

不過,這些服務中的部分 IAM 角色在入站和出站規則中不支援或部分支援,因為系統不支援部分或所有基礎權限:

  • 如果在入站或出站規則中使用部分支援的 IAM 角色,則規則將無法針對特定於基礎未支援的權限的請求或動作生效。

    如需部分支援角色和相關不支援權限的清單,請參閱「部分支援的 IAM 角色」。

  • 如果在輸入或輸出規則中使用不支援的 IAM 角色,規則就會失效。

    如需不支援的角色清單,請參閱「不支援的 IAM 角色」。

如果您想在入站和出站規則中使用自訂角色,請確認自訂角色只包含支援服務所支援的權限。如需支援服務的支援權限清單,請參閱「部分支援的 IAM 角色」和「不支援的 IAM 角色」。

您無法使用在專案層級建立的自訂角色。換句話說,您無法使用以下格式的自訂角色:projects/PROJECT_ID/roles/IDENTIFIER

部分支援的 IAM 角色

下表列出特定服務部分支援的 IAM 角色:

產品 部分支援的角色 不支援的權限
Cloud SQL
  • roles/cloudsql.viewer
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
  • roles/cloudsql.editor
  • cloudsql.backupRuns.list
  • cloudaicompanion.*
Cloud Storage
  • roles/storage.objectUser
  • storage.objects.move
Identity and Access Management
  • roles/iam.serviceAccountTokenCreator
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt
Resource Manager
  • roles/resourcemanager.tagAdmin
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • roles/resourcemanager.tagUser
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
  • roles/resourcemanager.tagViewer
  • resourcemanager.tagKeys.get
  • resourcemanager.tagValues.get
  • alloydb.*
  • certificatemanager.*
  • clouddeploy.*
Spanner
  • roles/spanner.databaseReaderWithDataBoost
  • spanner.databases.useDataBoost
其他部分支援的角色
  • 支援服務中的所有角色,這些角色包含這些底層不支援的權限。
  • alloydb.*
  • backupdr.*
  • bigquerymigration.*
  • certificatemanager.*
  • cloudaicompanion.*
  • cloudasset.*
  • cloudbuild.*
  • clouddeploy.*
  • dataform.*
  • dataplex.*
  • dns.*
  • eventarc.*
  • networkconnectivity.*
  • networkmanagement.*
  • networksecurity.*
  • networkservices.*

不支援的 IAM 角色

下表列出特定服務不支援的 IAM 角色:

產品 不支援的角色
Identity and Access Management
  • roles/iam.denyReviewer
  • roles/iam.oauthClientViewer
  • roles/iam.operationViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer
  • roles/iam.workloadIdentityPoolViewer
  • roles/iam.workforcePoolEditor
  • roles/iam.workforcePoolViewer

限制

  • 您無法使用以角色為依據的入站或出站規則,允許跨越邊界設定專案的 IAM 允許政策

  • 如果您在Google Cloud 主控台中遇到載入服務編輯頁面的問題,且該問題是因為 VPC Service Controls 限制所造成,則在入站規則中使用 IAM 角色可能無法解決問題。這項限制不會影響這些服務的僅供檢視頁面。

  • 如果要求涉及不同專案的多種資源類型,使用 IAM 角色的入站或出站規則可能無法運作。例如,當您啟動 Dataflow 範本,從其他專案的 Cloud Storage 讀取文字時。

  • 如果您在參照了週邊入口或出口規則中的角色後刪除自訂角色,該週邊就會變成無法編輯。

後續步驟