【问题标题】:Cloud Run - Allowing users to deploy a single resource, based on permissionsCloud Run - 允许用户根据权限部署单个资源
【发布时间】:2021-08-02 14:47:53
【问题描述】:

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

假设我有不同的服务正在运行,我想分配我的开发人员仅在其中一组上使用gcloud run deploy。就我而言,如下所示:

  • backend-service > 修订版只能由后端用户部署;
  • frontend-service > 修订版只能由前端用户部署;

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

我面临的问题是当我尝试限制单个资源的用户权限时。 使用 GCP Web 控制台,我创建了一个基于 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 Run (they're not even listed afaik) 相关的 IAM 权限条件相关的任何内容,我尝试将 Resource > Name 条件值更改为 namespaces/PROJECT_ID/services/SERVICE_NAME,但这也没有用。

附带说明,在 Cloud Run Web 控制台中检查权限时,它会显示 Cloud Run 开发者的条件

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

【问题讨论】:

    标签: google-cloud-platform google-cloud-run google-iam


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您指出这一点!但是,resource.name 添加权限不是实际上是在资源级别添加权限吗?
    • 您可以在角色和资源之间添加绑定(从而创建策略)。当您添加一个条件时,您将添加一个强制执行条件的策略。这不完全一样。对于 Cloud Run,您可以在服务(资源)级别创建绑定,但不能在服务名称上设置 IAM 条件
    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2020-06-01
    • 2016-10-17
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多