本頁說明如何在入站和出站規則中使用 Identity and Access Management (IAM) 角色,允許存取受服務範圍保護的資源。
VPC Service Controls 會使用進出規則,允許客戶和受服務範圍保護的資源存取服務。您可以選擇使用 IAM 角色限制輸入和輸出規則。在規則中指定 IAM 角色時,該規則只會允許與 IAM 角色相關聯的權限相關動作。
事前準備
在入站規則中設定 IAM 角色
控制台
更新服務範圍的入站政策或在建立範圍時設定入站政策時,您可以使用 Google Cloud 主控台設定入站規則,以便使用 IAM 角色:
在 Google Cloud 主控台中建立或編輯外圍時,請選取「入站政策」。
在「Ingress rules」窗格中,選取現有的 ingress 規則,或按一下「Add an ingress rule」。
在「To」部分的「Operations or IAM roles」清單中,選取「Select IAM roles (Preview)」。
按一下「新增 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 主控台中建立或編輯外圍時,請選取「輸出政策」。
在「Egress rules」窗格中,選取現有的輸出規則,或按一下「Add an egress rule」。
在傳出政策的「To」部分,從「操作或 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
:已修改的輸出規則檔案路徑。
詳情請參閱「更新服務邊界輸入和輸出政策」。
支援的產品
您可以在入站和出站規則中使用下列 Google Cloud 服務的 IAM 角色:
產品 | 限制 |
---|---|
Artifact Registryartifactregistry.googleapis.com |
|
BigQuerybigquery.googleapis.com |
|
BigQuery 資料移轉服務bigquerydatatransfer.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 functionscloudfunctions.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 角色的入站或出站規則可能無法運作。例如,當您啟動 Dataflow 範本,從其他專案的 Cloud Storage 讀取文字時。
如果您在參照了週邊入口或出口規則中的角色後刪除自訂角色,該週邊就會變成無法編輯。