Fórum Root.cz
Hlavní témata => Server => Téma založeno: Jirka_hav 01. 08. 2019, 08:00:40
-
Doposud jsem zpravoval severy manuálně a z bezpečnostních důvodů jsem měl na každém severu jiné heslo. Teď jsem si začal hrát s ansible a trochu jsem narazil. Z toho co jsem dokázal zjistit se mi totiž zdá, že pokud chci spustit playbook nad více servery a chci escalovat práva pomocí sudo, tak všechny tyto servery musí mít stejné sudo heslo, což mi nepřijde příliš bezpečné. Jak se toto obvykle řeší?
-
Proč řešíš hesla a ne klíče?
-
K serverů jako takovým se přihlašuji přes ssh pomocí klíče, ale po přihlášení se mě ještě sudo zeptá na heslo a to je to heslo, ktré řeším.
-
Pro správu serverů se nepoužívá sudo. sudo je určené pro případy, kdy je potřeba běžnému uživateli (ne správci) umožnit jednu nebo pár specifických činností, ke kterým by jinak bylo potřeba oprávnění roota. Navíc už to bylo překonáno možnostmi capabilities.
-
Spoustet ansible s beznym uzivatelem a eskalovat pomoci sudo je celkem bezna vec. Pokud mas na kazdem stroji jine heslo, tak bych ho ulozil do souboru a definoval ho v host_vars.
-
Pro přihlášení pomocí ansible vytvořit dedikovaného uživatele a přihlašovat se pomocí klíčů.
Potom pro tohoto uživatele upravit sudoers aby nevyžadoval heslo.
https://www.blaszkowski.com/2018/09/02/ansible-add-user-to-sudo (https://www.blaszkowski.com/2018/09/02/ansible-add-user-to-sudo)
-
Velke mnozstvi tehlech problemu resi projekt debops. Minimalne pro inspiraci se to hodi (role se jmenuje 'bootstrap').
Resi to presne jak je napsano vyse, jeden uzivatel se sudem bez hesla a tenhle uzivatel se prihlasuje na ty stroje pres ssh klice.
-
Pro správu serverů se nepoužívá sudo.
Co by se tedy místo sudo mělo používat? Jak by měl správce ideálním případě postupovat?
Pokud mas na kazdem stroji jine heslo, tak bych ho ulozil do souboru a definoval ho v host_vars.
Tohle moc nechápu mohl by jsi to trochu rozvést?
-
Co by se tedy místo sudo mělo používat? Jak by měl správce ideálním případě postupovat?
Bavíme se o správě serverů? Pak místo sudo nepoužívat nic. Správce se přihlásí jako root, žádné sudo tedy nepotřebuje. Pokud chce správce dělat něco, k čemu nepotřebuje rootovská oprávnění, ve vedlejším terminálu se přihlásí jako běžný uživatel.
-
Tohle moc nechápu mohl by jsi to trochu rozvést?
pro každy stroj můžete nastavit proměné pro připojení zvlášť, já ukládám co stroj to adresar asi nějak takto:
/skupina/hosts_vars/fdqn/{vars.yaml,vault.yaml}
ve vars.yaml definuji veškeré parametry pro připojení a mezi nimi heslo pro sudo
ansible_become: true
ansible_become_pass: '{{ vault_sudo_pass }}'
v tomto případě je heslo schované v ansible valut aby se nepoflakovalo v plaintextu + určitě koukněte do dokumentace podle toho jakou verzi ansible používáte druhá proměná může být ansible_become_password
-
já to dělám tak že na začátku playbooku je toto
user: uživatel
become: yes
become_method: su
become_user: root
a v /etc/pam.d/su
mám tento řádek
auth sufficient pam_wheel.so trust group=uživatel
ale samozřejmě používám přihlášení ssh klíči. Přes ssh se mi vůbec nedá heslem přihlásit
tzn. uživatel pod kterým pouštím ansible použije svůj privátní klíč. Jeho public klíč je na jednotlivých strojích rozdistribuován. Takže pak žádná hesla netřeba řešit.