使用角色型存取權控管

本頁說明如何在 Cloud Data Fusion 執行個體中開始使用角色型存取權控管 (RBAC)。RBAC 適用於 6.5 以上版本的 Cloud Data Fusion 執行個體。

詳情請參閱角色型存取權控管 (RBAC) 總覽。

建議:除非是為了自動化,否則請使用 Google Cloud 控制台執行 RBAC 工作。

為現有執行個體啟用 RBAC

您可以為執行 6.5 以上版本的現有 Cloud Data Fusion 執行個體啟用 RBAC。

控制台

如要在現有的 Cloud Data Fusion 執行個體上啟用 RBAC,請按照下列步驟操作:

  1. 前往執行個體詳細資料:
    1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。

    2. 按一下「Instances」(執行個體) ,然後點選執行個體名稱,前往「Instance details」(執行個體詳細資料) 頁面。

      前往「Instances」(執行個體)

  2. 確認執行個體已升級至 6.5 以上版本。如果執行個體版本低於 6.5,請升級至 6.5 以上版本。
  3. 按一下「啟用 RBAC」。
  4. 按一下 [儲存]。
  5. 等待執行個體更新作業完成。

gcloud

如要在現有的 Cloud Data Fusion 執行個體上啟用 RBAC,請執行下列指令:

gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID

REST API

使用 Cloud Data Fusion patch API,為現有執行個體啟用 RBAC。將 enableRbac 旗標設為 true,並使用 updateMask 查詢參數,範例如下:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'

停用現有執行個體的 RBAC

如果您有已啟用 RBAC 的現有執行個體,可以視需要停用 RBAC。停用 RBAC 不會影響執行個體中的任何現有管道或設定。這項功能只會停用跨命名空間的安全隔離機制。

控制台

如要停用現有 Cloud Data Fusion 執行個體的 RBAC,請按照下列步驟操作:

  1. 前往執行個體詳細資料:

    1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。

    2. 按一下「Instances」(執行個體) ,然後點選執行個體名稱,前往「Instance details」(執行個體詳細資料) 頁面。

      前往「Instances」(執行個體)

  2. 按一下「停用 RBAC」。

  3. 按一下 [儲存]。

  4. 等待執行個體更新作業完成。

gcloud

如要為現有執行個體停用 RBAC,請使用 --no-enable_rbac 引數,而非 --enable-rbac。

gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID

使用範例:

gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance

REST API

使用 Cloud Data Fusion patch API,為現有執行個體停用 RBAC。將 enableRbac 旗標設為 false,並使用 updateMask 查詢參數,範例如下:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'

建立啟用 RBAC 的新執行個體

控制台

如要建立已啟用 RBAC 的新 Cloud Data Fusion 執行個體,請按照下列步驟操作:

  1. 前往 Cloud Data Fusion 的「Instances」(執行個體) 頁面。

  2. 按一下「執行個體」。

    前往「Instances」(執行個體)

  3. 按一下「建立執行個體」,然後輸入執行個體詳細資料。

  4. 選取「Enterprise」。RBAC 僅支援 Enterprise 版。

  5. 在「進階選項」中,選取「啟用精細的角色型存取控管」。

    這項功能僅適用於使用 Cloud Data Fusion 6.5 以上版本的執行個體。

  6. 點選「建立」。

gcloud

如要建立啟用 RBAC 的新執行個體,請執行下列指令:

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0

使用範例:

gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0

REST API

如要使用 REST API 建立啟用 RBAC 的執行個體,請在執行個體選項中傳遞設為 true 的 enableRbac 旗標,如下列指令所示:

export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'

將預先定義的 Cloud Data Fusion 角色授予使用者 (必要)

啟用 RBAC 後,您可以將角色授予主體,讓他們在執行個體或命名空間中執行特定動作。如要決定最符合您需求的角色,請參閱預先定義的 Cloud Data Fusion 角色和安全性建議。

控制台

如要將預先定義的 Cloud Data Fusion 角色授予主體,請按照下列步驟操作:

  1. 前往 Cloud Data Fusion 的「Permissions」(權限) 頁面。

    前往「權限」

  2. 按一下「新增」圖示 。

    系統隨即會開啟「新增使用者存取權」對話方塊。

  3. 在「New members」(新增成員) 欄位中,輸入要授予角色的主體清單 (使用者、群組或服務帳戶電子郵件)。

  4. 選取要授予這些權限的每個執行個體旁邊的方塊。

    選取執行個體

  5. 前往「角色」欄,然後選取所選執行個體旁邊的下拉式選單。

    1. 如要授予執行個體管理員權限,請選取「執行個體管理員」。

    2. 如要授予命名空間層級的權限,請選取「命名空間使用者」。

      選取命名空間使用者角色

      1. 如要授予命名空間層級的權限,請按一下「選取」。

        「新增存取權」對話方塊隨即開啟。

      2. 選取命名空間,然後選取要為命名空間授予的預先定義 Cloud Data Fusion 角色。

      3. 按一下「選取」即可儲存新設定。

      4. 選用:如要授予其他執行個體的命名空間權限,請重複執行步驟 5。

  6. 按一下 [儲存]。

    如要驗證已授予的角色,請參閱「在 Google Cloud 控制台中驗證角色」。

gcloud

您可以使用 Google Cloud CLI 透過程式輔助方式控管存取權。

如要使用 gcloud CLI 授予角色,請使用以半形逗號分隔的使用者 ID 清單,格式如下:

[user|group|serviceAccount][email_address]

