Turgon37.sudoers

Ansible Rola Sudo/Sudoers

Status budowy Licencja Rola Ansible

Opis

:grey_exclamation: Przed użyciem tej roli, pamiętaj, że wszystkie moje role Ansible są napisane i dostosowane do mojej infrastruktury IT. Choć są jak najbardziej ogólne, niekoniecznie spełnią Twoje potrzeby. Zalecam dokładną analizę ich działania i ocenę możliwości ich bezpiecznej instalacji na Twoich serwerach.

Ta rola konfiguruje sudo.

Wymagania

Wymaga Ansible >= 2.4

Zależności

Rodzina systemów operacyjnych

Ta rola jest dostępna dla Debian i CentOS.

Funkcje

Obecnie rola może być używana do:

  • instalacji sudo
  • konfigurowania domyślnych ustawień i zasad
  • udostępnienia pseudo " typu", aby umożliwić innym rolom dodawanie zasad sudo
  • lokalne fakty

Konfiguracja

Rola

Wszystkie zmienne, które można nadpisywać, są przechowywane w pliku defaults/main.yml oraz w tabeli poniżej. Aby zobaczyć wartości domyślne, sprawdź ten plik.

Nazwa Typy/Wartości Opis
sudoers__sss Boolean Instalacja pakietów niezbędnych do używania sudo z backendem sss
sudoers__defaults_(global/group/host) Lista dict/string Deklaracja domyślnych ustawień dla sudoers na poziomie roli
sudoers__purge Boolean Jeśli prawda, wszystkie zasady sudo, które nie są bezpośrednio obsługiwane przez tę rolę, zostaną usunięte
sudoers__ansible_managed_key String Ciąg używany do identyfikacji, które zasady sudo są zarządzane przez ansible
sudoers__rules_(global/group/host) Dict zasad (zobacz poniżej) Zasady sudo do zastosowania na poziomie roli

Zasada sudo

Ta rola udostępnia pseudo "typ", którego możesz używać z innej roli. Pozwala to innej roli na deklarację zestawu zasad sudo niezależnie od zakresu tej roli sudoers i ich użycie w playbooku.

Aby to wykorzystać, wystarczy zadeklarować zadanie w ten sposób:

- name: Skonfiguruj zasady sudoers dla ROLE
  include_role:
    name: sudoers
    tasks_from: types/sudo_rule
  vars:
    sudoers__sudo_rule: {}

Cała konfiguracja zasad musi być pod zmienną o nazwie sudoers__sudo_rule.

Nazwa Typy/Wartości Opis
name String Nazwa pliku zasady (nie może zawierać spacji)
state Enum absent/present Stan zasady do usunięcia, jeśli to konieczne
defaults Lista domyślnych (zobacz poniżej) Lista dyrektyw 'defaults' sudoers do zastosowania w tej zasadzie. Należy pamiętać, że będą one miały wpływ na całą konfigurację uruchomienia sudo, a nie tylko na tę zasadę
users Lista stringów Lista użytkowników, dla których ta zasada będzie miała zastosowanie
hosts Lista stringów Opcjonalna lista hostów, na których ta zasada będzie miała zastosowanie, domyślnie to WSZYSTKIE
commands Lista poleceń (zobacz poniżej) Lista definicji poleceń
comment String Opcjonalny komentarz do dodania do pliku
Dyrektywa "defaults"

Ponieważ dyrektywa "defaults" dla sudo może przyjmować opcjonalne wartości, Ansible wspiera dwie formy dla każdej dyrektywy defaults pod kluczem defaults:

Defaults   always_set_home
Defaults   listpw = always
  • prosta ciąg
  • mapowanie

Wersja z ciągiem jest najłatwiejsza w użyciu, ponieważ ciąg będzie po prostu umieszczony po słowie kluczowym sudo Defaults.

