You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IAM条件中检查Secret Manager资源的标签?

解决Secret Manager IAM条件中标签校验的问题

由于secretmanager.googleapis.com/Secret和secretmanager.googleapis.com/SecretVersion不支持通过resource.matchTag实现IAM标签校验,需要直接读取资源自身的现有标签(或注解)来实现同等功能,以下是正确的写法和说明:

针对Secret资源的IAM条件写法

直接通过resource.data.labels访问Secret的标签,比如要校验标签tag等于prod:

resource.data.labels.tag == "prod"

如果需要兼容标签不存在的场景,避免表达式报错,可以加上存在性检查:

has(resource.data.labels.tag) && resource.data.labels.tag == "prod"

针对SecretVersion资源的IAM条件写法

SecretVersion本身没有独立标签,标签存储在父Secret中,需要通过api.getAttribute获取父Secret的属性:

api.getAttribute('secretmanager.googleapis.com/Secret', resource.name.split('/versions/')[0]).labels.tag == "prod"

这里通过resource.name.split('/versions/')[0]提取父Secret的完整资源路径,再调用api.getAttribute获取其标签信息。

为什么之前的写法无效

  • resource.labels.tag:Secret Manager的IAM条件上下文里,resource对象的标签并非直接挂载在根节点,而是嵌套在data字段下,因此直接访问resource.labels会返回空值
  • 错误的api.getAttribute调用:你之前的写法没有传入正确的父资源路径,或者路径层级错误,导致无法正确读取标签数据

内容的提问来源于stack exchange,提问作者pocesar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:35:15