提供以下這些值:

  • user:useremail@example.com
  • group:groupemail@example.com
  • serviceAccount:serviceaccount@project.iam.gserviceaccount.com

如需更多範例,請參閱「授予角色」。

授予執行個體存取者角色 (必要)

您必須先授予使用者執行個體的存取權,方法是在執行個體上授予「存取者」角色:

  1. 使用下列指令匯出下列變數,並將變數換成您自己的值:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    將下列變數替換為您自己的值:

    • PROJECT_ID:專案名稱。
    • INSTANCE_ID:執行個體的名稱。
    • REGION:專案所屬的區域。
    • EMAIL:主體的電子郵件地址。
    • USER_TYPE:使用者類型可以是 user、group 或 serviceAccount。
  2. 執行下列指令來指派角色:

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
    

將角色授予命名空間 (視用途而定)

視用途而定,使用下列指令授予角色:

  1. 使用下列指令匯出下列變數,並將變數換成您自己的值:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    

    將下列變數替換為您自己的值:

    • PROJECT_ID:專案名稱。
    • INSTANCE_ID:執行個體的名稱。
    • REGION:專案所屬的區域。
    • NAMESPACE:命名空間名稱。
    • EMAIL:主體的電子郵件地址。
    • USER_TYPE:使用者類型可以是 user、group 或 serviceAccount。
  2. 執行下列指令,在指定命名空間中將角色指派給主體:

    gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"
    

    將 ROLE_NAME 替換為下列其中一個值:

    • 如要為命名空間指派編輯者角色,請使用 datafusion.editor
    • 如要為命名空間設定「運算子」角色,請使用 datafusion.operator
    • 如要為命名空間指派開發人員角色,請使用 datafusion.developer
    • 如要為命名空間指派檢視者角色,請使用 datafusion.viewer

選用:撤銷命名空間角色

如要撤銷授予使用者的特定命名空間角色,請使用下列指令:

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"

選用:列出在特定命名空間中授予的角色

如要列出特定命名空間中授予的所有角色,請使用下列指令擷取 IAM 政策:

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

REST API

授予執行個體存取者角色 (必要)

您必須先授予使用者執行個體的存取權,方法是在執行個體上授予「存取者」角色。

強烈建議:使用 gcloud CLI 授予「存取者」角色。

  1. 授予執行個體的存取者角色:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export USER_ID=EMAIL
    # User type can be one of: user, group, or serviceAccount.
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  2. 擷取目前的身分與存取權管理政策,並儲存至檔案:

    gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json
    
  3. 在政策中新增角色和使用者的繫結。例如:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/datafusion.accessor",
            "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    
  4. 更新執行個體的 IAM 政策:

    gcurl \
      -d @iam_policy.json \
      https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
    

將角色授予命名空間 (視用途而定)

視用途而定,使用下列指令授予角色:

  1. 使用下列指令匯出下列變數,並將變數換成您自己的值:

    export PROJECT=PROJECT_ID
    export INSTANCE=INSTANCE_ID
    export REGION=REGION
    export NAMESPACE=NAMESPACE
    export USER_ID=EMAIL
    export USER_TYPE=USER_TYPE
    alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    

    將下列變數替換為您自己的值:

    • PROJECT_ID:專案名稱。
    • INSTANCE_ID:執行個體的名稱。
    • REGION:專案所屬的區域。
    • NAMESPACE:命名空間名稱。
    • EMAIL:主體的電子郵件地址。
    • USER_TYPE:使用者類型可以是 user、group 或 serviceAccount。
  2. 擷取目前的身分與存取權管理政策,並儲存至檔案:

      gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json
    

    請將 iam_policy.json 替換成您的檔案名稱。

  3. 在政策檔案中新增角色和使用者的繫結。舉例來說,政策檔案可能如下所示:

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/ROLE_NAME",
              "members": [
              "${USER_TYPE}:${USER_ID}"
            ]
          }
        ]
      }
    }
    

    您可以為特定政策指定多個角色繫結,也可以在特定角色繫結的成員清單中指定多個主體。針對指定主體,將 ROLE_NAME 替換為下列其中一個值:

    • 如要為命名空間指派編輯者角色,請使用 datafusion.editor
    • 如要為命名空間設定「運算子」角色,請使用 datafusion.operator
    • 如要為命名空間指派開發人員角色,請使用 datafusion.developer
    • 如要為命名空間指派檢視者角色,請使用 datafusion.viewer
  4. 執行下列指令來更新政策檔案:

    gcurl -d @iam_policy.json \
    https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicy
    

    請將 iam_policy.json 替換成您的檔案名稱。

在 Google Cloud 控制台中驗證角色

在 Cloud Data Fusion 的「Permissions」(權限) 頁面中,查看及編輯現有角色。

前往「權限」

使用政策檔案驗證角色

使用 gcloud CLI 或 REST API,在 IAM 政策檔案中,確認角色已授予正確的使用者。

在下列 IAM 政策檔案範例中,使用者 alice@example.com 具有 Data Fusion 開發人員角色:

bindings:
- members:
  - user:alice@example.com
  role: roles/datafusion.developer
- members:
  - user:bob@example.com
  - serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
  role: roles/datafusion.operator
- members:
  - user:james@example.com
  - user:mike@example.com
  - group:mygroup@googlegroups.com
  role: roles/datafusion.editor
etag: BwXA8BAHYmw=

取得執行個體的 IAM 政策

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy

取得命名空間的身分與存取權管理政策

gcloud

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}

cURL

export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy

後續步驟