apache-spark - 使用服务帐号和 IAM 角色管理 dataproc 集群访问
问题描述
我是云初学者,我想限制我对项目中dataproc cluster
给定gcs buckets
的访问权限。
可以说我创建了一个service account
命名为'data-proc-service-account@my-cloud-project.iam.gserviceaccount.com'
,然后我创建了一个 dataproc 集群并为其分配了服务帐户。
现在我创建了两个名为的 gcs 存储桶
'gs://my-test-bucket/spark-input-files/'
'gs://my-test-bucket/spark-output-files/'
这些存储桶包含一些输入文件,这些文件需要由运行在我的 dataproc 集群上的 spark 作业访问,并且还充当我的 spark 作业可以写入一些输出文件的位置。
我想我必须去编辑我的存储桶权限,如给定链接所示。 编辑存储桶权限
我希望我的 spark 作业只能从这个特定的存储桶中读取文件'gs://my-test-bucket/spark-input-files/'
。如果他们正在写入 gcs 存储桶,他们只能写入''gs://my-test-bucket/spark-output-files/'
这里的问题是:(很可能是与SRE资源相关的问题)
需要
data-proc-service-account@my-cloud-project.iam.gserviceaccount.com
在IAM
控制台页面上将所有 IAM 权限添加到我的数据处理服务帐户中。
以及需要为给定的特定存储桶添加哪些所有读/写权限,我认为必须通过添加成员并为其分配正确的权限来配置。(如上面提到的链接所示)
我是否需要将我的数据处理服务帐户添加为成员,并且可以在这两个角色下面添加。这行得通吗?
Storage Object Creator for bucket 'gs://my-test-bucket/spark-output-files/
Storage Object Viewer for bucket 'gs://my-test-bucket/spark-input-files/'
如果我错过了任何事情或者可以做更好的事情,也请告诉我。
解决方案
To create a cluster with a user-specified service account, the specified service
account must have all permissions granted by the Dataproc Worker role. Additional
roles may be required depending on configured features.
该dataproc.worker
角色具有与 GCS 相关的权限列表,包括storage.objects.get
和storage.objects.create
. 这些适用于任何存储桶。
您想要做的是为您的服务帐户提供几乎相同的dataproc.worker
角色权限,但限制storage.xxx.xxx
对 Dataproc 暂存存储桶的所有权限。然后,添加对输出存储桶的写入访问权限和对输入存储桶的读取访问权限。
或者,您可以在运行 Spark 作业时使用与 Dataproc 服务帐号不同的服务帐号。此作业特定服务帐户只需要对输入存储桶的读取权限和对输出存储桶的写入权限。假设您使用 GCS 连接器(预装在 Dataproc 集群上)来访问 GCS,您可以按照此处的说明进行操作。但在这种情况下,您必须在工作节点之间分发服务帐户密钥或将其放在 GCS/HDFS 中。
推荐阅读
- selenium - 无法在硒的文本框中输入数字
- javascript - 打开授权代码流弹出窗口,获取令牌并在同一个按钮单击时使用它
- c# - KfxReleaseScript 中的 LogError()
- scala - 组织与类型关联的 Scala 隐式
- selenium - 如何在没有 AutoIt 的情况下在 selenium 中下载 chrome 文件时处理“保留”和“丢弃”选项?
- java - Soap 消息级安全性
- asp.net - EF Core 迁移:无法加载程序集“AssemblyName”
- html - 通过 CSS 在 img 顶部的水平和垂直线
- spring-boot - FeignClient API-Call with application/x-www-form-urlencoded HEADER
- php - 从电子邮件主题中提取 id 的正则表达式