我已经按照说明部署了 OPA docker 插件。在我尝试为 docker exec 创建自定义 docker API 权限之前,一切都很好。
我已将以下部分添加到authz.rego
文件中:
allow {
user_id := input.Headers["Authz-User"]
users[user_id].readOnly
input.path[0] == "/v1.41/containers/busybox/exec"
input.Method == "POST"
}
但是当我尝试运行以下 bash 命令时它仍然给我错误:docker exec -it busybox sh
按照说明在Bob
测试用户下。
journalctl -u docker.service
提供以下错误:
level=error msg="AuthZRequest for POST /v1.41/containers/busybox/exec returned error: authorization denied by plugin openpolicyagent/opa-docker-authz-v2:0.4: request rejected by administrative policy"
有趣的是,当我注释掉input.path
部分时,它作为完整的 RW 用户工作,因此该规则有效,但严格提及 API 路径 - 没有。也许我以错误的方式指定它?
尝试了不同的变体,例如:
input.path == ["/v1.41/containers/busybox/exec"]
input.path = ["/v1.41/containers/busybox/exec"]
input.path = ["/v1.41*"]
input.path = ["/v1.41/*"]
input.path = ["/v1.41%"]
input.path = ["/v1.41/%"]
还希望获得有关如何允许exec
对任何容器进行操作的建议,而不仅仅是指定的容器。
提前致谢!