无法将 Dataproc 集群用于具有 GCS 且对用户的访问受限的多用户

Posted

技术标签:

【中文标题】无法将 Dataproc 集群用于具有 GCS 且对用户的访问受限的多用户【英文标题】:Unable to use Dataproc cluster for multi user with GCS with restricted access to users 【发布时间】:2019-04-02 06:56:51 【问题描述】:

@丹尼斯霍

Using non-default service account in Google Cloud dataproc

继续上面的问题

我想为多用户设置一个 dataproc 集群。由于 Dataproc 集群的计算引擎使用默认服务或自定义服务帐户凭据使用 --properties core:fs.gs.auth.service.account.json.keyfile 连接到存储桶,这与提交作业的用户主体没有任何关系,或者我找不到控制它的选项,这使得 dataproc 集群不安全并产生一个问题当使用的密钥文件与主体不对应时,它会在多用户环境中引入另一个级别的间接性。

在我的情况下,我们使用 gcloud dataproc jobs submit hadoop 提交作业,因为我的想法是使用 IAM 角色控制对 dataproc 集群的访问,但是在作业提交期间,用户主体没有转发到 hadoop 集群以及 gcloud cli不对客户端的存储桶执行任何访问验证,作业始终以root 用户身份执行。我可以知道如何将用户映射到他们的服务帐户对于这种情况您有什么解决方案吗?

我们只需要用户使用gcloud dataproc jobs submit hadoop 提交的 Hadoop Map Reduce 应该只能使用用户有权访问的存储桶或文件夹。

当前:

gcloud dataproc 作业(IAM - 用户主体) -> Dataproc 集群(IAM - 用户主体) -> (SA 默认/自定义) -> 存储桶

如果用户有权向 Dataproc 集群提交作业可以使用服务帐户有权访问的任何存储桶。

必填:

gcloud dataproc 作业(IAM - 用户主体) -> Dataproc 集群(IAM - 用户主体) -> (IAM - 用户主体) -> 存储桶

用户有权向 Dataproc 集群提交作业只能使用用户帐户有权访问的存储桶。

到目前为止,我还没有找到方法。你能帮我解决一下吗

是否有任何解决方法或解决方案可以解决此问题?

【问题讨论】:

【参考方案1】:

你可以试试这个:

    添加自定义角色,例如为 BucketA 创建 roleA/为 BucketB 创建 roleB 将服务帐户或 IAM 分配给此角色。例如 user1,user2 roleA user1,user3 roleB 通过编辑存储桶权限,将成员添加到特定角色,例如bucketA -> roleA

那么用户有权向 Dataproc 集群提交作业只能使用该用户帐户有权访问它的存储桶。

【讨论】:

以上是关于无法将 Dataproc 集群用于具有 GCS 且对用户的访问受限的多用户的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Cloud Function 运行创建 Dataproc 集群、运行作业、删除集群

将数据从 gs 存储桶移动到 s3 亚马逊存储桶的 GCP dataproc 集群 hadoop 作业失败 [控制台]

将数据从 BigQuery 表加载到 Dataproc 集群时出错

将 SQLserver jdbc 驱动程序连接到 Dataproc 集群

具有内部 IP 地址且无 SSH 访问权限的 DataProc HUB 实例

Google Cloud Dataproc 无法使用初始化脚本创建新集群