Интеграция с LDAP¶
Важно
Для интеграции с AD для сервисов LCM (GitLab, NetBox) и для Keystone должны использоваться отдельные ТУЗ.
Интеграция OpenStack с LDAP¶
Для интеграции OpenStack с каталогом пользователей по протоколу LDAP выполните следующие шаги:
Создайте домен. Для этого перейдите в OpenStack CLI и выполните команду создания домена
openstack domain create <домен ldap>, указав имя добавляемого домена.Добавьте параметры в файл
globals.ymlсоответствующего региона, указав имя добавляемого домена (в интерфейсе Horizon в выпадающем списке домены будут отображаться в той последовательности, в которой они указаны в этом файле):Предупреждение
При использовании ОС SberLinux параметры
horizon_keystone_multidomainиhorizon_keystone_domain_choicesне указывайте — для SberLinux Horizon в KeyStack недоступен.keystone_ldap_url: "ldaps://<имя сервера LDAP>:<порт LDAP>" horizon_keystone_multidomain: "True" horizon_keystone_domain_choices: Default: default Ldap: <домен LDAP>
Добавьте параметры в файл
/config/keystone/domains/keystone.ldap.confсоответствующего региона:[identity] driver = ldap [ldap] group_allow_create = False group_allow_delete = False group_allow_update = False group_desc_attribute = description group_id_attribute = cn group_member_attribute = member group_name_attribute = cn group_objectclass = group group_filter = "<фильтр групп LDAP>" password = "{{ ldap_password }}" query_scope = sub suffix = "<DN-суффикс LDAP>" user_tree_dn = "<DN-tree пользователей>" url = "{{ keystone_ldap_url }}" user = <DN служебного пользователя> user_filter = "<фильтр пользователей LDAP>" user_allow_create = False user_allow_delete = False user_allow_update = False user_enabled_attribute = userAccountControl user_enabled_default = 512 user_enabled_mask = 2 user_id_attribute = cn user_mail_attribute = mail user_name_attribute = sAMAccountName user_objectclass = person user_pass_attribute = userPassword group_tree_dn = "<DN-tree групп>" page_size = 0
При интеграции по протоколу LDAPS добавьте цепочку из корневых и промежуточных сертификатов в файл
certificates/ca/ldap.crtи соответствующую строку в файл конфигурацииkeystone.ldap.conf:[ldap] tls_cacertfile = "{{ openstack_cacert }}"
Поместите пароль пользователя
<DN служебного пользователя>в Vault в файл паролей региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml в полеldap_password.Выполните развёртывание региона с указанием тегов
keystoneиhorizon.Предупреждение
При использовании ОС SberLinux не указывайте в параметрах тег
horizon— из-за недоступности Horizon пайплайн завершится с ошибкой. Используйте только тегkeystone.Проверьте, что пользователи и группы LDAP видны в KeyStack в OpenStack CLI:
$ openstack user list --domain <домен LDAP> +------------------------------------------------------------------+----------------+ | ID | Name | +------------------------------------------------------------------+----------------+ | f82090b43940df5f7b8e77fb5e4ddaf04e60cecebc5e94dd63a5e0f53f219fe5 | user1 | +------------------------------------------------------------------+----------------+ $ openstack group list --domain <домен LDAP> +------------------------------------------------------------------+--------+ | ID | Name | +------------------------------------------------------------------+--------+ | ec6d01371e3160ab417c404fa07828a2e4c2d2e3147b762f9cf6f3555a601280 | group1 | +------------------------------------------------------------------+--------+
Создайте проект в OpenStack CLI или с помощью интерфейса Horizon:
$ openstack project create <проект> --domain <домен ldap>
Добавьте пользователей или группы в проект и дайте им права в них в OpenStack CLI:
$ openstack role add --project <проект> --user user1 --user-domain <домен ldap> member $ openstack role add --project <проект> --group group1 --user-domain <домен ldap> member
Интеграция Grafana с LDAP¶
Примечание
При включённой ролевой модели доступ к Grafana выполняется через Портал администратора без повторной аутентификации. Пользователь с ролью admin получает права Grafana Editor. Пользователи с ролями security_auditor и reader получают доступ только на чтение. Пользователи с ролями member, operator_vm, app_operator и os_operator не получают доступ к Grafana.
При необходимости интеграции Grafana с LDAP, выполните следующие шаги:
При интеграции по протоколу LDAPS добавьте цепочку из корневых и промежуточных сертификатов в файл
certificates/ca/ldap.crt.Поместите пароль пользователя
<DN служебного пользователя>в Vault в файл паролей региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml в полеldap_password.Создайте файл
grafana.ymlв папкеglobals.dрегиона и укажите в нём необходимые параметры:grafana_security_ldap_enabled: "yes" grafana_security_ldap_host: "<имя сервера LDAP>" grafana_security_ldap_port: "<порт LDAP>" grafana_security_ldap_use_ssl: "true" grafana_security_ldap_start_tls: "false" grafana_security_ldap_ssl_skip_verify: "false" grafana_security_ldap_bind_dn: "<DN служебного пользователя>" grafana_security_ldap_bind_password: "{{ ldap_password }}" grafana_security_ldap_search_filter: "<фильтр пользователей LDAP>" grafana_security_ldap_search_base_dns: "<DN-tree пользователей>"
Выполните развёртывание региона с указанием тега
grafana.
Интеграция OpenSearch с LDAP¶
Примечание
При включённой ролевой модели доступ к OpenSearch выполняется через Портал администратора без повторной аутентификации. Пользователь с ролью admin получает административный доступ. Пользователи с ролями security_auditor и reader получают доступ только на чтение. Пользователи с ролями member, operator_vm, app_operator и os_operator не получают доступ к OpenSearch.
При необходимости интеграции OpenSearch с LDAP, выполните следующие шаги:
При интеграции по протоколу LDAPS добавьте цепочку из корневых и промежуточных сертификатов в файл
certificates/ca/ldap.crt.Поместите пароль пользователя
<DN служебного пользователя>в Vault в файл паролей региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml в полеldap_password.Создайте файл
opensearch.ymlв папкеglobals.dрегиона и укажите в нём необходимые параметры:enable_opensearch_ldap: "yes" opensearch_admin_tls: "CN=backend.{{ kolla_external_fqdn }}" opensearch_ldap_hosts: - "<имя сервера LDAP>:<порт LDAP>" opensearch_ldap_bind_dn: "<DN служебного пользователя>" opensearch_ldap_password: "{{ ldap_password }}" opensearch_ldap_userbase: "<DN-tree пользователей>" opensearch_ldap_rolebase: "<DN-tree групп>" opensearch_ldap_verify_hostnames: "false" opensearch_ldap_enable_ssl: "true" fluentd_opensearch_password: "{{ ldap_password }}" fluentd_opensearch_user: "<DN служебного пользователя>"
В случае использования внешних сервисов (например, SecMan) в значение параметра
opensearch_admin_tlsнеобходимо включить дополнительные поля:opensearch_admin_tls: "CN=backend.{{ kolla_external_fqdn }},OU=<organizational unit>,O=<organization>,STREET=<street or address>,C=<country>"
Валидные значения для полей
OU,O,STREET,Cнеобходимо уточнять у администратора PKI-системы, выпустившей сертификат.Создайте новый файл
/config/opensearch/roles_mapping.ymlс содержимым:all_access: backend_roles: - "<группа пользователей admin>" readall: backend_roles: - "<группа пользователей security_auditor>" - "<группа пользователей reader>"
Выполните развёртывание региона с указанием тегов
commonиopensearch.
Проверка корректности настройки интеграции с LDAP¶
Выполните проверки работы ролевой модели:
Войдите в Портал администратора пользователем с ролью
admin. Убедитесь, что доступна кнопка Создать ВМ, корректно отображаются данные мониторинга и доступен переход в OpenSearch и Grafana.Войдите в Портал администратора пользователем с ролью
security_auditorилиreader. Убедитесь, что доступны просмотр ресурсов, данные мониторинга и логирования, но недоступны операции создания, изменения и удаления ресурсов.Войдите в Портал администратора пользователем с ролью
member,operator_vm,app_operatorилиos_operator. Убедитесь, что доступ ограничен разрешёнными разделами, а переходы в GitLab, NetBox, OpenSearch и Grafana недоступны.Войдите в GitLab пользователями с ролями
admin,security_auditorиreader. Убедитесь, что доступ к репозиториям соответствует назначенной роли, прямые коммиты вmasterзапрещены, а изменения выполняются через Merge Request.Войдите в NetBox пользователями с ролями
admin,security_auditorиreader. Убедитесь, что пользователь с рольюadminможет создавать, изменять и удалять объекты, а пользователи с ролямиsecurity_auditorиreaderимеют доступ только на чтение.