首页 > 解决方案 > OPA 参考语言:如何知道变量的类型

问题描述

我正在使用开放策略语言为我的微服务实施策略,使用 JWT 和角色和组。

我的 OPA 政策正在解码 JWT 并提取声明。问题是其中一些声明可能是标量(例如 group1)或数组(例如 ["group1", "group2"]),我需要知道才能正确处理它。

问题类似于 如何确定 opa 中变量的类型?

有什么帮助吗?

标签: jwtopen-policy-agent

解决方案


您通常使用内置的 is_xxxxx函数来检查类型。按照你的例子,你可能想要类似的东西:

allow {
    is_array(claims.groups)
    claims.groups[_] == "group1"
}

allow {
    is_string(claims.groups)
    claims.groups == "group1"
}

推荐阅读