PAM 身份验证示例¶
以下各节介绍了如何在 Driverless AI 中启用 可插拔身份验证模块 (PAM) 。您可以通过在 Docker 映像中指定环境变量或更新 config.toml 文件来执行此操作。
请注意:以上操作假设用户已了解如何在其自身环境中授予权限以启用 PAM。特别是对于 Driverless AI 而言,请确保 Driverless AI 进程所有者有权访问 /etc/shadow (无根);否则,身份验证将会失败。
请注意:以下说明仅适用于 CentOS 7 主机。
在此示例中,主机的 Linux 系统启用了 PAM 进行身份验证,并使 Docker 在此 Linux 系统上运行。其目标是启用 PAM 以进行 Driverless AI 身份验证,同时在 Linux 系统上存储用户信息。
验证是否在 Linux 系统中定义了此用户名(本示例中为 “eric”)。
[root@Linux-Server]# cat /etc/shadow | grep eric eric:$6$inOv3GsQuRanR1H4$kYgys3oc2dQ3u9it02WTvAYqiGiQgQ/yqOiOs.g4F9DM1UJGpruUVoGl5G6OD3MrX/3uy4gWflYJnbJofaAni/::0:99999:7:::
在 Linux 服务器上启动 Docker 并在 Driverless AI 中启用 PAM。
[root@Linux-Server]# docker run \ --rm \ --shm-size=256m \ -u `id -u`:`id -g` \ -p 12345:12345 \ -v `pwd`/config:/config \ -v `pwd`/data:/data \ -v `pwd`/log:/log \ -v `pwd`/license:/license \ -v `pwd`/tmp:/tmp \ -v /etc/passwd:/etc/passwd \ -v /etc/shadow:/etc/shadow \ -v /etc/pam.d/:/etc/pam.d/ \ -e DRIVERLESS_AI_AUTHENTICATION_METHOD="pam" \ h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx
获取 Driverless AI 容器 ID。在执行下一步时需要此 ID,并且每次启动 Driverless AI 时,都会有一个不同的 ID。
[root@Linux-Server]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e333475ffd8 opsh2oai/h2oai-runtime "./run.sh" 36 seconds ago Up 35 seconds 192.168.0.1:9090->9090/tcp, 192.168.0.1:12345->12345/tcp, 192.168.0.1:12348->12348/tcp clever_swirles
在 Linux 服务器上验证 Docker Driverless AI 实例是否可查阅影子文件。以下示例引用
8e333475ffd8
,这是在上一步中获取的容器 ID。
[root@Linux-Server]# docker exec 8e333475ffd8 cat /etc/shadow|grep eric eric:$6$inOv3GsQuRanR1H4$kYgys3oc2dQ3u9it02WTvAYqiGiQgQ/yqOiOs.g4F9DM1UJGpruUVoGl5G6OD3MrX/3uy4gWflYJnbJofaAni/::0:99999:7:::
打开 Web 浏览器并导航至正在运行 Driverless AI Docker 映像的 Linux 系统上的 12345 端口。使用 Linux 系统已知的凭证登录。现在将使用 PAM 验证登录信息。
在此示例中,主机的 Linux 系统启用了 PAM 进行身份验证。其目标是启用 PAM 以进行 Driverless AI 身份验证,同时在 Linux 系统上存储用户信息。
此示例展示了如何编辑 config.toml 文件以启用 PAM。安装 RPM 或 DEB 后,可在 etc/dai 文件夹中找到 config.toml 文件。编辑此文件中的 authentication_method 变量以启用 PAM 身份验证,然后重启 Driverless AI。
验证是否在 Linux 系统中定义了此用户名(本示例中为 “eric”)。
[root@Linux-Server]# cat /etc/shadow | grep eric eric:$6$inOv3GsQuRanR1H4$kYgys3oc2dQ3u9it02WTvAYqiGiQgQ/yqOiOs.g4F9DM1UJGpruUVoGl5G6OD3MrX/3uy4gWflYJnbJofaAni/::0:99999:7:::
导出 Driverless AI config.toml 文件或将其添加至 ~/.bashrc。例如:
# DEB and RPM export DRIVERLESS_AI_CONFIG_FILE="/etc/dai/config.toml" # TAR SH export DRIVERLESS_AI_CONFIG_FILE="/path/to/your/unpacked/dai/directory/config.toml"
在 config.toml 文件中编辑
authentication_method
变量,从而启用 PAM。
# authentication_method # unvalidated : Accepts user id and password, does not validate password # none : Does not ask for user id or password, authenticated as admin # pam : Accepts user id and password, Validates user with operating system # ldap : Accepts user id and password, Validates against an ldap server, look # local: Accepts a user id and password, Validated against a htpasswd file provided in local_htpasswd_file # for additional settings under LDAP settings authentication_method = "pam"
启动 Driverless AI。请注意,用于启动 Driverless AI 的命令将因安装类型而异。
# Linux RPM or DEB with systemd [root@Linux-Server]# sudo systemctl start dai # Linux RPM or DEB without systemd [root@Linux-Server]# sudo -H -u dai /opt/h2oai/dai/run-dai.sh # Linux TAR SH [root@Linux-Server]# ./run-dai.sh
打开 Web 浏览器并导航至正在运行 Driverless AI 的 Linux 系统上的 12345 端口。使用 Linux 系统已知的凭证登录(如第一步中验证的那样)。现在将使用 PAM 验证登录信息。