Интеграция с LDAP¶
Интеграция OpenStack с LDAP¶
Для интеграции OpenStack с каталогом пользователей по протоколу LDAP выполните следующие шаги:
Создайте домен. Для этого перейдите в OpenStack CLI и выполните команду создания домена
openstack domain create <домен ldap>, указав имя добавляемого домена.Добавьте параметры в файл
globals.ymlсоответствующего региона, указав имя добавляемого домена (в интерфейсе Horizon в выпадающем списке домены будут отображаться в той последовательности, в которой они указаны в этом файле):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.Проверьте, что пользователи и группы 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 с 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 с 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.<FQDN внешнего VIP>" 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 служебного пользователя>"
Создайте новый файл
/config/opensearch/roles_mapping.ymlс содержимым:all_access: backend_roles: - "<группа пользователя admin>" readall: backend_roles: - "<группа пользователя reader>"
Выполните развёртывание региона с указанием тегов
commonиopensearch.
Проверка корректности настройки интеграции с LDAP¶
Выполните проверки работы ролевой модели:
AdminUI: войдите пользователем с ролью admin, убедитесь в доступности кнопки Создать ВМ и корректном отображении мониторинга. Войдите пользователем с ролью reader, убедитесь в недоступности кнопок создания ресурсов.
GitLab: создайте тестовый Merge Request, убедитесь в требовании одобрения двух администраторов. Проверьте блокировку прямых коммитов в master.
NetBox: войдите пользователями с разными ролями, проверьте доступность кнопок управления в соответствии с назначенными правами.