我刚开始学习和使用 ansible,但在使用 ansible 进行 ssh 方面遇到了一些困难。
ansible 是否应该使用我的个人管理员用户通过 ssh 连接到库存主机并在需要时在那里提升权限,或者更好的方法是在每个库存主机上创建一个名为“ansible”的服务用户并具有 sudo 权限,以便 ansible 可以将这个专用用户用于其所有内容?
如果有专门的“ansible”用户,我可以将私钥存储在 ansible 服务器上,并将该用户主机上的 ssh 能力限制为 asible 服务器 ip。
有没有关于如何做到这一点的指导?
答案1
这个话题可能没有客观的最佳解决方案,但您会得到支持两种选择的论据。
我强烈反对“共享”账户。
通常,越来越多的人将获得共享帐户的访问权限,而密码不会定期更改或根本不会更改。当人们离开/频繁更改角色时,他们仍然拥有特权访问权限,因为撤销他们的个人(管理员)帐户和特权不会撤销他们对此类共享帐户的访问权限。最终,没有人再对共享帐户负责,并且/或者更改密码和/或撤销访问权限的影响无法监督,并且没有人愿意再进入那个雷区。
作为一名具有安全意识的管理员,我希望有一个审计跟踪,其中登录/操作/更改可以归因于特定的团队成员和管理员。
因此,当我从工作站运行剧本时,我将使用我的个人帐户进行身份验证。当我的同事开发新剧本时,他们会使用自己的个人凭据来运行它们。sudo
无论如何,所有管理员都已拥有完全权限。
除了个人账户之外,我们还有 AWX ;从那里启动的游戏将使用专用于 AWX 的特定功能账户的凭证运行,但 AWX 中会有审计跟踪,以记录哪个时间表和/或谁启动了该游戏。
对为 AWX 访问保留的功能帐户的访问应受到限制(即使用文件中的选项˜/.ssh/authorized_keys
和/或其中的用户匹配sshd_config
),因此即使管理员可以访问 AWX 使用的私钥,他们也不能从自己的工作站使用它来运行/开发剧本。
答案2
在远程主机上创建专用的“ansible”用户。
看:
最佳做法是将你的公钥放入授权密钥此“ansible”用户的权限。创建用户并允许远程主机上的“ansible”用户使用无密码 sudo。
您不必在远程主机上为“ansible”用户创建 SSH 密钥。ssh 连接插件当您从控制器连接远程主机上的“ansible”用户时不需要它。
问:“您不必在远程主机上为“ansible”用户创建 SSH 密钥”是什么意思?我仍然需要在远程主机 ansible 用户 ssh 配置上放置我的公钥,对吗?”
A:是的。你需要将你的公钥放入 ansible 用户文件中.ssh/授权密钥在远程主机上。例如,
shell> ssh admin@test_11 find .ssh
.ssh
.ssh/authorized_keys
我的意思是你不需要远程主机上的 SSH 密钥(例如 id_rsa、id_rsa.pub)。例如,
shell> ssh admin@test_12 find .ssh
.ssh
.ssh/authorized_keys
.ssh/id_rsa <-- not needed
.ssh/id_rsa.pub <-- not needed
.ssh/known_hosts <-- not needed
看:SSH 协议