![允許使用者在不提供密碼的情況下運行 playbook](https://rvso.com/image/769284/%E5%85%81%E8%A8%B1%E4%BD%BF%E7%94%A8%E8%80%85%E5%9C%A8%E4%B8%8D%E6%8F%90%E4%BE%9B%E5%AF%86%E7%A2%BC%E7%9A%84%E6%83%85%E6%B3%81%E4%B8%8B%E9%81%8B%E8%A1%8C%20playbook.png)
我有一個 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 使用者介面運行。