【问题标题】:How to submit job on Dataproc cluster with specific service account?如何使用特定服务帐户在 Dataproc 集群上提交作业?
【发布时间】:2019-11-12 09:31:45
【问题描述】:

我正在尝试在 Dataproc 集群中执行访问多个 GCP 资源(如 Google Cloud Storage)的作业。

我担心通过我的作业创建的任何文件或对象都由 Dataproc 默认用户拥有/创建。

示例 - 123456789-compute@developer.gserviceaccount.com.

有什么方法可以配置此用户/服务帐户,以便对象由给定的用户/服务帐户创建,而不是默认的?

【问题讨论】:

    标签: google-cloud-platform gcloud google-cloud-dataproc service-accounts


    【解决方案1】:

    您可以在创建集群时使用标志 --service-account 配置服务帐号以供 Dataproc 集群使用。

    Gcloud 命令如下所示:

    gcloud dataproc clusters create cluster-name \
      --service-account=your-service-account@project-id.iam.gserviceaccount.com
    

    更多详情:https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts https://cloud.google.com/dataproc/docs/concepts/iam/iam

    注意:每个作业最好有一个 dataproc 集群,这样每个作业都可以得到隔离的环境并且不会相互影响,并且您可以更好地管理它们(在安全性方面也是如此)。

    您还可以查看 GCP Composer,您可以使用它来安排作业并自动化它们。

    希望这会有所帮助。

    【讨论】:

    • 我有一个用例,我需要使用不同的服务帐户在单个 dataproc 集群上运行各种作业。每个服务账户都有不同的 IAM 政策。我想在提交作业时利用这些 IAM 策略。我们也可以一次提交多个作业吗?在具有不同服务帐户的单个集群上。
    • 我怀疑您是否可以将 IAM 策略附加和删除到 GCP 中的集群。
    • 我会说这是你不想做的安全实践。要为每个作业使用不同的服务帐户,您必须提供服务帐户密钥,并且这些密钥必须存储在 GCS 中(并且可以被集群 SA 访问)或更糟的是存储在集群本身上。如果您想使用严格定制的权限,我建议您通过工作流模板创建每个作业集群
    • 多个作业使用同一个dataproc集群的原因是什么?理想情况下,您应该启动 dataproc 集群,然后运行作业并拆除。
    • @tix ,我知道这不安全,但我们有一个奇怪的要求,为此我们尝试使服务帐户的密钥无法访问集群本身上的谷歌存储。在此之后,通过 ssh 进入集群运行作业时,我们无法访问存储帐户。但是,当我通过 gcloud 将其作为作业提交来尝试时,该作业能够访问存储帐户。对此的任何帮助将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2019-12-31
    • 2020-08-22
    • 2020-09-16
    • 2015-08-20
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多