本頁面說明如何設定工作負載,透過 Workload Identity 聯盟和直接資源存取權或服務帳戶模擬功能,存取 Trusted Cloud by S3NS資源。
如需端對端的使用案例專屬操作說明,請參閱 AWS 和 Azure、Active Directory、GitHub、GitLab 和其他部署管道,以及 Kubernetes 的設定指南。
允許外部工作負載存取 Trusted Cloud 資源
如要授予工作負載資源存取權,建議您直接授予主體資源存取權。 Trusted Cloud 在本例中,主體是聯合使用者。部分 Trusted Cloud 產品有 Google Cloud API 限制。如果工作負載呼叫的 API 端點設有限制,您可以改用服務帳戶模擬功能。在本例中,主體是Trusted Cloud 服務帳戶,也就是身分。您授予資源的服務帳戶存取權。
直接存取資源
您可以使用 Trusted Cloud 控制台或 gcloud CLI,直接在資源上授予聯盟身分存取權。
控制台
如要使用 Trusted Cloud 控制台直接在資源上授予 IAM 角色,請前往資源頁面,然後授予角色。下列範例說明如何前往 Cloud Storage 頁面,並直接在 Cloud Storage bucket 上,將「Storage 物件檢視者」(roles/storage.objectViewer
) 角色授予同盟身分。
- 在 Trusted Cloud 控制台,前往「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要授予角色的 bucket 名稱。
選取靠近頁面上方的 [Permissions] (權限) 分頁標籤。
按一下「授予存取權」add_box按鈕。
系統會顯示「新增主體」對話方塊。
在「New principals」(新增主體) 欄位中,輸入需要存取值區的一或多個身分。
依科目
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
更改下列內容:
PROJECT_NUMBER
:專案編號POOL_ID
:工作負載集區 IDSUBJECT
:從 IdP 對應的個別主體,例如administrator@example.com
依群組
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
更改下列內容:
PROJECT_NUMBER
:專案編號WORKLOAD_POOL_ID
:工作負載集區 ID- :從 IdP 對應的群組,例如:
administrator-group@example.com
GROUP
依屬性
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
更改下列內容:
PROJECT_NUMBER
:專案編號WORKLOAD_POOL_ID
:工作負載集區 IDATTRIBUTE_NAME
:從 IdP 對應的其中一個屬性ATTRIBUTE_VALUE
:屬性的值
從「Select a role」(請選取角色) 下拉式選單中選取一或多個角色。您選取的角色會顯示在面板中,系統還會針對這些角色所授予的權限提供簡短說明。
按一下 [儲存]。
gcloud
如要使用 gcloud CLI 授予專案中資源的 IAM 角色,請執行下列操作:
取得定義資源的專案編號。
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
授予資源存取權。
如要使用 gcloud CLI 將 Storage 物件檢視者 (
roles/storage.objectViewer
) 角色授予符合特定條件的外部身分,請執行下列指令。依科目
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
依群組
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
依屬性
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
更改下列內容:
BUCKET_ID
:要授予存取權的值區PROJECT_NUMBER
:含有 workload identity pool 的專案專案編號。POOL_ID
:工作負載身分集區的集區 IDSUBJECT
:您已對應至google.subject
的屬性預期值GROUP
:您已對應至google.groups
的屬性預期值ATTRIBUTE_NAME
:屬性對應中的自訂屬性名稱ATTRIBUTE_VALUE
:屬性對應中自訂屬性的值
您可以在任何支援 IAM 允許政策的 Trusted Cloud 資源上授予角色。
服務帳戶模擬
如要為外部工作負載建立服務帳戶,請按照下列步驟操作:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
建立服務帳戶,代表工作負載。建議您為每個工作負載使用專屬服務帳戶。服務帳戶不必與工作負載身分集區位於同一專案,但您必須參照包含服務帳戶的專案。
授予服務帳戶存取權,允許外部身分存取資源。
如要允許聯合身分模擬服務帳戶,請執行下列操作:
控制台
如要使用 Trusted Cloud 控制台,將 IAM 角色授予具有服務帳戶的同盟身分,請按照下列步驟操作:
同一專案中的服務帳戶
如要使用服務帳戶模擬功能,為同一專案中的服務帳戶授予存取權,請執行下列步驟:
前往「Workload Identity Pools」(工作負載身分集區) 頁面。
選取「授予存取權」。
在「授予服務帳戶存取權」對話方塊中,選取「透過服務帳戶模擬功能授予存取權」。
在「服務帳戶」清單中,選取要讓外部身分模擬的服務帳戶,然後執行下列操作:
如要選擇集區中的哪些身分可以模擬服務帳戶,請執行下列其中一項動作:
如要只允許工作負載身分識別集區的特定身分模擬服務帳戶,請選取「只顯示符合篩選條件的身分」。
在「屬性名稱」清單中,選取要篩選的屬性。
在「屬性值」欄位中,輸入屬性的預期值;舉例來說,如果您使用屬性對應
google.subject=assertion.sub
,請將「屬性」名稱設為subject
,並將「屬性值」設為外部身分識別提供者核發的權杖中sub
聲明的值。
如要儲存設定,請依序按一下「儲存」和「關閉」。
其他專案中的服務帳戶
如要使用服務帳戶模擬功能,為其他專案中的服務帳戶授予存取權,請按照下列步驟操作:
前往「Service Accounts」(服務帳戶) 頁面
選取要模擬的服務帳戶。
按一下「管理存取權」。
按一下「新增主體」。
在「New principal」(新增主體) 欄位中,輸入下列其中一個主體 ID,以指定集區中的身分,這些身分將模擬服務帳戶。
依科目
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
更改下列內容:
PROJECT_NUMBER
:專案編號POOL_ID
:工作負載集區 IDSUBJECT
:從 IdP 對應的個別主體,例如administrator@example.com
依群組
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
更改下列內容:
PROJECT_NUMBER
:專案編號WORKLOAD_POOL_ID
:工作負載集區 ID- :從 IdP 對應的群組,例如:
administrator-group@example.com
GROUP
依屬性
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
更改下列內容:
PROJECT_NUMBER
:專案編號WORKLOAD_POOL_ID
:工作負載集區 IDATTRIBUTE_NAME
:從 IdP 對應的其中一個屬性ATTRIBUTE_VALUE
:屬性的值
依集區
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
更改下列內容:
PROJECT_NUMBER
:專案編號WORKLOAD_POOL_ID
:工作負載集區 ID
在「Select a role」(選取角色) 欄位,選取 Workload Identity User 角色 (
roles/iam.workloadIdentityUser
)。如要儲存設定,請按一下「儲存」。
gcloud
如要將 Workload Identity 使用者角色 (roles/iam.workloadIdentityUser
) 授予已同盟主體或主體集,請執行下列指令。如要進一步瞭解 Workload Identity 聯盟主體 ID,請參閱「主體類型」。
依科目
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"
依群組
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"
依屬性
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"
更改下列內容:
下載設定
如要讓工作負載存取用戶端程式庫,請先下載並設定應用程式預設憑證 (ADC),方法如下:
-
前往 Trusted Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
前往「Workload Identity Pools」(工作負載身分集區) -
在表格中選取集區,前往集區的詳細資料頁面。
-
按一下「授予存取權」。
-
選取「使用聯合身分授予存取權 (建議)」。
-
如要下載應用程式預設憑證 (ADC),讓工作負載存取用戶端程式庫,請按照下列步驟操作:
-
按一下「下載設定」。
-
在「設定應用程式」對話方塊中,執行下列操作:
-
在「提供者」下拉式清單中,選取您的提供者。
-
在「OIDC token path」(OIDC 權杖路徑) 或「SAML assertion path」(SAML 聲明路徑) 中,輸入權杖或聲明所在的路徑。
在「格式類型」下拉式清單中,選取格式。
-
-
按一下「下載設定」,並記下儲存檔案的路徑。
-