0

最近我正在使用 RBAC 工具 Open Policy Agent (OPA)。OPA 网站上有一个链接,可以利用 OPA 对 SSH 和 Sudo 进行安全控制。为了使它工作,我们必须将它与 linux PAM 模块一起使用。

请找到以下链接:

https://www.openpolicyagent.org/docs/v0.12.2/ssh-and-sudo-authorization/

在这里,他们提供了使用 docker image 的示例。PAM 和 OPA 集成部分在哪里不清楚。我的要求是在没有 docker 映像的 Linux 系统中使用 PAM 来利用 OPA 功能。

我用谷歌搜索了它,但没有得到任何有用的文章。因此,如果有人可以通过一些示例或参考链接向我提供或指出正确的方向,那将非常有帮助。提前致谢!

4

2 回答 2

0

您可以在不涉及 Docker 的情况下将 OPA 作为独立的可执行文件下载和运行。请参阅官方 OPA 页面的下载页面。

然后,您可以按照文档中的说明在系统上运行 OPA:

opa run --server --set=decision_logs.console=true

默认情况下,OPA 服务器将在 localhost:8181 上运行 - 请咨询opa run --help更多选项。

于 2020-12-03T14:36:07.903 回答
0

我在我工作的公司实现了这一点,并简要介绍了它的工作原理=> https://www.youtube.com/watch?v=6vUw6f7KlqI

该视频提供了更多概述,而不是有关如何配置 PAM 的详细信息。但是,我很乐意回答有关我们如何设置 PAM 配置的任何后续问题,但基本上我们让 OPA 在我们的 linux 主机上作为 systemd 服务运行,并添加了对=>的pam_exec调用/etc/pam.d/sshd

auth sufficient pam_exec.so quiet /some/path/pam_opa_entrypoint.sh ssh

pam_opa_entrypoint.sh 或多或少看起来像:

#!/bin/bash

INPUT_JSON=$(jq -n -c --arg username "$PAM_USER" '{input:{pam_username:$username}}')

OPA_RESULT_JSON=$(curl -s -X POST https://opa.local/v1/data/linux/$1 -H "Content-Type: application/json" -d $INPUT_JSON)

OPA_RESULT=$(jq -r '.result.allowed' <<< "$OPA_RESULT_JSON")

if [[ "$OPA_RESULT" == "true" ]]; then
    # Authorization success
    exit 0
else
    # Authorization failed
    exit 1
fi

这种pam_exec.so方法比 Styra 提供的用 C 编写 PAM 模块的示例更受欢迎。

于 2021-10-13T20:31:12.057 回答