sssd_ldap
lae.system_ldap
Установить и настроить SSSD для аутентификации LDAP на уровне системы с использованием сервера Active Directory, поддерживающего LDAP.
Переменные роли
Посмотрите defaults/main.yml
, чтобы увидеть список всех настраиваемых переменных роли. Как правило, значения по умолчанию подходят для большинства пользователей, здесь мы рассмотрим только те, которые нужно определить.
Следующие параметры должны быть настроены для связи с вашим LDAP/AD сервером:
Переменная | Пример | Описание |
---|---|---|
system_ldap_domain |
LDAP |
Метка для sssd, чтобы использовать эту конфигурацию/домен. |
system_ldap_search_base |
OU=Idol Schools,DC=Aikatsu,DC=net |
Базовая DN по умолчанию для выполнения операций с пользователями LDAP. |
system_ldap_uris |
- ldaps://ldap-tyo.example.aikatsu.net:636 - ldaps://ldap-ngo.example.aikatsu.net:636 |
Список URI LDAP-серверов, к которым должен подключаться sssd. |
system_ldap_bind_dn |
CN=Naoto Suzukawa,OU=Service Accounts,OU=Idol Schools,DC=Aikatsu,DC=net |
DN по умолчанию для выполнения операций LDAP. |
system_ldap_bind_password |
sunrise |
Токен аутентификации для DN по умолчанию. В настоящее время поддерживаются только пароли в открытом виде. |
system_ldap_access_filter_groups |
- CN=operations,OU=Security Groups,OU=Idol Schools,DC=Aikatsu,DC=net |
Список DN групп, разрешенных для доступа к текущему хосту. |
system_ldap_access_unix_groups |
- operations |
Должен эффективно совпадать с system_ldap_access_filter_groups , но использовать их имена UNIX-групп (обычно CN). |
system_ldap_access_filter_users |
- hoshimiya.ichigo - nikaidou.yuzu |
Список имен пользователей (передается в фильтр (sAMAccountName=%s) по умолчанию), разрешенных для доступа к текущему хосту. |
system_ldap_sudo_groups |
- operations |
Список групп, для которых разрешено использование sudo на текущем хосте. |
system_ldap_sudo_users |
- hoshimiya.ichigo |
Список пользователей, для которых разрешено использование sudo на текущем хосте. |
Пример Playbook
Следующий пример обычно используется в мультиарендном playbook:
---
- hosts: all
user: ansible
roles:
- lae.system_ldap
become: True
Также есть пример playbook в каталоге тестов
Расширенное использование
В этом разделе playbook в кодовом блоке выше называется system_ldap.yml
.
Посмотрим на следующую структуру playbook:
- system_ldap.yml
- inventory
- group_vars/
- all/
- main.yml
- starlight/
- main.yml
- host_vars/
- research-node01
- roles/
- requirements.yml
В такой структуре мы обычно можем группировать контроль доступа по группе хостов или конкретному хосту. Есть некоторые переменные, которые вы, вероятно, захотите установить для всех хостов в group_vars/all/main.yml
(или просто group_vars/all
, если не используете каталог):
---
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: []
Здесь мы используем учетную запись поиска и пароль (system_ldap_bind_*
), чтобы синхронизироваться с LDAP-сервером по SSL (с резервным LDAPS-сервером), позволяя группе "operations" аутентифицироваться, а также получать права root.
Файл переменных группы starlight
может выглядеть так:
---
system_ldap_allow_passwordauth_in_sshd: true
system_ldap_access_filter_users:
- hoshimiya.ichigo
system_ldap_sudo_users:
- hoshimiya.ichigo
Это позволяет пользователю с именем hoshimiya.ichigo
входить на машины в группе хостов starlight
, а также использовать sudo на них. Переменные выше соответствуют значению sAMAccountName
вашего LDAP-сервера с поддержкой AD для любых пользователей из группы system_ldap_search_base
.
Вы также можете указать группы, но вам нужно будет предоставить полный DN для переменной фильтра группы. Вам, вероятно, также нужно будет скопировать переменные, связанные с группами, из all
. Для остальных переменных вы можете просто использовать CN. Например:
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
Здесь мы добавляем группу LDAP starlight-students
, но разрешаем им только вход в систему.
Разработка
Сначала клонируйте и создайте ветку или форкните этот репозиторий, внесите изменения, закоммитьте и отправьте запрос на интеграцию.
Чтобы отслеживать изменения ansible vault, добавьте .gitconfig в вашу конфигурацию git:
echo -e "[include]\n\tpath = ../.gitconfig" >> .git/config
Тестирование
vagrant box add debian/stretch64
vagrant up
vagrant provision
Лицензия
MIT
ansible-galaxy install j1ngk3/sssd_ldap