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

Google cloud storage 在Google Dataproc中使用多个服务帐户,google-cloud-storage,service-accounts,google-cloud-dataproc,Google Cloud Storage,Service Accounts,Google Cloud Dataproc,我们可以在一个Dataproc集群中使用多个服务帐户吗 假设我有3个桶: 服务账户A对bucket A具有r/w访问权限,对bucket B和C具有r访问权限。服务账户B对bucket B具有r访问权限,对bucket A和C具有r访问权限。服务账户C对bucket C具有r访问权限,对bucket A和B具有r访问权限 我是否可以使用服务帐户D启动群集,但在作业中使用上述每个定义的服务帐户(a、B和C)以获得对存储桶的适当访问权限?可以将群集配置为使用不同于GCE元数据服务器提供的服务帐户。使

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

假设我有3个桶: 服务账户A对bucket A具有r/w访问权限,对bucket B和C具有r访问权限。服务账户B对bucket B具有r访问权限,对bucket A和C具有r访问权限。服务账户C对bucket C具有r访问权限,对bucket A和B具有r访问权限

我是否可以使用服务帐户D启动群集,但在作业中使用上述每个定义的服务帐户(a、B和C)以获得对存储桶的适当访问权限?

可以将群集配置为使用不同于GCE元数据服务器提供的服务帐户。使用此机制,可以使用不同的服务帐户访问不同的bucket

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

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


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

使用此相对较新的功能(编写时在GA中使用6个月)您可以尝试使用dataproc协作多租户将提交作业的用户帐户与dataproc映射到服务帐户 以下是谷歌工程师的优秀文章: