使用gcloud将服务帐户部署到Google App Engine需要什么权限?

时间:2017-05-11 02:54:52

标签: google-app-engine gcloud

我创建了一个服务帐户,以便将项目部署到Google应用引擎。

我创建的服务帐户有以下两个角色:

  1. App Engine - > App Engine部署者
  2. 存储 - >存储对象管理
  3. 我下载了json密钥文件,然后运行以下命令:

    gcloud auth activate-service-account --key-file key.json
    gcloud -q app deploy app_deploy.yaml --version 1.0 --promote
    

    我收到此错误消息:

    ERROR: (gcloud.app.deploy) Error Response: [403] Operation not allowed
    
    Details: [
      [
        {
          "@type": "type.googleapis.com/google.rpc.ResourceInfo",
          "description": "The \"appengine.applications.get\" permission is required.",
          "resourceType": "gae.api"
        }
      ]
    ]
    

    我错过了什么角色?

5 个答案:

答案 0 :(得分:8)

截至2020年1月,documentation for App Engine Roles声明:

注意:App Engine Deployer(roles / appengine.deployer)角色单独授予使用App Engine Admin API进行部署的足够权限。要使用其他App Engine工具(如gcloud命令),您还必须具有Compute Storage Admin(roles / compute.storageAdmin)和Cloud Build Editor(cloudbuild.builds.editor)角色。

但是,这并不完全正确:

  1. Python 3.6.5 还不够(我怀疑此处的文档有误)。实际上,CLI显然需要cloudbuild.builds.builder提供的cloudbuild.builds.editor权限。
  2. 部署后,您将收到错误消息,因为您无权更改流量拆分。因此,您需要storage.objects.list

因此,这是为我工作的角色列表:

  • roles/appengine.serviceAdmin
  • roles/appengine.deployer
  • roles/appengine.serviceAdmin
  • roles/compute.storageAdmin

答案 1 :(得分:5)

如果我将App Engine -> App Engine Deployer替换为App Engine -> App Engine Admin,则此功能正常。

不知道为什么Deployer不足以进行应用部署。

答案 2 :(得分:1)

我自己仍在解析所有关于此问题的各种文档,但我偶然发现了this list of predefined GAE roles,并完成了对权限的定义。 “Deployer”似乎有点用词不当......他们可能应该把它称为“NewDeployer”或类似的东西。希望这可以帮助!

编辑 - 这里也是App Engine-specific list of roles

干杯! 英格

答案 3 :(得分:0)

您不需要授予存储的管理员角色。

您只需要为服务帐户授予以下角色:

  • App Engine Deployer
  • Storage Object Creator仅适用于存储区staging.<project-id>.appspot.com
  • Storage Object Viewer仅适用于存储区staging.<project-id>.appspot.com

您可能会遇到一些错误,因为服务帐户无权将流量更改为新版本(您刚刚部署)。 但是部署成功,您可以从控制台迁移到新版本。

以下是我的案件中的消息。

  

[INFO] GCLOUD:错误:(gcloud.app.deploy)您的部署具有   成功,但是将新版本提升为默认版本失败。你可以   没有更改流量拆分的权限。改变流量分配   需要拥有者,编辑者,App Engine管理员或App Engine服务   管理员角色。请与您的项目所有者联系,并使用gcloud app services set-traffic --splits <version>=1命令重定向流量   到新部署的版本。

答案 4 :(得分:0)

这些角色对我有用。我正在使用 gcloud 从 AppVeyor 进行部署。

  • App Engine 部署人员
  • App Engine 服务管理员
  • Cloud Build 服务帐号
  • 服务帐号用户

参考:https://github.com/google-github-actions/setup-gcloud/issues/191#issuecomment-706039046