Google cloud platform 基于部分资源名称的GCP IAM角色条件

Google cloud platform 基于部分资源名称的GCP IAM角色条件,google-cloud-platform,cloud,amazon-iam,Google Cloud Platform,Cloud,Amazon Iam,我想根据用户的姓名筛选可用的资源。 所以我尝试使用GCP IAM角色条件 但是resource.name上唯一可用的函数是startsWith()、endsWith()或extract(),表示linter和我找到的示例。 在CEL语言定义中()contains()或matches()存在,但我无法在GCP控制台中使用它,linter拒绝了它 为了明确背景,同一个项目拥有生产和非生产环境的资源,我想在不让人们进入生产环境的情况下给他们权利。生产资源以模式-prod-命名 是否有其他方法可以基于部

我想根据用户的姓名筛选可用的资源。 所以我尝试使用GCP IAM角色条件

但是resource.name上唯一可用的函数是startsWith()、endsWith()或extract(),表示linter和我找到的示例。 在CEL语言定义中()contains()或matches()存在,但我无法在GCP控制台中使用它,linter拒绝了它

为了明确背景,同一个项目拥有生产和非生产环境的资源,我想在不让人们进入生产环境的情况下给他们权利。生产资源以模式-prod-命名


是否有其他方法可以基于部分资源名称设置IAM角色条件?

如果我们查看IAM条件的参考文档。。。具体而言,属性引用可在此处找到:

我们发现,对于每个条目,都有一组“受支持的运算符”。似乎只有那些运算符才是受支持的运算符

例如,如果我们查看属性,我们会看到它列出:

  • 开始
  • endsWith
  • 提取
  • ==
  • !=
这似乎告诉我的是,操作符是明确定义的,并且不仅仅是linter,而是实际的规范限制了可以做什么。我们所能做的最好的事情就是向Google提出一个功能请求,以便将来进行一些增强。

,您可以使用砰(!)来否定某个条件,就像在bash中一样

所以你可能想要的是(但不是完全匹配的,你必须用它来做面条):


您还可以在另一份文件的“提取值”部分找到一些有用的信息,

谢谢,它证实了我的疑问
! resource.name.extract('/instances/{name}/').startsWith('<beginning of your naming pattern>-prod-')
! resource.name.extract('/instances/{name}/').startsWith('kittens-prod-') && ! resource.name.extract('/instances/{name}/').startsWith('hedgehogs-prod-')