我是云计算的初学者,想限制我的学习 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.com
在 IAM
控制台页面。
对于给定的特定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/'
也让我知道,如果我错过了什么或更好的事情可以做。
1条答案
按热度按时间hyrbngr71#
根据dataproc iam文档:
这个
dataproc.worker
角色具有gcs相关权限的列表,包括storage.objects.get
以及storage.objects.create
. 这些适用于任何水桶。您要做的是,将几乎相同的权限授予您的服务帐户
dataproc.worker
角色,但限制所有storage..
对dataproc暂存存储桶的权限。然后,将写访问权限添加到输出bucket,将读访问权限添加到输入bucket。或者在运行spark作业时,可以使用与dataproc服务帐户不同的服务帐户。此特定于作业的服务帐户将只需要对输入bucket的读取权限和对输出bucket的写入权限。假设您使用gcs连接器(预安装在dataproc集群上)访问gcs,您可以按照这里的说明进行操作。但是在这种情况下,您必须将服务帐户密钥分布在工作节点上,或者将其放入gcs/hdfs中。