我们是否可以在一个Dataproc集群中使用多个服务帐户。
假设我有3个存储桶:服务帐户A对存储桶A具有r/w访问权限,对存储桶B和C具有r个访问权限。服务帐户B对存储桶B具有r/w访问权限,对存储桶A和C具有r个访问权限。服务帐户C对存储桶C具有r/w访问权限,对存储桶A和B具有r个访问权限
我是否可以使用服务帐户D启动一个集群,但在作业中使用上面定义的每个服务帐户(A、B和C)来获得对存储桶的适当访问权限?
发布于 2017-04-07 07:23:39
可以将GCS Connector for Hadoop配置为使用与GCE元数据服务器提供的帐户不同的服务帐户。使用此机制,可以使用不同的服务帐户访问不同的存储桶。
要使用json密钥文件而不是元数据,应该将配置密钥"google.cloud.auth.service.account.json.keyfile“设置为集群中每个节点本地的JSON密钥文件的位置。如何设置该密钥将取决于正在访问文件系统的上下文。对于标准的MR作业,仅访问单个存储桶,您可以在JobConf上设置该键/值对。如果通过Hadoop接口访问FileSystrem,那么可以在获取适当的FileSystem实例时使用的Configuration对象中指定该键/值对。
也就是说,Dataproc不会试图将单独的应用程序彼此隔离。因此,如果您的意图是多租户集群,那么围绕单个作业没有足够的安全边界来保证任何作业不会恶意尝试从另一个作业获取凭据。
如果您的目的不是多租户集群,请考虑创建一个特定于任务的服务帐户,该帐户允许对需要与之交互的所有存储桶进行读或写访问。例如,如果您有一个读取和写入多个存储桶的作业“元分析”,则可以创建一个具有该作业所需权限的服务帐户元分析。
发布于 2021-04-07 03:32:47
有了这个相对较新的特性(在撰写本文时已正式发布6个月),您可以尝试使用dataproc协作多租户将提交作业的用户帐户映射到服务帐户。以下是谷歌工程师撰写的优秀文章:https://cloud.google.com/blog/topics/developers-practitioners/dataproc-cooperative-multi-tenancy
https://stackoverflow.com/questions/43262414
复制相似问题