|
这是尚未发布的文档。 Admission Controller 1.37-dev. |
编写原始策略
原始策略是可以评估任意 JSON 文档的策略。 有关原始策略的更多信息,请参阅raw policies页面。
示例
如果您完成了本教程的 validation 页面,以下示例应该很熟悉。
|
请记得通过在 |
Validation
您将编写一个接受以下格式请求的策略:
{
"request": {
"user": "alice",
"action": "read",
"resource": "products"
}
}
它验证只有 admin 用户可以删除资源。
首先使用 OPA policy template 来搭建一个策略。
首先,您需要将 policy.rego 文件更改为如下所示:
package validation
deny[msg] {
input.request.action == "delete"
input.request.user != "admin"
msg := sprintf("user %v is not allowed to delete resources", [input.request.user])
}
utility/policy.rego 模块需要修改以去除特定于 Kubernetes 的代码:
package policy
import data.validation
main = {
"response": response,
}
# OPA policy responses need the uid field to be set.
# If the request doesn't contain a uid, set it to an empty string.
default uid = ""
uid = input.request.uid
response = {
"uid": uid,
"allowed": false,
"status": {"message": reason},
} {
reason = concat(", ", validation.deny)
reason != ""
} else = {
"uid": uid,
"allowed": true,
} {
true
}