本頁說明如何為 Cloud Data Fusion 執行個體中的命名空間設定 Identity and Access Management (IAM) 服務帳戶。
Cloud Data Fusion 中的命名空間簡介
命名空間是 Cloud Data Fusion 執行個體中應用程式、資料和相關聯中繼資料的邏輯分組。您可以將命名空間視為執行個體的分割區。任何應用程式或資料 (在此稱為「實體」) 都可以獨立存在於多個命名空間中。在單一執行個體中,一個命名空間會獨立於另一個命名空間,儲存實體的資料和中繼資料。
使用命名空間服務帳戶控管存取權
如要控管 Google Cloud 資源的存取權,Cloud Data Fusion 中的命名空間預設會使用 Cloud Data Fusion API 服務代理人。
為提升資料隔離效果,您可以將自訂 IAM 服務帳戶 (稱為「每個命名空間的服務帳戶」) 與每個命名空間建立關聯。自訂 IAM 服務帳戶 (不同命名空間可使用不同帳戶) 可讓您控管 Cloud Data Fusion 中管道設計階段作業的命名空間間資源存取權,例如管道預覽、Wrangler 和管道驗證。Google Cloud
事前準備
- 在 Cloud Data Fusion 6.10.0 以上版本中,RBAC 啟用執行個體支援每個命名空間的服務帳戶。
- 每個命名空間的服務帳戶可用來控管及管理 Google Cloud 資源的存取權。
必要角色和權限
如要取得自訂命名空間服務帳戶的權限,並在命名空間中授予使用者權限,請要求管理員在專案的 Cloud Data Fusion 執行個體中,授予您「Cloud Data Fusion 管理員」 (roles/datafusion.admin
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
管理命名空間中使用者權限
如要授予使用者命名空間所需的權限,請將預先定義的 Cloud Data Fusion 角色授予他們。詳情請參閱預先定義的 Cloud Data Fusion 角色,這些角色適用於已啟用 RBAC 的執行個體。
設定命名空間服務帳戶
控制台
如要為命名空間設定服務帳戶,請按照下列步驟操作:
- 如果命名空間沒有現有的服務帳戶,請建立一個。
前往 Google Cloud 控制台的 Cloud Data Fusion「Instances」(執行個體) 頁面,然後在 Cloud Data Fusion 網頁介面中開啟執行個體。
依序點選「系統管理員」>「設定」>「命名空間」。
按一下要設定的命名空間。
按一下「服務帳戶」分頁,然後按一下「新增服務帳戶」。
授予 Workload Identity 使用者角色 (
roles/iam.workloadIdentityUser
)。如要授予角色,請按照下列步驟操作:
- 在「Pipeline design service account」(管道設計服務帳戶) 欄位中,輸入服務帳戶電子郵件地址,例如
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
。 - 按照隨即出現的對話方塊中的指示操作。
- 在「Pipeline design service account」(管道設計服務帳戶) 欄位中,輸入服務帳戶電子郵件地址,例如
如要完成服務帳戶設定,請返回 Cloud Data Fusion 執行個體的命名空間,然後按一下「儲存」。
重複上述步驟,為每個命名空間設定服務帳戶。
REST API
授予 Workload Identity 使用者角色 (
roles/iam.workloadIdentityUser
)。如要授予角色,請按照下列步驟操作:
設定下列環境變數:
export TENANT_PROJECT_ID=TENANT_PROJECT export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
更改下列內容:
TENANT_PROJECT
:租戶專案 ID。如要查看,請前往「Instances」(執行個體) 頁面,然後按一下執行個體名稱。ID 會顯示在「執行個體詳細資料」頁面。SERVICE_ACCOUNT_PROJECT
:IAM 服務帳戶所在的Google Cloud 專案 ID。
授予 Workload Identity 使用者角色:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser --member "serviceAccount:${TENANT_PROJECT_ID}.svc.id.goog[default/NAMESPACE_IDENTITY]" SERVICE_ACCOUNT_EMAIL \ --project ${GSA_PROJECT_ID}
更改下列內容:
NAMESPACE_IDENTITY
:命名空間的 ID。詳情請參閱「命名空間詳細資料」。SERVICE_ACCOUNT_EMAIL
:服務帳戶的電子郵件地址,例如SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
。
驗證上一個步驟中的命名空間服務帳戶電子郵件地址。設定
environment variables
,然後執行下列指令:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity/validate -X POST -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
更改下列內容:
NAMESPACE_NAME
:命名空間的 ID。SERVICE_ACCOUNT_EMAIL
:您要在命名空間中設定的 IAM 服務帳戶電子郵件地址。
設定命名空間服務帳戶。設定
environment variables
,然後執行下列指令:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
編輯命名空間服務帳戶
控制台
如要編輯命名空間服務帳戶,請按照下列步驟操作:
- 在 Cloud Data Fusion 執行個體中,依序點選「系統管理」>「設定」>「命名空間」。
- 按一下要編輯服務帳戶的命名空間。
- 如要編輯服務帳戶,請前往「Service accounts」(服務帳戶) 分頁標籤。在服務帳戶名稱旁邊,依序點選「選單」>「編輯」 。
- 按照步驟設定命名空間服務帳戶。
REST API
如要編輯命名空間服務帳戶,請按照下列步驟操作:
設定
environment variables
,然後執行下列指令:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
更改下列內容:
NAMESPACE_NAME
:命名空間的 ID。SERVICE_ACCOUNT_EMAIL
:您要在命名空間中設定的 IAM 服務帳戶電子郵件地址。
刪除命名空間服務帳戶
控制台
如要從命名空間中刪除命名空間服務帳戶,請按照下列步驟操作:
- 在 Cloud Data Fusion 執行個體中,依序點選「系統管理」>「設定」>「命名空間」。
- 按一下要刪除服務帳戶的命名空間。
- 如要移除服務帳戶,請前往「服務帳戶」分頁標籤。在服務帳戶名稱旁邊,依序點按 >「刪除」。 「選單」
REST API
如要從命名空間中刪除命名空間服務帳戶,請按照下列步驟操作:
設定
environment variables
,然後執行下列指令:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
更改下列內容:
NAMESPACE_NAME
:命名空間的 ID。
取得命名空間服務帳戶
控制台
如要取得命名空間的服務帳戶資訊,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Data Fusion「Instances」(執行個體) 頁面,然後在 Cloud Data Fusion 網頁介面中開啟執行個體。
依序點選「系統管理員」>「設定」>「命名空間」。
按一下命名空間名稱,即可查看服務帳戶詳細資料。
REST API
如要取得命名空間服務帳戶名稱,請按照下列步驟操作:
設定
environment variables
,然後執行下列指令:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X GET
更改下列內容:
NAMESPACE_NAME
:命名空間的 ID。
如果成功,您會在下列回應中取得服務帳戶電子郵件地址:
Response: {"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}
後續步驟
- 進一步瞭解如何使用命名空間服務帳戶控管存取權。
- 進一步瞭解 Cloud Data Fusion 中以角色為基礎的存取權控管。