Google cloud platform 无法使用服务帐户创建Dataproc群集

Google cloud platform 无法使用服务帐户创建Dataproc群集,google-cloud-platform,google-cloud-dataproc,Google Cloud Platform,Google Cloud Dataproc,我是Google cloud的新手,正在评估Dataproc集群,核心需求之一是动态创建集群并处理作业。对于各种文档的读取和修改,我尝试创建一个服务帐户,并从“Dataproc编辑器”开始添加角色 我生成了密钥文件并激活了服务帐户 gcloud auth activate-service-account --key-file=<Key File> 我开始向服务帐户添加更多角色,结果如下图所示,仍然无法创建集群。我不太确定我错过了什么。我尝试了命令行和编程方法,结果也是一样的。不幸的

我是Google cloud的新手,正在评估Dataproc集群,核心需求之一是动态创建集群并处理作业。对于各种文档的读取和修改,我尝试创建一个服务帐户,并从“Dataproc编辑器”开始添加角色

我生成了密钥文件并激活了服务帐户

gcloud auth activate-service-account --key-file=<Key File>
我开始向服务帐户添加更多角色,结果如下图所示,仍然无法创建集群。我不太确定我错过了什么。我尝试了命令行和编程方法,结果也是一样的。不幸的是,我也无法从日志中获得足够的线索

------------更新------------------

我想我在最初的问题中遗漏了一些信息。我有一个拥有所有者角色的用户帐户,目前正在使用该帐户进行实验,并使用它来创建集群和提交作业。因此,我认为该项目具有必要的角色

现在我想走向自动化,并希望实现

  • 使用服务帐户管理群集
  • 应该能够提交和运行作业,并管理作业
    我从一个帐户开始履行这两项职责,但根据建议,我可以开始拥有不同的服务帐户。

    由于这里有各种相关功能,例如为集群标识指定自定义服务帐户和使用自定义映像,因此可以采取一些步骤缩小主要问题的范围:

  • 检查任何访问控制API调用是否适用于具有广泛权限的服务帐户,例如
    Project Viewer
    ,并尝试
    gcloud compute instances list
    gcloud compute regions list
    ,和
    gcloud dataproc clusters list
    -如果这是关于dataproc特定角色的内容,或者如果服务帐户本身由于某种原因无法工作,则会缩小范围
  • 如果它似乎适用于其他API,但不适用于Dataproc API,请尝试该工具,直到您可以获得使用Dataproc API的基本“查看器”类型的请求
  • 如果可以创建“默认”Dataproc群集,但具有自定义选项的群集失败,则可能需要添加其他权限,例如指定群集标识服务帐户的
    服务帐户用户
    ,跨项目网络的
    计算网络用户
    ,跨项目自定义映像的
    计算映像用户
    ,或
    存储对象创建者
    用于跨项目或自定义地面军事系统。通常,与#1中描述的基本“前门”访问错误相比,这些类型的权限上的错误预计会提供来自Dataproc API的详细错误消息,而#1中描述的基本“前门”访问错误可能有您看到的更一般的错误消息(“未授权请求的资源”) 其他需要检查的事项包括确保将角色成员身份应用于正确的资源(在本例中为项目本身),而不是服务帐户,因为角色列表应该包含您需要的所有内容。检查:

    gcloud projects get-iam-policy $PROJECT
    
    要确保所有这些角色的列表实际与
    成员一起出现:
    列出您的服务帐户。您不应期望服务帐户的资源策略本身会出现
    Dataproc Editor
    等内容,如:

    gcloud iam service-accounts get-iam-policy $SERVICE_ACCOUNT
    
    应该返回一个空响应,其中只有一个
    etag:
    字段

    在使用定制服务帐户时,了解不同角色之间的区别也很重要

    首先要澄清的一点是,Dataproc“工作者”和Dataproc创建者/用户通常不是相同的身份,即使它们可以是相同的。因此,如果您打算使用服务帐户创建Dataproc群集,
    Dataproc Editor
    是正确的,但是如果您还打算使群集本身具有服务帐户的标识,则还需要授予服务帐户
    Dataproc Worker
    角色:

    在这种情况下,如果您试图使用服务帐户创建一个集群,然后作为指定的服务帐户,即使指定的帐户是“自身”,您也需要在项目级别将
    服务帐户用户
    角色授予您的服务帐户(如果您可以在项目中授予广泛的actAs权限)或仅在单个服务帐户上

    由于您似乎正在使用自定义映像,因此假设您按照的高级说明进行操作,则可能还必须授予您的服务帐户


    除此之外,如果在不同的项目中使用图像,您可能需要检查表单的服务帐户,如果您的项目是在2019年9月之前创建的,还需要检查遗留的
    [项目编号]@cloudservices.gserviceaccount.com
    服务帐户。这些帐户需要在映像或包含这些映像的项目上授予
    计算映像用户角色
    。对于相同的项目映像,现有的
    Dataproc服务代理
    角色应该已经包括包含映像用户角色的instanceAdmin权限

    如果您在运行
    激活服务帐户后仅
    gcloud dataproc clusters list
    ,会发生什么情况?您是否在项目级别添加了角色?或者是否可能将角色添加到服务帐户帐户本身作为目标资源?您应该看到服务帐户列为“成员”在
    gcloud projects get iam policy
    中,而不是在
    gcloud iam service accounts get iam policy
    中,谢谢您的回复。我删除了所有角色,只留下了“Dataproc Editor”角色。下面是我的项目所有者用户帐户的回复。``/gcp$gcloud projects get iam policy poc--flant=“bindings[].members”--format='table(bindings.role)--filter=“bindings.members:dataproc集群-manager@assorter-poc.ia
    gcloud projects get-iam-policy $PROJECT
    
    gcloud iam service-accounts get-iam-policy $SERVICE_ACCOUNT