在Google Dataproc中使用多个服务帐户

时间:2017-04-06 17:51:04

标签: google-cloud-storage service-accounts google-cloud-dataproc

我们可以在一个Dataproc群集中使用多个服务帐户吗?

我们说我有3个桶: 服务帐户A具有对存储桶A的r / w访问权限,其中r访问存储桶B和C.服务帐户B具有对存储桶B的r / w访问权限,其中r访问存储桶A和C.服务帐户C具有r / w访问权限桶C,r访问桶A和B

我是否可以通过服务帐户D运行群集,但是使用作业中的每个上面定义的服务帐户(A,B和C)来获得对存储桶的适当访问权限?

2 个答案:

答案 0 :(得分:3)

GCS Connector for Hadoop可以配置为使用与GCE元数据服务器提供的服务帐户不同的服务帐户。使用此机制,可能使用不同的服务帐户访问不同的存储桶。

要使用json密钥文件而不是元数据,请使用配置密钥" google.cloud.auth.service.account.json.keyfile"应设置为群集中每个节点本地的JSON密钥文件的位置。如何设置该密钥取决于访问文件系统的上下文。对于标准MR作业,只能访问单个存储桶,您可以在JobConf上设置该键/值对。如果您通过Hadoop FileSystrem接口访问GCS,则可以在获取相应的FileSystem实例时指定使用的Configuration对象中的键/值对。

尽管如此,Dataproc并不试图将各个应用程序彼此隔离。因此,如果您的意图是多租户群集,那么单个作业周围没有足够的安全边界来保证任何作业都不会恶意尝试从其他作业中获取凭据。

如果您的意图是不是多租户群集,请考虑创建一个特定于任务的服务帐户,该帐户允许对与其进行交互所需的所有存储桶进行读取或写入访问。例如,如果您有工作'荟萃分析'读取和写入多个存储桶,您可以创建具有该作业所需权限的服务帐户元分析。

答案 1 :(得分:0)

有了这个相对较新的功能(撰写本文时在 GA 中 6 个月),您可以尝试使用 dataproc 合作多租户将针对 dataproc 提交作业的用户帐户映射到服务帐户 这是谷歌工程师的优秀文章: https://cloud.google.com/blog/topics/developers-practitioners/dataproc-cooperative-multi-tenancy