PAM 身份验证示例

以下各节介绍了如何在 Driverless AI 中启用 可插拔身份验证模块 (PAM) 。您可以通过在 Docker 映像中指定环境变量或更新 config.toml 文件来执行此操作。

请注意:以上操作假设用户已了解如何在其自身环境中授予权限以启用 PAM。特别是对于 Driverless AI 而言,请确保 Driverless AI 进程所有者有权访问 /etc/shadow (无根);否则,身份验证将会失败。

请注意:以下说明仅适用于 CentOS 7 主机。

在此示例中,主机的 Linux 系统启用了 PAM 进行身份验证,并使 Docker 在此 Linux 系统上运行。其目标是启用 PAM 以进行 Driverless AI 身份验证,同时在 Linux 系统上存储用户信息。

  1. 验证是否在 Linux 系统中定义了此用户名(本示例中为 “eric”)。

[root@Linux-Server]# cat /etc/shadow | grep eric
eric:$6$inOv3GsQuRanR1H4$kYgys3oc2dQ3u9it02WTvAYqiGiQgQ/yqOiOs.g4F9DM1UJGpruUVoGl5G6OD3MrX/3uy4gWflYJnbJofaAni/::0:99999:7:::
  1. 在 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
  1. 获取 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
  1. 在 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:::
  1. 打开 Web 浏览器并导航至正在运行 Driverless AI Docker 映像的 Linux 系统上的 12345 端口。使用 Linux 系统已知的凭证登录。现在将使用 PAM 验证登录信息。