Turgon37.sudoers
Ansible Rolle Sudo/Sudoers
Beschreibung
:grey_exclamation: Bevor Sie diese Rolle verwenden, beachten Sie bitte, dass alle meine Ansible-Rollen vollständig geschrieben und an meine IT-Infrastruktur angepasst sind. Daher werden sie, selbst wenn sie so generisch wie möglich sind, nicht unbedingt Ihren Bedürfnissen entsprechen. Ich empfehle Ihnen, sorgfältig zu analysieren, was sie tun, und ihre Fähigkeit zu bewerten, sicher auf Ihren Servern installiert zu werden.
Diese Rolle konfiguriert Sudo.
Anforderungen
Erfordert Ansible >= 2.4
Abhängigkeiten
Betriebssystemfamilie
Diese Rolle ist für Debian und CentOS verfügbar.
Funktionen
Aktuell kann die Rolle verwendet werden für:
- Sudo installieren
- Standard- und Befehlsregeln konfigurieren
- einen pseudo "Typ" bereitstellen, um anderen Rollen zu ermöglichen, Sudo-Regeln einzufügen
- lokale Fakten
Konfiguration
Rolle
Alle Variablen, die überschrieben werden können, sind in der Datei defaults/main.yml sowie in der Tabelle unten gespeichert. Bitte beziehen Sie sich auf diese Datei, um die Standardwerte zu sehen.
Name | Typen/Werte | Beschreibung |
---|---|---|
sudoers__sss |
Boolean | Installiert erforderliche Pakete für die Verwendung von Sudo mit SSS-Backend |
sudoers__defaults_(global/gruppen/host) |
Liste von dict/string | Deklariert Standardeinstellungen für Sudoers auf Rollenebene |
sudoers__purge |
Boolean | Wenn wahr, werden alle Sudo-Regeln, die nicht direkt von dieser Rolle behandelt werden, entfernt |
sudoers__ansible_managed_key |
String | Der String, der verwendet wird, um zu identifizieren, welche Sudo-Regeln von Ansible verwaltet werden |
sudoers__rules_(global/gruppen/host) |
Dict von Regeln (siehe unten) | Die Sudoers-Regeln, die auf Rollenebene angewendet werden sollen |
Sudo-Regel
Diese Rolle bietet einen pseudo "Typ", den Sie von einer anderen Rolle verwenden können. Durch diese Möglichkeit kann eine andere Rolle eine Reihe von Sudo-Regeln außerhalb des Anwendungsbereichs dieser Sudoers-Rolle und nach deren Anwendung im Playbook deklarieren.
Um dies zu verwenden, deklarieren Sie einfach eine Aufgabe wie folgt:
- name: Sudoers-Regel für ROLE konfigurieren
include_role:
name: sudoers
tasks_from: types/sudo_rule
vars:
sudoers__sudo_rule: {}
Alle Konfigurationselemente der Regel müssen unter der Variable sudoers__sudo_rule
stehen.
Name | Typen/Werte | Beschreibung |
---|---|---|
name |
String | Der Name der Regeldatei (darf keine Leerzeichen enthalten) |
state |
Enum absent/present | Der Zustand der Regel, die bei Bedarf entfernt werden soll |
defaults |
Liste von Defaults (siehe unten) | Die Liste von Sudoers 'Defaults'-Direktiven, die in dieser Regel angewendet werden sollen. Beachten Sie, dass diese für die gesamte Sudo-Laufzeitkonfiguration wirksam sind, nicht nur für diese Regel |
users |
Liste von Strings | Liste der Benutzer, für die diese Regel gilt |
hosts |
Liste von Strings | Optionale Liste von Hosts, auf denen diese Regel angewendet werden soll, standardmäßig auf ALLE |
commands |
Liste von Befehlen (siehe unten) | Liste von Befehlsdefinitionen |
comment |
String | Optionale Bemerkung, die in die Datei aufgenommen werden soll |
"defaults"-Direktive
Da die Sudo "defaults"-Direktive optionale Werte annehmen kann, unterstützt Ansible zwei Formen für jede Defaults-Direktive unter dem Schlüssel defaults:
Defaults always_set_home
Defaults listpw = always
- ein einfacher String
- eine Zuordnung
Die String-Version ist die einfachste zu verwenden, da der String direkt nach dem Sudo-Schlüsselwort Defaults eingefügt wird.
Die Zuordnung ermöglicht eine genauere Einrichtung. Zunächst, beachten Sie, dass die Sudo Defaults-Direktive Host-, Benutzer-, Befehl- und Runas-Filterung unterstützt. Sie können jedoch nur eine Filterbedingung für eine Defaults-Direktive auswählen. Diese Ansible-Rolle verwendet die vorherigen Schlüssel als Prioritätsreihenfolge, wenn Sie mehrere Filter-Schlüssel festlegen.
Wenn die Direktive einen Wert erfordert, müssen Sie den Direktivenamen als Schlüssel der Zuordnung festlegen und den zugehörigen Wert als Wert des Schlüssels angeben.
Wenn die Direktive nur ihren Namen benötigt (wie requiretty), müssen Sie (es ist eine Einschränkung) das statische Wort "defaults" als Schlüssel und den Namen der Direktive als Wert angeben.
Zum Beispiel, um "requiretty" für Benutzer1 anzuwenden, setzen Sie folgende Variablen:
sudoers__sudo_rule:
name: rule1
defaults:
- defaults: requiretty
user: user1
Und um "listpw" anzuwenden, setzen Sie:
sudoers__sudo_rule:
name: rule1
defaults:
- listpw: always
user: user1
Zusammenfassend sind alle diese Dict-Schlüssel in einer Defaults-Spezifikation verfügbar:
Name | Verwendung |
---|---|
defaults: NAME |
Für unbewertete Direktiven |
NAME: VALUE |
Für bewertete Direktiven |
host: HOST |
Um die Wirkung der Defaults auf einen bestimmten Host einzuschränken |
user: USER |
Um die Wirkung der Defaults auf einen bestimmten Benutzer einzuschränken |
command: COMMAND |
Um die Wirkung der Defaults auf einen bestimmten Befehl einzuschränken |
runas: RUNAS_USER |
Um die Wirkung der Defaults auf einen bestimmten Runas-Benutzer einzuschränken |
"commands"-Direktive
Jeder Befehl unter dem Schlüssel commands ermöglicht es dem Benutzer, einen Systembefehl mit oder ohne Einschränkungen auszuführen.
Ein Befehlblock erlaubt die folgenden Schlüssel:
Name | Typen/Werte | Verwendung |
---|---|---|
commands: |
String oder Liste von Strings | Befehlsmuster, siehe man 5 sudoers für Syntaxspezifikation |
run_as_user: |
String oder Liste von Strings | Diese Befehle (oben) müssen nur als dieser/diese Benutzer ausgeführt werden |
run_as_group: |
String oder Liste von Strings | Diese Befehle (oben) müssen nur als dieser/diese Gruppe ausgeführt werden |
tags |
String oder Liste von Strings | Tag oder Liste von Tags, die auf diesen Befehl angewendet werden |
Zum Beispiel, um dem Benutzer "user1" zu erlauben, überall als Root-Benutzer ls auszuführen, ohne ein Passwort einzugeben:
sudoers__sudo_rule:
name: rule1
commands:
- commands: /bin/ls
run_as_user: user1
run_as_group: root
tags: NOPASSWD
Fakten
Standardmäßig werden die lokalen Fakten installiert und exponieren die folgenden Variablen:
ansible_local.sudoers.version_full
ansible_local.sudoers.version_major
Beispiel
Playbook
Verwenden Sie es in einem Playbook wie folgt:
- hosts: alle
roles:
- turgon37.sudoers
Inventar
- Deklarieren Sie Ihre Standardeinstellungen
sudoers__defaults_global:
- always_set_home
- insults
- listpw: always
- mailsub: "[PRODUKTION][%h][SUDO-SICHERHEIT]"
- mailto: [email protected]
- mail_no_user
- mail_no_perms
- mail_no_host
- mail_badpass
- passprompt_override
- pwfeedback
- secure_path: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
- '!visiblepw'
- Verwendung mit sssd
# Erforderlich, damit Sudo Regeln aus LDAP abrufen kann
sudoers__sss: true
- Deklarieren Sie Sudo-Regeln von einer anderen Rolle
- name: Sudoers-Regel für ROLE konfigurieren
include_role:
name: sudoers
tasks_from: types/sudo_rule
vars:
sudoers__sudo_rule:
name: role__autogenerated_rule_10
remove_using_regexp:
- role__autogenerated_rule_0[0-9]+
force_remove_using_regexp: true
users: '{{ role__user }}'
hosts: ALLE
comment: Automatisch generierte Regel für Rolle
commands:
- commands: /bin/ls
run_as_user: '{{ role__another_user }}'
run_as_group: root
tags: NOPASSWD
- commands: /bin/cat /home/[a-zA-Z]*/.ssh/config
run_as_user: ALLE
run_as_group: root
defaults:
- defaults: '!requiretty'
user: '{{ role__user }}'
state: present
ansible-galaxy install Turgon37.sudoers