使用服务帐户和iam角色管理dataproc集群访问

qxgroojn  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(434)

我是云计算的初学者,想限制我的学习 dataproc cluster 访问给定的 gcs buckets 在我的项目中。
假设我创造了一个 service account 命名为 'data-proc-service-account@my-cloud-project.iam.gserviceaccount.com' 然后我创建一个dataproc集群并为其分配服务帐户。
现在我已经创建了两个gcs bucket,名为

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

这些bucket保存了一些输入文件,这些文件需要由在我的dataproc集群上运行的spark作业访问,还充当spark作业可以在其中写入一些输出文件的位置。
我想我必须去编辑我的bucket权限,如给定的链接所示。编辑bucket权限
我希望我的spark工作只能从这个特定的bucket读取文件 'gs://my-test-bucket/spark-input-files/' . 如果他们正在写gcs bucket,他们只能写gcs bucket ''gs://my-test-bucket/spark-output-files/' 这里的问题是:(很可能是与sre资源相关的问题)
需要向我的data proc服务帐户添加哪些所有iam权限 data-proc-service-account@my-cloud-project.iam.gserviceaccount.comIAM 控制台页面。
对于给定的特定bucket,需要添加哪些读/写权限,我认为必须通过添加成员并为其分配正确的权限来配置(如上述链接所示)
我是否需要添加我的数据处理服务帐户作为一个成员,并可以添加以下这两个角色。这样行吗?

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

也让我知道,如果我错过了什么或更好的事情可以做。

hyrbngr7

hyrbngr71#

根据dataproc iam文档:

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.. 对dataproc暂存存储桶的权限。然后,将写访问权限添加到输出bucket,将读访问权限添加到输入bucket。
或者在运行spark作业时,可以使用与dataproc服务帐户不同的服务帐户。此特定于作业的服务帐户将只需要对输入bucket的读取权限和对输出bucket的写入权限。假设您使用gcs连接器(预安装在dataproc集群上)访问gcs,您可以按照这里的说明进行操作。但是在这种情况下,您必须将服务帐户密钥分布在工作节点上,或者将其放入gcs/hdfs中。

相关问题