云 运行 - 允许用户根据权限部署单个资源

Cloud Run - Allowing users to deploy a single resource, based on permissions

在尝试允许不同用户访问 GCP Cloud 运行 以及使用权限属性的特定服务时,我几乎感到头疼。

让我们考虑一下我有不同的服务 运行,我想指派我的开发人员只对其中的一部分使用 gcloud run deploy。就我而言,如下所示:

两个用户都具有“Cloud 运行 Developer”角色,两个服务帐户都具有“ServiceAccountUser”角色,如所述here in GCP docs

然而,我面临的问题是当我尝试限制单个资源的用户权限时。 使用 GCP 网络控制台,我创建了一个基于 Resource > Name 的条件为 backend-service

我在使用 gcloud run deploy 时立即收到此错误:

ERROR: (gcloud.run.deploy) PERMISSION_DENIED: Permission 'run.services.update' denied on resource 'namespaces/PROJECT_ID/services/SERVICE_NAME' (or resource may not exist).
make: *** [deploy] Error 1

因为我找不到与 Cloud 运行 (they're not even listed afaik) 相关的 IAM 权限条件相关的任何内容,所以我尝试将 Resource > Name 条件值更改为 namespaces/PROJECT_ID/services/SERVICE_NAME,但没有成功也工作

附带说明一下,在 Cloud 运行 Web Console 中检查权限时,它显示 云端条件运行开发者

{
    "expression": "resource.name == \"backend-service\"",
    "title": "BackendService"
}

Cloud Run doesn't support IAM conditions。您有几种解决方法

  • 等待更新
  • 创建不同的项目
  • 自动化部署(只有CI/CD管道可以部署,不能直接部署用户)
  • 在资源级别而非项目级别添加权限。