Ansible sudo root hop

时间:2017-06-28 12:32:20

标签: security ansible privileges sudoers

我的问题是:

由于使用root用户通过ssh连接到远程计算机通常被视为一种不好的做法,我使用特定的非特权帐户连接到服务器。

但对我而言,以root用户身份执行所有操作也是一种不好的做法。我喜欢随时使用适用的用户。

使用ansible我可以成为root并使用become指令执行特权命令。但是有没有意义成为任何具有root'hump'权限升级的用户?

即 ssh与ssh-user =>成为root =>成为任何其他用户

我看到的其他方法并不完全让我满意:

  • 成为root用户,使用cmd模块并使用su(显示以下不推荐使用的消息 [警告]:考虑使用'become','become_method'和'become_user'而不是运行su ):

    cmd: su -c "my_command" app_user become: True become_user: root

  • 向我的ssh-user添加sudoers权限,直接成为所有申请用户

我错过了一些更简洁的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用 - ask-become-pass 选项运行您的剧本,例如:

  

ansible-playbook -i ../inventories/production.ini service_install.yml   --ask-成为通

在您的广告资源中,这里称为production.ini,为ansible group添加您的信息用户:

[group1]
182.26.5.159
182.26.5.160
182.26.5.161
...
[group1:vars]
ansible_connection=ssh
ansible_user=appuser                                   # insert your app user here
ansible_ssh_pass=passuser                              # insert your pass here

然后,您可以加密您的广告资源文件,以保护您的密码机密,并将解密密码提供给您的OP /系统管理员小组

  

ansible-vault encrypt ../ inventoryories / production.in

保留的最终命令是:

  

ansible-playbook -i ../inventories/production.ini service_install.yml   --ask-become-pass --ask-vault-pass

然后在您的游戏中,您只需要使用“成为:是”选项来调用您的任务:

cmd: "my_command" app_user
become: yes

答案 1 :(得分:0)

我刚刚编辑了我的答案,任务已经纠正。通常它应该在命令没有“su”的情况下工作。

  

cmd:“my_command”app_user变为:是