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

本頁面說明如何為 Cloud Data Fusion 執行個體中的命名空間設定身分和存取權管理 (IAM) 服務帳戶。

關於 Cloud Data Fusion 中的命名空間

命名空間是 Cloud Data Fusion 執行個體中應用程式、資料和相關中繼資料的邏輯群組。您可以將命名空間視為執行個體的分區。任何應用程式或資料 (在此稱為「實體」) 都可以獨立存在於多個命名空間中。在單一例項中,一個命名空間會將實體的資料和中繼資料獨立儲存在另一個命名空間中。

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

如要控管對 Google Cloud 資源的存取權,Cloud Data Fusion 中的命名空間預設會使用 Cloud Data Fusion API 服務代理人

為達到更好的資料隔離,您可以將自訂 IAM 服務帳戶 (稱為「每個命名空間的服務帳戶」) 與每個命名空間建立關聯。自訂的 IAM 服務帳戶可用於不同命名空間,讓您控管命名空間之間的Google Cloud 資源存取權,以便在 Cloud Data Fusion 中執行管道設計階段作業,例如管道預覽、Wrangler 和管道驗證。

事前準備

  • 在啟用 RBAC 的 Cloud Data Fusion 6.10.0 以上版本執行個體中,每個命名空間服務帳戶都支援。
  • 每個命名空間的服務帳戶可用於控制和管理 Google Cloud 資源的存取權。

必要角色和權限

如要取得自訂命名空間服務帳戶所需的權限,並在命名空間中授予使用者權限,請向管理員要求在專案的 Cloud Data Fusion 執行個體上授予您「Cloud Data Fusion 管理員」 (roles/datafusion.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

管理命名空間中使用者的權限

如要授予使用者在命名空間中所需的權限,請將預先定義的 Cloud Data Fusion 角色授予使用者。詳情請參閱支援 RBAC 的執行個體中可供使用者使用的預先定義 Cloud Data Fusion 角色

設定命名空間服務帳戶

控制台

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

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

    前往「Instances」(執行個體)

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

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

  5. 按一下「Service accounts」分頁,然後點選「Add service account」

    「Add Service Account」(新增服務帳戶) 按鈕。

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

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

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

  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 會顯示在「Instance details」頁面上。

        前往「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. 如要移除服務帳戶,請前往「Service accounts」(服務帳戶) 分頁。依序按一下服務帳戶名稱旁邊的「選單」圖示 >「刪除」

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"}
    

後續步驟