首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许docker exec的OPA策略

允许docker exec的OPA策略
EN

Stack Overflow用户
提问于 2021-02-23 04:52:24
回答 1查看 217关注 0票数 2

我已经将OPA docker插件部署为per instruction。在我尝试为docker exec创建自定义docker API权限之前,一切都很好。

我已经在authz.rego文件中添加了以下部分:

代码语言:javascript
复制
allow {
    user_id := input.Headers["Authz-User"]
    users[user_id].readOnly
    input.path[0] == "/v1.41/containers/busybox/exec"
    input.Method == "POST"
}

但是,当我尝试运行以下bash命令时,它仍然给我错误:Bob下的docker exec -it busybox sh根据指令测试用户。

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部分时,它是以完全读写用户的身份工作的,所以规则可以工作,但严格提到API path -不能。也许我指定它的方式是错误的?

尝试了不同的变体,例如:

代码语言:javascript
复制
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操作的建议,而不仅仅是指定的容器。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 12:55:52

查看提供给OPA的input map,您应该同时找到input.Pathinput.PathPlaininput.PathArr

代码语言:javascript
复制
input := map[string]interface{}{
    "Headers":    r.RequestHeaders,
    "Path":       r.RequestURI,
    "PathPlain":  u.Path,
    "PathArr":    strings.Split(u.Path, "/"),
    "Query":      u.Query(),
    "Method":     r.RequestMethod,
    "Body":       body,
    "User":       r.User,
    "AuthMethod": r.UserAuthNMethod,
}

没有小写的input.path可用,但使用任何其他替代方案应该可以。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66323261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档