本頁面說明如何在 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,請按照下列步驟操作:
- 前往執行個體詳細資料:
在 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 修補 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」(執行個體詳細資料) 頁面。
按一下「Disable 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 修補 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 版本」。只有 Enterprise 版支援 RBAC。
在「進階選項」中,選取「啟用精細的角色型存取控管」。
這項功能僅適用於使用 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 的執行個體,請在執行個體選項中將 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 角色授予主體,請按照下列步驟操作:
前往 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.com
group:groupemail@example.com
serviceAccount:serviceaccount@project.iam.gserviceaccount.com
如需更多範例,請參閱「授予角色」。
授予 Instance Accessor 角色 (必要)
您必須先授予使用者執行個體的存取權,方法是在執行個體上授予使用者「存取者」角色:
使用下列指令匯出下列變數,並將變數替換為您自己的值:
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:使用者類型可以是使用者、群組或服務帳戶。
執行下列指令來指派角色:
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:使用者類型可以是使用者、群組或服務帳戶。
執行下列指令,為特定命名空間中的主體指派角色:
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 角色。
授予執行個體的存取者角色:
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:使用者類型可以是使用者、群組或服務帳戶。
擷取目前的 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}" ] } ] } }
您可以為特定政策指定多個角色繫結,並在特定角色繫結的「成員」清單中指定多個主要使用者。針對特定管理員,將 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 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