配置 sudo 自定义¶
如果您组织的 IT 安全策略不允许 root 访问或对使用 sudo 有限制,则在安装 AEN 后,您可以自定义 AEN 以满足他们的要求。
您的组织可以选择实施以下任何一项或所有措施:
- 删除AEN 服务帐户的根访问权限(注意:这会限制 AEN 管理用户帐户)。
- 可配置的 sudo 命令。
- 限制对所有进程的 sudo 访问。
将文件复制到服务器节点后,必须在终端窗口中完成这些自定义。
从服务帐户中删除所有 root 访问权限¶
由于需要 root 访问权限useradd
,因此以下过程限制 AEN 管理用户帐户。
修改
/etc/sudoers.d/wakari_sudo
文件为:Defaults:wakari !requiretty, visiblepw Runas_Alias OP = ALL,!root wakari ALL=(OP) NOPASSWD: ALL
注意:如果您使用 wakari 以外的服务帐户名称,请输入该名称而不是
wakari
。修改
/opt/wakari/wakari-compute/etc/wakari/config.json
文件为:"MANAGE_ACCOUNTS": false,
使用此选项意味着您的 IT 部门必须在操作系统级别创建和管理所有用户帐户。
存在操作系统级别的帐户后,您可以在主 AEN 网页上创建一个使用相同名称的 AEN 帐户。您选择的密码不会以任何方式与帐户的操作系统级密码相关联。
或者,您可以将系统配置为使用 LDAP 来验证用户。
允许公共用户访问您的 AEN 项目¶
任何可以访问 AEN 服务器的人都可以看到公共帐户。此帐户的名称可以配置为您希望的任何名称。例如,public
或anonymous
。要禁用此功能,请使用特殊值disabled
。
在
/opt/wakari/wakari-compute/etc/wakari/wk-compute-launcher-config.json
文件中,将 ANON_USER 行修改为:"ANON_USER": "public"
重启 AEN 计算节点:
sudo service wakari-compute restart
在
/opt/wakari/wakari-server/etc/wakari/wk-server-config.json
文件中,将 ANON_USER 行修改为:"ANON_USER": "public"
重启 AEN 服务器:
sudo service wakari-server restart
有关配置键的更多信息,请参阅 使用配置文件。
使用 sudo 替代方案¶
您可以使用 sudo 替代方案,只要它支持与原始 sudo 相同的执行语义。必须将替代方案配置为授予服务帐户代表 AEN 用户运行命令的权限。
在终端窗口中,打开
/opt/wakari/wakari-compute/etc/wakari/config.json
文件。将 AEN_SUDO_CMD 行修改为:
"AEN_SUDO_CMD": "/path/to/alternative/sudo",
注意:如果备用 sudo 命令在 PATH 上可用,则不需要完整路径。
限制对单个网守的 sudo 访问¶
默认情况下,sudoers 配置为允许 AEN 以特定用户身份运行任何命令,从而允许平台以登录的最终用户身份启动进程。如果需要更严格的控制,则应使用合适的 sudoers 策略来实施。如果这不可能或不切实际,也可以通过单个网守路由所有 AEN ID 更改操作。
该守门人包装了所需的可执行文件,并提供了一种替代方法来记录、监视或控制 AEN 可以代表用户启动哪些进程。
注意:Gatekeeper 是一种特殊情况配置,应仅在需要时使用。
配置 AEN 网守:
修改
/etc/sudoers.d/wakari_sudo
文件以包含:Defaults:wakari !requiretty, visiblepw Runas_Alias OP = ALL,!root wakari ALL=(OP) NOPASSWD: /path/to/gatekeeper
在
/opt/wakari/wakari-compute/etc/wakari/config.json
文件中,将 AEN_SUDO_SH 行修改为:"AEN_SUDO_SH": "/path/to/gatekeeper"
示例:网守可以像包含以下内容的脚本一样简单:
#!/bin/bash
first_cmd=$1
if [ 'bash' == $1 ]; then
shift
export HOME=~
export SHELL=/bin/bash
export PATH=$PATH:/opt/wakari/anaconda/bin
bash "$@"
else
exec $@
fi