使用命名空間服務帳戶的存取權控管

本頁說明如何為 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 的執行個體。

設定命名空間服務帳戶

控制台

如要為命名空間設定服務帳戶,請按照下列步驟操作:

  1. 如果命名空間沒有現有的服務帳戶,請建立一個
  2. 前往 Google Cloud 控制台的 Cloud Data Fusion「Instances」(執行個體) 頁面,然後在 Cloud Data Fusion 網頁介面中開啟執行個體。

    前往「Instances」(執行個體) 頁面

  3. 依序點選「系統管理員」>「設定」>「命名空間」

  4. 按一下要設定的命名空間。

  5. 按一下「服務帳戶」分頁,然後按一下「新增服務帳戶」

    「新增服務帳戶」按鈕。

  6. 授予 Workload Identity 使用者角色 (roles/iam.workloadIdentityUser)。

    如要授予角色,請按照下列步驟操作:

    1. 在「Pipeline design service account」(管道設計服務帳戶) 欄位中,輸入服務帳戶電子郵件地址,例如 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    2. 按照隨即出現的對話方塊中的指示操作。
  7. 如要完成服務帳戶設定,請返回 Cloud Data Fusion 執行個體的命名空間,然後按一下「儲存」

  8. 重複上述步驟,為每個命名空間設定服務帳戶。

REST API

  1. 授予 Workload Identity 使用者角色 (roles/iam.workloadIdentityUser)。

    如要授予角色,請按照下列步驟操作:

    1. 設定下列環境變數:

      export TENANT_PROJECT_ID=TENANT_PROJECT
      export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
      

      更改下列內容:

      • TENANT_PROJECT:租戶專案 ID。如要查看,請前往「Instances」(執行個體) 頁面,然後按一下執行個體名稱。ID 會顯示在「執行個體詳細資料」頁面。

        前往「Instances」(執行個體) 頁面

      • SERVICE_ACCOUNT_PROJECT:IAM 服務帳戶所在的Google Cloud 專案 ID。

    2. 授予 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

  2. 驗證上一個步驟中的命名空間服務帳戶電子郵件地址。設定 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 服務帳戶電子郵件地址。
  3. 設定命名空間服務帳戶。設定 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"}'
    

編輯命名空間服務帳戶

控制台

如要編輯命名空間服務帳戶,請按照下列步驟操作:

  1. 在 Cloud Data Fusion 執行個體中,依序點選「系統管理」>「設定」>「命名空間」
  2. 按一下要編輯服務帳戶的命名空間。
  3. 如要編輯服務帳戶,請前往「Service accounts」(服務帳戶) 分頁標籤。在服務帳戶名稱旁邊,依序點選「選單」>「編輯」
  4. 按照步驟設定命名空間服務帳戶

REST API

如要編輯命名空間服務帳戶,請按照下列步驟操作:

  1. 設定 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 服務帳戶電子郵件地址。

刪除命名空間服務帳戶

控制台

如要從命名空間中刪除命名空間服務帳戶,請按照下列步驟操作:

  1. 在 Cloud Data Fusion 執行個體中,依序點選「系統管理」>「設定」>「命名空間」
  2. 按一下要刪除服務帳戶的命名空間。
  3. 如要移除服務帳戶,請前往「服務帳戶」分頁標籤。在服務帳戶名稱旁邊,依序點按 「選單」>「刪除」

REST API

如要從命名空間中刪除命名空間服務帳戶,請按照下列步驟操作:

  1. 設定 environment variables,然後執行下列指令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
    

    更改下列內容:

    • NAMESPACE_NAME:命名空間的 ID。

取得命名空間服務帳戶

控制台

如要取得命名空間的服務帳戶資訊,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Cloud Data Fusion「Instances」(執行個體) 頁面,然後在 Cloud Data Fusion 網頁介面中開啟執行個體。

    前往「Instances」(執行個體) 頁面

  2. 依序點選「系統管理員」>「設定」>「命名空間」

  3. 按一下命名空間名稱,即可查看服務帳戶詳細資料。

REST API

如要取得命名空間服務帳戶名稱,請按照下列步驟操作:

  1. 設定 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"}
    

後續步驟