【问题标题】:Using non-default service account in Google Cloud dataproc在 Google Cloud dataproc 中使用非默认服务帐号
【发布时间】:2016-12-05 22:13:07
【问题描述】:

我想创建一个在非默认服务帐户下运行的 dataproc 集群。以下适用于计算实例:

gcloud compute instances create instance-1 --machine-type "n1-standard-1" --zone "europe-west1-b" --scopes xxxxxxxx@yyyyyyyy.iam.gserviceaccount.com="https://www.googleapis.com/auth/cloud-platform"

但是在创建 dataproc 实例时,相同的 --scopes 参数失败:

gcloud dataproc clusters create --zone "europe-west1-b" --scopes xxxxxxxx@yyyyyyyy.iam.gserviceaccount.com="https://www.googleapis.com/auth/cloud-platform" testdataproc12345

错误:(gcloud.dataproc.clusters.create) 服务帐户范围无效:'xxxxxxxxx@yyyyyyyy.iam.gserviceaccount.com=https://www.googleapis.com/auth/cloud-platform'

是否可以在非默认服务帐户下运行 dataproc?

【问题讨论】:

    标签: google-cloud-platform google-cloud-dataproc


    【解决方案1】:

    很遗憾,目前无法使用正常的“范围和元数据”介导的身份验证设置来指定您的自定义服务帐户。不过,这是一个已知的功能请求,因此它应该会在未来的 Dataproc 更新中提供。

    同时,即使您在使用 Dataproc 时无法使用默认 GCE 服务帐户禁用“存储读/写”范围的存在,您也可以通过密钥文件使 Hadoop 端使用特定服务帐户,方法是IAM & Admin > Service accounts 页面下的“创建密钥”选项为您的服务帐户获取 JSON 密钥文件,然后做两件事:

    1. 在集群创建时添加以下属性:

      --properties core:fs.gs.auth.service.account.json.keyfile=/etc/hadoop/conf/my-service-account.json
      
    2. 使用初始化操作将您的 JSON 密钥文件复制到您的节点;请注意,这仍然意味着您的 JSON 密钥文件必须可供 GCE 默认服务帐户作为阅读器访问,并且任何有权访问您的 JSON 密钥文件的 GCS 位置的人现在也可以代表该服务帐户行事,因此您仍然需要根据需要确保您的项目安全。

      #!/bin/bash
      # Save this somewhere as gs://somepath/my-keyfile-setup.sh
      
      gsutil cp gs://path/to/your/json/file/in/gcs/my=service-account.json \
          /etc/hadoop/conf/my-service-account.json
      

      然后应用该初始化操作:

      gcloud dataproc clusters create --initialization-actions gs://somepath/my-keyfile-setup.sh ...
      

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 1970-01-01
      • 2016-06-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2015-11-11
      相关资源
      最近更新 更多