使用服务帐户和IAM角色管理Dataproc群集访问

时间:2020-07-29 01:33:49

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

我是云计算的初学者,想将dataproc cluster的访问权限限制为项目中给定的gcs buckets

让我们说我已经创建了一个名为service account的{​​{1}} 然后创建一个dataproc集群并为其分配服务帐户。

现在,我创建了两个名为的gcs存储桶

'data-proc-service-account@my-cloud-project.iam.gserviceaccount.com'

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

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

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

此处的问题是:(最有可能与 SRE 资源相关的问题)

所有IAM权限需要添加到我的数据处理服务帐户中是什么 ''gs://my-test-bucket/spark-output-files/'控制台页面上的data-proc-service-account@my-cloud-project.iam.gserviceaccount.com

,以及需要为给定的特定存储桶添加所有读取/写入权限的内容,我认为必须通过添加成员并为其分配权限来进行配置。 (如上面提到的链接所示)

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

IAM

如果有任何遗漏或可以做的更好的事情,也请告知我。

1 个答案:

答案 0 :(得分:1)

根据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中的说明进行操作。但是在这种情况下,您将不得不在辅助节点之间分发服务帐户密钥,或者将其放入GCS / HDFS中。