Wersja mapowania pozwala na bardziej precyzyjną konfigurację. Należy pamiętać, że dyrektywa sudo Defaults obsługuje filtrowanie na podstawie hosta, użytkownika, polecenia i runas. Możesz jednak wybrać tylko jeden warunek filtrujący dla dyrektywy defaults. Dlatego ta rola Ansible będzie używać wcześniejszej kolejności kluczy jako kolejności priorytetów, jeśli ustawisz wiele kluczy filtrujących.

Jeśli dyrektywa wymaga wartości, musisz ustawić nazwę dyrektywy jako klucz mapowania, a jego wartość jako wartość klucza.
Jeśli dyrektywa wymaga tylko swojej nazwy (jak requiretty), musisz (to ograniczenie) ustawić statyczne słowo "defaults" jako klucz i nazwę dyrektywy jako wartość.

Na przykład, aby zastosować "requiretty" dla użytkownika "user1", ustaw następujące zmienne:

sudoers__sudo_rule:
  name: rule1
  defaults:
    - defaults: requiretty
      user: user1

Aby zastosować "listpw", ustaw:

sudoers__sudo_rule:
  name: rule1
  defaults:
    - listpw: always
      user: user1

Podsumowując, wszystkie te klucze dict są dostępne wewnątrz specyfikacji defaults:

Nazwa Zastosowanie
defaults: NAME Dla dyrektyw bez wartości
NAME: VALUE Dla dyrektywy z wartościami
host: HOST Aby ograniczyć wpływ Defaults na określony host
user: USER Aby ograniczyć wpływ Defaults na określonego użytkownika
command: COMMAND Aby ograniczyć wpływ Defaults na określone polecenie
runas: RUNAS_USER Aby ograniczyć wpływ Defaults na określonego użytkownika runas
Dyrektywa "commands"

Każde polecenie pod kluczem commands pozwala użytkownikowi na uruchomienie polecenia systemowego z lub bez ograniczeń.

Blok polecenia pozwala na następujące klucze:

Nazwa Typy/Wartości Zastosowanie
commands: String lub lista stringów Wzór polecenia (lub polecenia), zobacz man 5 sudoers dla specyfikacji składni
run_as_user: String lub lista stringów To/to polecenia (powyżej) muszą być uruchamiane tylko jako ten/te użytkownik(e)
run_as_group: String lub lista stringów To/to polecenia (powyżej) muszą być uruchamiane tylko jako ta/te grupa/y
tags String lub lista stringów Tag lub lista tagów do zastosowania dla tego polecenia

Na przykład, aby zezwolić użytkownikowi "user1" na uruchomienie polecenia ls wszędzie jako użytkownik root bez wprowadzania hasła:

sudoers__sudo_rule:
  name: rule1
  commands:
   - commands: /bin/ls
     run_as_user: user1
     run_as_group: root
     tags: NOPASSWD

Fakty

Domyślnie lokalne fakty są instalowane i udostępniają następujące zmienne:

  • ansible_local.sudoers.version_full
  • ansible_local.sudoers.version_major

Przykład

Playbook

Użyj go w playbooku w następujący sposób:

- hosts: all
  roles:
    - turgon37.sudoers

Inwentarz

  • Deklaracja Twoich ustawień domyślnych
sudoers__defaults_global:
  - always_set_home
  - insults
  - listpw: always
  - mailsub: "[PRODUKCJA][%h][BEZPIECZEŃSTWO SUDO]"
  - 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'
  • Użycie z sssd
# Wymaga, aby sudo pobierał zasady z LDAP
sudoers__sss: true
  • Deklaracja zasad sudo z innej roli
- name: Skonfiguruj zasady sudoers dla ROLE
  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: ALL
      comment: Autogenerowana zasada dla roli
      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: ALL
          run_as_group: root
      defaults:
        - defaults: '!requiretty'
          user: '{{ role__user }}'
      state: present
O projekcie

This role configure sudoers file

Zainstaluj
ansible-galaxy install Turgon37.sudoers
Licencja
mit
Pobrania
4.8k
Właściciel
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté