Cloud Data Fusion 的角色式存取控管 (RBAC) 功能,可讓您管理執行個體和命名空間的使用者授權。這種存取模式可控管哪些人能查看、設計及執行整合工作負載,協助您隔離工作區並保護管道。
RBAC 適用於 6.5 以上版本的 Cloud Data Fusion 執行個體。除非需要自動化,否則請使用Google Cloud 控制台執行 RBAC 工作。詳情請參閱「角色式存取控管 (RBAC) 簡介」。
為現有執行個體啟用 RBAC
您可以為 6.5 以上版本的現有 Cloud Data Fusion 執行個體啟用 RBAC。
控制台
如要在現有 Cloud Data Fusion 執行個體啟用 RBAC,請按照下列步驟操作:
- 前往執行個體詳細資料:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。
按一下「Instances」(執行個體) ,然後點選執行個體名稱,前往「Instance details」(執行個體詳細資料) 頁面。
- 請確認執行個體已升級至 6.5 以上版本。如果執行個體版本早於 6.5,請升級至 6.5 以上版本。
- 按一下「啟用 RBAC」。
- 按一下 [儲存]。
- 等待執行個體更新作業完成。
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,請按照下列步驟操作:
前往執行個體詳細資料:
在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。
按一下「Instances」(執行個體) ,然後點選執行個體名稱,前往「Instance details」(執行個體詳細資料) 頁面。
按一下「停用角色式存取控管」。
按一下 [儲存]。
等待執行個體更新作業完成。
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 執行個體,請按照下列步驟操作:
前往 Cloud Data Fusion 的「Instances」(執行個體) 頁面。
按一下「執行個體」。
按一下「建立執行個體」,然後輸入執行個體詳細資料。
選取「Enterprise 版本」。RBAC 僅適用於 Enterprise 版。
在「Advanced options」(進階選項) 中,選取「Enable Granular Role-Based Access Control」(啟用精細的角色式存取控管)。
這項功能僅適用於使用 Cloud Data Fusion 6.5 以上版本的執行個體。
點選「建立」。
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 角色授予主體,請按照下列步驟操作:
前往 Cloud Data Fusion 的「Permissions」(權限) 頁面。
按一下「新增」圖示 。
「新增使用者存取權」對話方塊隨即開啟。
在「New members」(新成員) 欄位中,輸入要授予角色的主體 (使用者、群組或服務帳戶電子郵件) 清單。
找出要授予這些權限的執行個體,並勾選旁邊的方塊。

前往「Role」(角色) 欄,然後選取所選執行個體旁的下拉式選單。
如要授予執行個體管理員權限,請選取「Instance Admin」(執行個體管理員)。
如要授予命名空間層級權限,請選取「Namespace User」(命名空間使用者)。

如要授予命名空間層級權限,請按一下「Select」(選取)。
「新增存取權」對話方塊隨即開啟。
選取命名空間,以及要為命名空間授予的預先定義 Cloud Data Fusion 角色。
按一下「選取」,儲存新設定。
選用:如要授予其他執行個體的命名空間權限,請重複步驟 5。
按一下 [儲存]。
如要驗證已授予的角色,請參閱「在 Google Cloud 控制台中驗證角色」。
gcloud
您可以使用 Google Cloud CLI,透過程式輔助方式控管存取權。
如要使用 gcloud CLI 授予角色,請使用以半形逗號分隔的使用者 ID 清單,格式如下:
[user|group|serviceAccount][email_address]
提供以下這些值:
user:useremail@example.comgroup:groupemail@example.comserviceAccount:serviceaccount@project.iam.gserviceaccount.com
如需更多範例,請參閱「授予角色」。
授予執行個體存取子角色 (必要)
您必須先授予使用者執行個體的存取子角色,才能授予執行個體的存取權:
使用下列指令匯出下列變數,並將變數替換為您自己的值:
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。
執行下列指令來指派角色:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
將角色授予命名空間 (視用途而定)
視用途而定,使用下列指令授予角色:
使用下列指令匯出下列變數,並將變數替換為您自己的值:
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。
執行下列指令,將角色指派給指定命名空間中的主體:
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 授予存取子角色。
授予執行個體的存取子角色:
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"'擷取目前的 IAM 政策,並儲存至檔案:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.json在政策中新增角色和使用者的繫結。例如:
{ "policy": { "bindings": [ { "role": "roles/datafusion.accessor", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }更新執行個體的 IAM 政策:
gcurl \ -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
將角色授予命名空間 (視用途而定)
視用途而定,使用下列指令授予角色:
使用下列指令匯出下列變數,並將變數替換為您自己的值:
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。
擷取目前的 IAM 政策,並儲存至檔案:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.json將 iam_policy.json 替換為您自己的檔案名稱。
在政策檔案中,為角色和使用者新增繫結。例如,政策檔案可能如下所示:
{ "policy": { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }您可以為特定政策指定多個角色繫結,也可以在特定角色繫結的「members」清單中指定多個主體。針對特定主體,請將 ROLE_NAME 替換為下列其中一個值:
- 如要為命名空間指派編輯者角色,請使用
datafusion.editor - 如要為命名空間指派操作員角色,請使用
datafusion.operator - 如要為命名空間指派開發人員角色,請使用
datafusion.developer - 如要取得命名空間的檢視者角色,請使用
datafusion.viewer
- 如要為命名空間指派編輯者角色,請使用
執行下列指令來更新政策檔案:
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
取得命名空間的 IAM 政策
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
後續步驟
- 進一步瞭解 Cloud Data Fusion 的角色式存取控管。