本頁說明如何在 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,請按照下列步驟操作:
- 前往執行個體詳細資料:
在 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」(執行個體詳細資料) 頁面。
按一下「停用 RBAC」。
按一下 [儲存]。
等待執行個體更新作業完成。
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 版。
在「進階選項」中,選取「啟用精細的角色型存取控管」。
這項功能僅適用於使用 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」(新增成員) 欄位中,輸入要授予角色的主體清單 (使用者、群組或服務帳戶電子郵件)。
選取要授予這些權限的每個執行個體旁邊的方塊。

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

如要授予命名空間層級的權限,請按一下「選取」。
「新增存取權」對話方塊隨即開啟。
選取命名空間,然後選取要為命名空間授予的預先定義 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"'擷取目前的身分與存取權管理政策,並儲存至檔案:
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。
擷取目前的身分與存取權管理政策,並儲存至檔案:
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}" ] } ] } }您可以為特定政策指定多個角色繫結,也可以在特定角色繫結的成員清單中指定多個主體。針對指定主體,將 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
取得命名空間的身分與存取權管理政策
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