使用角色型存取權控管

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

詳情請參閱以角色為基礎的存取權控管 (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 修補 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. 按一下「Disable 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 修補 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 版本」。只有 Enterprise 版支援 RBAC。

  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 的執行個體,請在執行個體選項中將 enableRbac 標記設為 true,如以下指令所示:

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

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

授予 Instance Accessor 角色 (必要)

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

  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:使用者類型可以是使用者、群組或服務帳戶。
  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:使用者類型可以是使用者、群組或服務帳戶。
  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

授予 Instance Accessor 角色 (必要)

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

強烈建議:使用 gcloud CLI 授予 Accessor 角色。

  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. 擷取目前的 IAM 政策並儲存至檔案:

    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:使用者類型可以是使用者、群組或服務帳戶。
  2. 擷取目前的 IAM 政策並儲存至檔案:

      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 Policy 檔案中授予角色的使用者正確無誤。

在以下 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

後續步驟