Turgon37.sudoers

Ansible Rolle Sudo/Sudoers

Build-Status Lizenz Ansible Rolle

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
Über das Projekt

This role configure sudoers file

Installieren
ansible-galaxy install Turgon37.sudoers
GitHub Repository
Lizenz
mit
Downloads
4.8k
Besitzer
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté