使用受保护的个人凭证进行计划命令

使用受保护的个人凭证进行计划命令

我不确定我是否有一个明确的标题,但这是我的故事:

我正在研究 Openstack 云(Openstack 在这里并不重要),每次我需要调用 Openstack API 时都需要设置我的用户名/密码,这是典型的。

我创建了一个程序(使用 Ansible,但这里并不重要),该程序使用其 API 提供的 Openstack 数据构建网站。由于我无法存储我的凭据,因此每次都需要手动执行它。

现在,我想将其自动化。如何创建一个计划任务(例如使用 cron)以使用我的凭据启动我的脚本。除了我之外,其他人都无法更改此任务,凭据必须隐藏,任务调用的脚本也必须受到保护(例如校验和检查)。

限制:在所有虚拟机上,我们(我和我的团队)都有一个唯一的用户登录,并且我想保护我的凭据,甚至针对 root 用户。

任何可以帮助我做到这一点的工具都会受到欢迎(cron,Jenkins,......)

答案1

首先 - 如果您已经使用 Ansible - 那么使用它从控制服务器运行任务将是一个好主意。如果您的系统处于生产模式,那么在它们上存储任何凭据都不是一个好主意,因为加密凭据需要其他凭据,并且您不想将它们以未加密的形式存储在同一个系统上,因此您开始使用加密它们.... 你看。

因此 - 从可以访问整个系统的控制机器上使用 Ansible。您在那里运行剧本,制作需要在目标主机上完成的事情。然后 Ansible 需要凭证。它们可以通过 Ansible-vault 提供。当然,Ansible Vault 具有内部凭证来加密/解密 ansible-vault,但您是在控制机器上。并且您的偏执级别必须有一个端点。如果您不信任任何人,您就无法存储任何凭证,并且每次都必须输入它们。Ansible 可以通过 cron 调用。

所以

  • ansible-vault使用带有一些加密参数的文件创建
  • 将加密的参数放入你的主机/组变量中
  • 使用以下方式调用剧本ansible-playbook --vault-password-file vault ..
  • 为此定义一个 cronjob

我个人用 AWX 替换了 cronjob。在这种情况下,您可以定义有权访问剧本、库存等的用户,而无需直接访问内容。您可以在 AWX 中配置计划。还有一个 docker-compose 示例。

相关内容