|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-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
}