Dataproc 初始化脚本的最低访问要求

Minimal access requirement for Dataproc initialization scripts

我有一个包含初始化操作的存储桶,它具有以下 ACL:

桶中的对象具有相同的ACL。虽然参与启动该集群的所有用户都应该具有访问权限(gcloud 运行s as deployment_service_user,worker 应该 运行 as dataproc_service_user),但我获得了以下访问权限错误:

  stderr: ERROR: (gcloud.beta.dataproc.clusters.create) INVALID_ARGUMENT: 
  Multiple validation errors:
   - Access denied for Google Cloud Storage object: 'gs://init-action-bucket/my-init-action.sh'

当我将以下规则添加到 ACL 时,它工作正常:

是否可以指定更具体的权限而不是允许项目查看者读取初始化操作?

感谢提问!这在文档中不是很清楚。

答案取决于您对数据处理 VM 使用的是默认服务帐户还是自定义服务帐户。

如果您指定了自定义服务帐户(如 gcloud 中的 --service-account),那么您应该授予 reader 对该帐户的访问权限。如果您使用的是自定义服务帐户,您仍然必须授予 reader 对默认服务帐户的访问权限(由于已知问题)。

另一方面,如果您没有明确指定服务帐户,那么您使用的是 Compute Engine 默认服务帐户。它通常看起来像这样:<your-project-number>-compute@developer.gserviceaccount.com。给这个帐户 reader。

创建集群的用户不需要在 init 操作上有 acls。