apache-spark - 使用服务帐户和 IAM 角色管理 dataproc 集群访问

标签 apache-spark google-cloud-platform google-cloud-storage google-cloud-dataproc sre

我是云初学者,想限制我的 dataproc 集群 对我项目中给定的 gcs buckets 的访问。

假设我创建了一个名为 'data-proc-service-account@my-cloud-project.iam.gserviceaccount.com'服务帐户 然后我创建一个 dataproc 集群并为其分配服务帐户。

现在我创建了两个名为 as 的 gcs bucket

'gs://my-test-bucket/spark-input-files/'
'gs://my-test-bucket/spark-output-files/'

这些存储桶包含一些输入文件,我的 dataproc 集群上运行的 spark 作业需要访问这些文件,并且还充当我的 spark 作业可以写入一些输出文件的位置。

我想我必须去编辑我的存储桶权限,如给定链接所示。 Edit Bucket Permission

我希望我的 spark 作业只能从这个特定的存储桶 'gs://my-test-bucket/spark-input-files/' 中读取文件。 如果他们正在写入 gcs 存储桶,则他们只能写入 ''gs://my-test-bucket/spark-output-files/'

这里的问题是:(很可能是与 SRE 资源相关的问题)

我的数据处理服务账户需要添加哪些 IAM 权限 data-proc-service-account@my-cloud-project.iam.gserviceaccount.comIAM 控制台页面上。

以及需要为给定的特定存储桶添加哪些读/写权限,我认为必须通过添加成员并为其分配正确的权限来进行配置。 (如上述链接所示)

我是否需要将我的数据处理服务帐户添加为成员,并且可以在这两个角色下方添加。这行得通吗?

Storage Object Creator  for bucket 'gs://my-test-bucket/spark-output-files/
Storage Object Viewer   for bucket 'gs://my-test-bucket/spark-input-files/'

如果我遗漏了什么或可以做一些更好的事情,请告诉我。

最佳答案

根据Dataproc IAM doc :

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.getstorage.objects.create。这些适用于任何存储桶。

您想要做的是为您的服务帐户授予与 dataproc.worker 角色几乎相同的权限,但将所有 storage.xxx.xxx 权限限制为Dataproc 暂存存储桶。然后另外,添加对输出存储桶的写入访问权限和对输入存储桶的读取访问权限。

或者,您可以在运行 Spark 作业时使用与 Dataproc 服务帐号不同的服务帐号。此作业特定服务帐户将只需要对输入存储桶的读取访问权限和对输出存储桶的写入访问权限。假设您使用 GCS 连接器(预装在 Dataproc 集群上)访问 GCS,您可以按照找到的说明进行操作 here .但在这种情况下,您必须在工作节点之间分发服务帐户 key 或将其放在 GCS/HDFS 中。

关于apache-spark - 使用服务帐户和 IAM 角色管理 dataproc 集群访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63145066/

相关文章:

hadoop - 如何阻止 HiveServer2 作为守护进程自动启动?

java - Apache Spark : Garbage Collection Logs for Driver

apache-spark - 通过PySpark在Elasticsearch中插入数组

scala - 具有特征的 Spark 2.0 数据集编码器

javascript - 如何在Firebase存储触发功能中获取公共(public)下载链接: "onFinalize"?

google-cloud-platform - 自动执行GCP永久磁盘初始化

tensorflow - 如何将签名名称设置为serving_default以避免部署到GCP AI Platform后出现错误

ios - Google Cloud Storage iOS - 无身份验证

python - 从 appengine 应用上传文件到谷歌云存储

google-cloud-platform - Google Cloud CDN 开始忽略存储桶的查询字符串