在Google Cloud数据中心中使用非默认服务帐户

时间:2016-07-31 21:27:02

标签: google-cloud-platform google-cloud-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"

但创建数据空间实例时,相同的--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?

1 个答案:

答案 0 :(得分: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密钥文件复制到节点的init操作;请注意,这仍然意味着您的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
    

    然后应用该init操作:

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