Ermöglicht dem Benutzer, das Playbook auszuführen, ohne ihm ein Passwort geben zu müssen

Ermöglicht dem Benutzer, das Playbook auszuführen, ohne ihm ein Passwort geben zu müssen

Ich habe ein Ansible-Playbook, das ich einem normalen Benutzer zum Installieren einer Anwendung auf einem CentOS-Server erlauben möchte, aber ich möchte ihm nicht unbedingt die Anmeldeinformationen geben. Ich weiß, dass Sie Ansible Vault zum Speichern verschlüsselter Daten verwenden können, aber meines Wissens können Sie diese Daten auch ziemlich einfach entschlüsseln. Irgendwelche Ideen, ob dies möglich ist und wie man es erreicht?

Antwort1

Für die meisten Methoden zur Installation von Software ist ein privilegierter Benutzer erforderlich.

Die Grundsätze der geringsten Privilegien und Verantwortlichkeit implizieren, dass Anmeldungen mit einem weniger privilegierten persönlichen Benutzer erfolgen sollten und bei Bedarf Privilegien gewährt werden sollten. Ansible kann dabei helfen, Plugins zu werden, die Dinge als ein anderer Benutzer für Sie ausführen, mit doas oder sudo oder was auch immer.

Passwörter sind im Allgemeinen eine nutzlose Authentifizierungsmethode. Sie haben eine niedrige Entropie, sind historisch gesehen schlechte Praktiken und lassen sich nicht einfach automatisieren. Einige Methoden, die als anderer Benutzer ausgeführt werden, fragen nach Ihrem persönlichen Passwort, wodurch die Notwendigkeit gemeinsamer Anmeldeinformationen reduziert wird. Ansible kann den Benutzer mit--ask-become-pass

ansible-vault (und Sicherheitssystem-Lookup-Plugins) schützen Daten nur im Ruhezustand, nicht während der Nutzung. Die Person, die Ansible ausführt, hat Zugriff auf das Klartextgeheimnis. Es kann sichtbar sein, wenn ausreichend ausführliches Debugging aktiviert ist.

Angesichts all dessen könnte eine gute Lösung darin bestehen, become ohne Passwörter zu konfigurieren. ssh verwendet einen Schlüssel oder ein Zertifikat, aber verwenden Sie become, um eine Paketaufgabe als Root auszuführen. Was sie als Root tun, kann jedoch nicht eingeschränkt werden. Ansible generiert temporäre Skripte zum Ausführen von Modulen, und es gibt keine gute sudo-Regel, um Befehle einzuschränken, die wie folgt aussehen:/bin/sh -c '/usr/bin/python3 ~/.ansible/tmp/ansible-tmp-1628781435.871488-116497-130276452381107/AnsiballZ_setup.py'

Führen Sie privilegierte Playbooks für Benutzer aus. Ermutigen Sie sie, Vorschläge zu machen, was zu tun ist, aber geben Sie ihnen keine Anmeldeinformationen dafür. Legen Sie solche Playbooks in die Versionskontrolle und akzeptieren Sie Änderungsanforderungen. Führen Sie die Plays aus, wie Sie möchten:

  • Ansible-Runner in cron geplant.
  • Von einer durch Zusammenführungen ausgelösten Pipeline zum Produktionszweig in der Versionskontrolle.
  • Jobs werden über eine AWX-Benutzeroberfläche ausgeführt.

verwandte Informationen