借助基于 Dataproc 服务账号的安全多租户(以下称为“安全多租户”),您可以与多个用户共享集群,并在创建集群时将一组用户映射到服务账户。借助安全的多租户,用户可以将交互式工作负载提交到具有隔离用户身份的集群。
当用户将作业提交到集群时,作业将:
以具有特定 Kerberos 主账号的特定操作系统用户身份运行
使用映射的服务账号凭据访问 Google Cloud 资源
注意事项和限制
创建启用了安全多租户的集群时:
您只能通过 Dataproc Jobs API 提交作业。
集群仅适用于具有映射服务账号的用户。例如,未映射的用户无法在集群上运行作业。
服务账号只能映射到 Google 用户,而不能映射到 Google 群组。
Dataproc 组件网关未启用。
对集群和 Compute Engine 功能的直接 SSH 访问(例如,在集群虚拟机上运行启动脚本的功能)都会被屏蔽。此外,作业无法使用
sudo
权限运行。在该集群上启用并配置 Kerberos,可实现集群内通信。不支持通过 Kerberos 对最终用户进行身份验证。
不支持 Dataproc 工作流。
创建安全的多租户集群
如需创建 Dataproc 安全的多租户集群,请使用 --secure-multi-tenancy-user-mapping
标志指定用户到服务账号的映射列表。
示例:
以下命令会创建一个用户(包含用户)集群,其会将 bob@my-company.com
映射到服务账号 service-account-for-bob@iam.gserviceaccount.com
并将用户 alice@my-company.com
映射到服务账号 service-account-for-alice@iam.gserviceaccount.com
中。
gcloud dataproc clusters create my-cluster \ --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
或者,您也可以将用户与服务账号的映射列表存储在本地或 Cloud Storage YAML 或 JSON 文件中。使用 --identity-config-file
标志指定文件位置。
身份配置文件示例:
user_service_account_mapping: bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com
使用 --identity-config-file
标志创建集群的示例命令:
gcloud dataproc clusters create my-cluster \ --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
注意:
如上述命令所示,集群
--scopes
必须包含至少https://www.googleapis.com/auth/iam
,需要集群服务账号才能执行模拟。集群服务账号必须有权限模拟映射到用户的服务账号(请参阅服务账号权限)。
建议:为不同的集群使用不同的集群服务账号,以使每个集群服务账号只能模拟有限的一组已映射的用户服务账号。