本页面介绍如何在 Cloud Data Fusion 实例中开始使用基于角色的访问权限控制 (RBAC)。运行 6.5 版及更高版本的 Cloud Data Fusion 实例可以使用 RBAC。
如需了解详情,请参阅基于角色的访问权限控制 (RBAC) 概览。
建议:除非出于自动化目的而需要,否则 使用 Google Cloud 控制台执行 RBAC 任务。
为现有实例启用 RBAC
您可以为现有 Cloud Data Fusion 启用 RBAC 在 6.5 或更高版本中运行的实例。
控制台
如需在现有 Cloud Data Fusion 实例上启用 RBAC,请执行以下操作:
- 前往实例详情:
在 Google Cloud 控制台中,转到 Cloud Data Fusion 页面。
点击实例,然后点击相应实例的名称以转到实例详情页面。
- 确保实例已升级到 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。将 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 页面。
点击实例,然后点击相应实例的名称以转到实例详情页面。
点击停用 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。将 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 实例页面。
点击实例。
点击创建实例,然后输入实例详细信息。
选择企业版。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 的实例,请在实例选项中传递设置为 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 权限页面。
点击 Add 图标
。添加用户access 对话框。
在新成员字段中,输入要授予其角色的正文(用户、群组或服务账号电子邮件)列表。
选中要为其授予这些权限的每个实例旁边的复选框 权限。
转到角色列,然后选择 所选实例。
如需授予实例管理员权限,请选择实例 管理员。
如需授予命名空间级别权限,请选择 Namespace User。
如果您要授予命名空间级别权限,请点击 选择。
系统会打开添加访问权限对话框。
选择一个命名空间,然后选择要向该命名空间授予的预定义 Cloud Data Fusion 角色。
点击选择以保存新设置。
可选:如需为其他实例授予命名空间权限,请执行以下操作: 重复第 5 步。
点击保存。
如需验证已授予的角色,请参阅 在 Google Cloud 控制台中验证角色。
gcloud
您可以使用 Google Cloud CLI 以编程方式控制访问权限。
如需使用 gcloud CLI 授予角色,请使用以英文逗号分隔的 用户标识符,并采用以下格式:
[user|group|serviceAccount][email_address]
请提供以下值:
user:useremail@example.com
group:groupemail@example.com
serviceAccount:serviceaccount@project.iam.gserviceaccount.com
如需查看更多示例,请参阅授予角色。
授予 Instance Accessor 角色(必填)
您必须先通过向用户授予实例的 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:用户类型可以是用户、群组或 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:用户类型可以是用户、群组或 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 替换为以下某个值:
- 对于命名空间的 Editor 角色,请使用
datafusion.editor
- 对于命名空间的 Operator 角色,请使用
datafusion.operator
- 对于命名空间的 Developer 角色,请使用
datafusion.developer
- 对于命名空间的 Viewer 角色,请使用
datafusion.viewer
- 对于命名空间的 Editor 角色,请使用
可选:撤消命名空间角色
如需撤消授予给定命名空间的用户的角色,请使用以下命令:
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 角色(必填)
您必须先通过向用户授予实例的 Accessor 角色,向他们授予对实例的访问权限。
强烈建议:使用 gcloud CLI 授予 Accessor 角色。
授予对实例的 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:用户类型可以是用户、群组或 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 替换为以下值之一:
- 对于命名空间的 Editor 角色,请使用
datafusion.editor
- 对于命名空间的 Operator 角色,请使用
datafusion.operator
- 对于命名空间的 Developer 角色,请使用
datafusion.developer
- 对于命名空间的 Viewer 角色,请使用
datafusion.viewer
- 对于命名空间的 Editor 角色,请使用
运行以下命令以更新政策文件:
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 中的现有角色 权限页面。
使用政策文件验证角色
验证是否已将角色授予 使用如下命令的 IAM 政策文件: gcloud CLI 或 REST API
在以下 IAM 政策文件示例中,用户 alice@example.com
具有 Data Fusion Developer 角色:
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