App Engine – 限制部署到特定服务

App Engine – Restrict deploy to specific service

我们在 Google App Engine 上有两个服务 运行。

我们想将部署限制为仅特定用户到默认 (prod) 目标,但允许任何开发人员部署到开发目标。

无法找出它的 IAM 条件。

App Engine 似乎不是这里的官方资源类型https://cloud.google.com/iam/docs/conditions-resource-attributes#resource-name

并且与服务过滤器下拉列表一致

我尝试使用从 gcloud app services describe dev:

获得的 name
resource.name == 'apps/my-project/services/dev'

Bt 似乎也不起作用,它只是拒绝访问,所以猜测这不是正确的资源名称过滤器。

有没有办法像上面那样限制这个?

据我所知,您不能限制部署到特定服务的权限,因为用户可以为每个 GCP 帐户创建自定义服务。

我可以建议的两个选项:

  1. 为产品创建不同的 GCP 项目。如果您使用的是 CLI,产品开发人员可以简单地更改 GCP 项目并进行部署。

  2. 将 CICD 与 Cloud Build 结合使用,并且只将对 prod 分支的合并访问权限授予 prod 开发人员。在这种情况下,没有开发人员需要访问您的 GCP 项目。

App Engine permissions 在项目级别授予,无法针对应用程序的每个不同服务进行过滤。

有一个开放的功能请求 https://issuetracker.google.com/115904598 允许特定版本的部署,我建议您加注星标并关注。

在不同的 GCP 项目中分离您的生产环境和开发环境(我知道这有时会带来不便)可能是目前唯一可行的选择。