j1ngk3.sssd_ldap
lae.system_ldap
Zainstaluj i skonfiguruj SSSD do uwierzytelniania LDAP na poziomie systemu na serwerze Active Directory obsługującym LDAP.
Zmienne roli
Przeczytaj defaults/main.yml, aby zobaczyć listę wszystkich konfigurowalnych zmiennych roli. Domyślne ustawienia powinny wystarczyć dla większości użytkowników, więc omówimy tylko te, które muszą być zdefiniowane w tej sekcji.
Poniższe zmienne muszą być skonfigurowane do komunikacji z Twoim serwerem LDAP/AD:
| Zmienna | Przykład | Opis | 
|---|---|---|
| system_ldap_domain | LDAP | Etykieta dla sssd do identyfikacji tej konfiguracji/domeny. | 
| system_ldap_search_base | OU=Idol Schools,DC=Aikatsu,DC=net | Domyślny bazowy DN do wykonywania operacji LDAP użytkowników. | 
| system_ldap_uris | - ldaps://ldap-tyo.example.aikatsu.net:636- ldaps://ldap-ngo.example.aikatsu.net:636 | Lista URI serwerów LDAP, z którymi sssd powinien się połączyć. | 
| system_ldap_bind_dn | CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net | Domyślny bind DN do wykonywania operacji LDAP. | 
| system_ldap_bind_password | sunrise | Token uwierzytelniający dla domyślnego bind DN. Aktalnie obsługiwane są tylko hasła w postaci czystego tekstu. | 
| system_ldap_access_filter_groups | - CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net | Lista grup DN uprawnionych do dostępu do bieżącego hosta. | 
| system_ldap_access_unix_groups | - operations | Powinno być w zasadzie takie samo jak system_ldap_access_filter_groups, ale używające nazw grup UNIX (zwykle CN). | 
| system_ldap_access_filter_users | - hoshimiya.ichigo- nikaidou.yuzu | Lista nazw użytkowników (przekazywanych do filtra (sAMAccountName=%s)domyślnie) uprawnionych do dostępu do bieżącego hosta. | 
| system_ldap_sudo_groups | - operations | Lista grup skonfigurowanych do umożliwienia używania sudo na bieżącym hoście. | 
| system_ldap_sudo_users | - hoshimiya.ichigo | Lista użytkowników skonfigurowanych do umożliwienia używania sudo na bieżącym hoście. | 
Przykładowy Playbook
Poniżej znajduje się to, co zazwyczaj używamy w playbooku wielonajemnym:
---
- hosts: all
  user: ansible
  roles:
    - lae.system_ldap
  become: True
Znaleźć można również przykładowy playbook w katalogu testowym
Rozszerzone użycie
W tej sekcji playbook w powyższym bloku kodu to system_ldap.yml. 
Zobaczmy układ playbooka:
- system_ldap.yml
- inventory
- group_vars/
    - all/
        - main.yml
    - starlight/
        - main.yml
- host_vars/
    - research-node01
- roles/
    - requirements.yml
W tym układzie zazwyczaj możemy grupować kontrolę dostępu według grupy hostów lub poszczególnych hostów. Są pewne zmienne, które prawdopodobnie chcesz ustawić dla wszystkich hostów, w group_vars/all/main.yml (lub po prostu group_vars/all, jeśli nie używasz katalogu):
---
system_ldap_domain: aikatsu.net
system_ldap_bind_dn: CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_bind_password: sunrise
system_ldap_search_base: OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_uris:
  - ldaps://ldap-tyo.example.aikatsu.net:636
  - ldaps://ldap-ngo.example.aikatsu.net:636
system_ldap_access_filter_groups:
  - CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_filter_users: []
system_ldap_access_unix_groups:
  - operations
system_ldap_sudo_groups:
  - operations
system_ldap_sudo_users: []
Tutaj używamy konta użytkownika do wyszukiwania i hasła (system_ldap_bind_*), aby synchronizować się z serwerem LDAP przez SSL (z opcjonalnym serwerem LDAPS), umożliwiając grupie "operations" uwierzytelnienie oraz dostęp do uprawnień roota.
Zmienna pliku grupy starlight może wyglądać tak:
---
system_ldap_allow_passwordauth_in_sshd: true
system_ldap_access_filter_users:
  - hoshimiya.ichigo
system_ldap_sudo_users:
  - hoshimiya.ichigo
To pozwala użytkownikowi o nazwie hoshimiya.ichigo logować się na maszynach w grupie hostów starlight, a także używać sudo na nich. Zmienne powyżej są porównywane z wartością sAMAccountName z serwera LDAP-AD dla wszystkich użytkowników w grupie system_ldap_search_base.
Możesz również określić grupy, ale musisz dostarczyć pełny DN dla zmiennej filtru grupy. Prawdopodobnie będziesz chciał również skopiować zmienne związane z grupami z all. Dla innych zmiennych możesz użyć po prostu CN. Przykład:
system_ldap_access_filter_groups:
  - CN=operations,OU=Security Groups,OU=Global,OU=Idol Schools,DC=Aikatsu,DC=net
  - CN=starlight-students,OU=Security Groups,OU=Starlight Academy,OU=Idol Schools,DC=Aikatsu,DC=net
system_ldap_access_unix_groups:
  - operations
  - starlight-students
system_ldap_sudo_groups:
  - operations
Tutaj dodajemy grupę LDAP starlight-students, ale tylko pozwalamy jej na logowanie.
Rozwój
Najpierw sklonuj i zrób gałąź lub forknij to repozytorium, wprowadź zmiany, komituj i złóż pull request.
Aby śledzić zmiany w ansible vault, dodaj .gitconfig do swojej konfiguracji git:
echo -e "[include]\n\tpath = ../.gitconfig" >> .git/config
Testowanie
vagrant box add debian/stretch64
vagrant up
vagrant provision
Licencja
MIT
ansible-galaxy install j1ngk3.sssd_ldap