FreeIPA: sudo-Regel für den Ansible-Benutzer

Veröffentlicht am Kategorisiert in Ansible, FreeIPA, Gruppenrichtlinien, Linux Keine Kommentare zu FreeIPA: sudo-Regel für den Ansible-Benutzer

Ansible basiert auf dem SSH-Zugriff auf entfernte Rechner. Normalerweise soll Ansible auch administrative Tätigkeiten im Netzwerk wahrnehmen, und dafür bedarf es Administratorrechte, die auf Linux-Rechnern üblicherweise nicht direkt über den oft gar nicht existenten oder nicht aktivierten root-Benutzer, sondern über das Programm sudo verliehen werden. Wer welche Proramme in wessen Namen ausführen darf, bestimmt die Datei /etc/sudoers. In einer Domäne mit zahlreichen Mitgliedern wäre es aber mühselig, die sudoers-Datei auf allen Rechnern einzeln zu verändern, um jemandem erhöhte Rechte zu geben – und vor allem, sie wieder zu entziehen. FreeIPA bietet die Möglichkeit, sudo-Rechte mit sogenannten sudo-Regeln zentral zu steuern.

Diese Anleitung kann für sich genommen hilfreich sein, baut aber auf den folgenden Beiträgen auf:

Zuerst gebe ich dem Benutzer Root-Rechte auf allen Rechnern, die Mitglied der Domäne sind:

kinit admin
ipa sudorule-add ansible --hostcat=all --cmdcat=all --runasusercat=all --runasgroupcat=all
ipa sudorule-add-user ansible --users ansible.ssh

Wenn man sich nun mit dem Ansible-Benutzer über SSH an einem Rechner, der Mitglied der Domäne ist, anmeldet, kann man sich die geltenden sudo-Rechte für diesen Benutzer anzeigen lassen und die Richtlinie auf diese Weise testen:

sudo -l

Die Ausgabe sollte nach Eingabe des Passworts lauten:

Der Benutzer ansible.ssh darf die folgenden Befehle auf cgn-ansible01 ausführen:
    (ALL : ALL) ALL

Sollte stattdessen wiederholt nach dem Passwort gefragt werden, obwohl das Passwort stimmt, verbieten wahrscheinlich die Host-Based-Access-Control-Regeln von FreeIPA die Nutzung von sudo. Erst wenn HBAC-Regeln sudo im Allgemeinen erlauben, wird die oben erstellte sudo-Regel angewendet. Um speziell den Ansible-Benutzer für sudo auf allen Rechnern zu berechtigen, führe ich folgende Befehle aus:

kinit admin
ipa hbacrule-add allow_ansible_sudo --hostcat=all --desc="Allow ansible.ssh sudo access to all hosts."
ipa hbacrule-add-user allow_ansible_sudo --users=ansible.ssh
ipa hbacrule-add-service allow_ansible_sudo --hbacsvcs=sudo

Nun sollte die Anzeige der sudo-Rechte mit dem Ansible-Benutzer funktionieren:

sudo -l

Mit der Kombination von sudo-Rechten und SSH-Zugriff ist Ansible in der Lage, die Rechner der Domäne zu konfigurieren, Software zu installieren, Updates einzuspielen und vieles andere mehr zu tun. In meiner Testumgebung nutze ich für meine Ansible-Playbooks der Einfachheit halber einen einzigen Benutzer mit umfassenden Rechten. Es ist aber natürlich möglich und sehr zu empfehlen, für unterschiedliche Aufgaben unterschiedliche Benutzer mit unterschiedlichen SSH-Schlüsseln zu verwenden.

Von Pascal Korz

IT Systems Engineer in und aus dem schönen Köln

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert