允許使用者在不提供密碼的情況下運行 playbook

允許使用者在不提供密碼的情況下運行 playbook

我有一個 ansible 劇本,我想允許普通用戶運行它來在 centos 伺服器上安裝應用程序,但我不一定想給他們登入憑證。我知道你可以使用 ansibleVault 來儲存加密數據,但據我所知,你也可以輕鬆解密這些數據。關於這是否可能以及如何實現它有什麼想法嗎?

答案1

大多數安裝軟體的方法都需要特權使用者。

最小特權和問責原則意味著登入應該由特權較低的個人使用者進行,並在必要時被授予特權。 Ansible 可以幫助您成為插件,透過 doas 或 sudo 或其他方式以另一個使用者的身份運行某些東西。

一般來說,密碼是一種垃圾身份驗證方法。熵低,歷史上實踐不佳,且不方便自動化。有些作為其他使用者方法運行,要求您提供個人密碼,這減少了對共享憑證的需求。 Ansible 可以提示使用者輸入這樣的密碼--ask-become-pass

ansible-vault(和安全系統查找插件)僅保護靜態數據,而不是在使用時保護數據。運行 Ansible 的人將有權訪問明文秘密。如果啟用了足夠詳細的調試,它可能是可見的。

鑑於上述所有情況,一個不錯的解決方案可能是配置為無密碼。 ssh 中使用金鑰或證書,但使用變成以 root 身分執行套件任務。但是,他們作為 root 所做的事情不能受到限制。 Ansible 產生臨時腳本來執行模組,並且沒有好的 sudo 規則來限制如下命令/bin/sh -c '/usr/bin/python3 ~/.ansible/tmp/ansible-tmp-1628781435.871488-116497-130276452381107/AnsiballZ_setup.py'

為用戶運行特權劇本。鼓勵他們提出要做什麼的意見,但不要給他們這樣做的憑證。將此類劇本置於版本控制中並接受更改請求。按照您喜歡的方式運行戲劇:

  • ansible-runner 安排在 cron 中。
  • 從合併觸發的管道到版本控制中的生產分支。
  • 作業從 AWX 使用者介面運行。

相關內容