开放政策代理 - false 与 none
open policy agent - false vs none
试图理解 OPA 中虚假的概念。我的情况是这样的——我需要验证所有云资源是否都在 AWS 的允许区域中。我现在拥有的是:
allowed_locations := ["eastus", "westus"]
exists(array, value) {
array[_] == value
}
all_resources_in_allowed_regions {
not any_resource_not_in_allowed_regions
}
any_resource_not_in_allowed_regions {
some index
exists(allowed_locations, input.planned_values.root_module.resources[index].values.location) != true
}
问题是,我想我遗漏了一些关于 policies/functions 结果的东西,当它不是真的时 - 例如, exists(allowed_locations, "westeurope")
的结果不是假的,而是一些“未定义”的排序,这意味着 exists(allowed_locations, "westeurope") != true
的结果也是“未定义”,这意味着 all_resources_in_allowed_regions 被赋值 not "undefined"
为真。
你会如何用 OPA 解决这个问题?我是否遗漏了有关正确使用方法的信息?
查看文档的“面向所有人”部分:
关于正在发生的事情的更多解释:https://www.openpolicyagent.org/docs/latest/policy-language/#universal-quantification-for-all
快速示例:https://www.openpolicyagent.org/docs/latest/policy-reference/#for-all
根据您的回复 ,更新后的政策如下所述:
allowed_locations := ["eastus", "westus"]
exists(array, value) {
array[_] == value
}
not_exists(array, value) {
not exists(array, value)
}
all_resources_in_region {
not any_resource_not_in_region
}
any_resource_not_in_region {
not_exists(allowed_locations, input.planned_values.root_module.resource[_].values.location)
}
试图理解 OPA 中虚假的概念。我的情况是这样的——我需要验证所有云资源是否都在 AWS 的允许区域中。我现在拥有的是:
allowed_locations := ["eastus", "westus"]
exists(array, value) {
array[_] == value
}
all_resources_in_allowed_regions {
not any_resource_not_in_allowed_regions
}
any_resource_not_in_allowed_regions {
some index
exists(allowed_locations, input.planned_values.root_module.resources[index].values.location) != true
}
问题是,我想我遗漏了一些关于 policies/functions 结果的东西,当它不是真的时 - 例如, exists(allowed_locations, "westeurope")
的结果不是假的,而是一些“未定义”的排序,这意味着 exists(allowed_locations, "westeurope") != true
的结果也是“未定义”,这意味着 all_resources_in_allowed_regions 被赋值 not "undefined"
为真。
你会如何用 OPA 解决这个问题?我是否遗漏了有关正确使用方法的信息?
查看文档的“面向所有人”部分:
关于正在发生的事情的更多解释:https://www.openpolicyagent.org/docs/latest/policy-language/#universal-quantification-for-all
快速示例:https://www.openpolicyagent.org/docs/latest/policy-reference/#for-all
根据您的回复
allowed_locations := ["eastus", "westus"]
exists(array, value) {
array[_] == value
}
not_exists(array, value) {
not exists(array, value)
}
all_resources_in_region {
not any_resource_not_in_region
}
any_resource_not_in_region {
not_exists(allowed_locations, input.planned_values.root_module.resource[_].values.location)
}