Настроить службы каталогов для SaltStack Config с помощью протокола LDAP можно в рабочей области «Проверка подлинности». Этот протокол используется для подключения к таким службам, как Active Directory или Microsoft Azure.

Примечание: Для проверки подлинности пользователей в SaltStack Config при необходимости можно использовать несколько систем одновременно. Например, можно использовать поставщик удостоверений (IdP) на базе протоколов SAML или LDAP и одновременно хранить некоторые учетные данные пользователей на сервере RaaS. Однако SaltStack Config не позволяет настраивать более двух поставщиков SAML или одновременно два поставщика LDAP.

В SaltStack Config для проверки подлинности в системах на основе LDAP используется следующий процесс конечного сервера.

  • Предварительный просмотр — при предварительном просмотре параметров подключения SaltStack Config получает от сервера LDAP образец списка пользователей и групп, который позволяет проверить параметры конфигурации.
  • Вход — когда пользователь вводит учетные данные в форме входа в SaltStack Config, конечный сервер проверяет соответствие записям в базе данных. Затем инициируется многоэтапная процедура поиска, и после нахождения совпадения подтверждается подлинность пользователя. С учетом этой процедуры поиска отдельные включенные пользователи во включенных группах не отображаются в рабочей области «Роли» до первого входа пользователя.
  • Фоновые задачи — SaltStack Config периодически выполняет фоновое задание по поиску всех привязанных групп и пользователей в подключении к службе каталогов, чтобы подтвердить их существование. Если группа или пользователь удалены, конечный сервер деактивирует соответствующую ссылку в базе данных.
  • Архивные группы и пользователи — архивными становятся все группы, удаленные из подключения к службе каталогов. Хотя эти группы неактивны и пользователи не могут войти в систему, они по-прежнему отображаются в рабочей области «Роли» и их можно выбрать. Это также верно для всех удаленных пользователей, которые ранее присутствовали в рабочей области «Роли».
  • Вложенные группы — если имеются вложенные группы, то при включении родительской группы также по умолчанию включаются все дочерние группы.

Настройка подключения LDAP

Чтобы настроить LDAP, сначала создайте подключение, а затем включите пользователей и группы LDAP, подлинность которых требуется проверять для SaltStack Config. После включения групп или пользователей можно определить их параметры управления доступом на основе ролей (RBAC).

Можно использовать стандартные значения параметров, настроенные для вашей службы каталогов, например Active Directory или OpenLDAP.

Примечание: Описанные далее действия должен выполнять опытный администратор LDAP или Active Directory, который знаком с общей конфигурацией системы LDAP. Обратитесь за помощью к своему администратору.

Чтобы настроить службу каталогов LDAP, сделайте следующее.

  1. (Необязательно.) Перед настройкой LDAP целесообразно проверить подключение и выполнение запросов с помощью стороннего инструмента. Пользователи AD могут использовать LDP или ADSI Edit. Пользователям Linux рекомендуется применять инструмент ldapsearch.
    Примечание: Более подробную информацию о проверке с помощью этих инструментов см. в статье Проверка подключения к службе каталогов и устранение его неисправностей в центре поддержки.
  2. В боковом меню выберите Администрирование > Проверка подлинности.
  3. Щелкните Создать.
  4. В меню Тип конфигурации выберите LDAP.
  5. (Необязательно.) В разделе Настройки щелкните Предварительно устанавливать стандартные значения и в раскрывающемся списке выберите службу каталогов.

    Стандартные значения устанавливаются в соответствии с вашим выбором. Однако некоторые параметры, например DN для поиска пользователя, остаются незаполненными. Проверьте соответствие записей схеме службы каталогов и замените заполнители значениями для своей службы.

  6. Введите или проверьте информацию о своем подключении LDAP.

    Основные параметры

    Поле Описание
    Имя Имя подключения LDAP. Поскольку это только отображаемое имя, можно использовать любое имя, которое поможет отличать этот конечный сервер проверки подлинности от других.
    Узел Адрес сервера LDAP в формате полного доменного имени (FQDN) или IP-адреса.
    Порт Порт, на котором настроен сервер LDAP. По умолчанию используется порт 389 для LDAP без шифрования и порт 636 для LDAP по SSL.
    Фоновая синхронизация SaltStack Config проверяет всех пользователей и группу на конечном сервере проверки подлинности через заданный в этом параметре интервал (в минутах).
    SSL
    Включить SSL
    Установите этот флажок для подключения к серверу LDAP по протоколу SSL с использованием сертификата, указанного в настройках сервера RaaS. Если конфигурация отсутствует, для проверки SSL-подключения будет использоваться системное хранилище сертификатов. Подробную информацию о настройке сервера RaaS см. в разделе Настройка сертификатов SSL в руководстве по установке и настройке SaltStack Config.
    Важно!: Рекомендуется установить этот флажок. В противном случае SaltStack Config будет передавать информацию в виде обычного текста через незащищенное подключение.
    Проверять сертификат
    Установите этот флажок, чтобы проверять сертификаты SSL при подключении. Не устанавливайте флажок, чтобы пропустить проверку, например при использовании самозаверяющих сертификатов (не рекомендуется для производственной среды).

    Проверка подлинности

    Поле Описание
    Базовое DN для проверки подлинности

    Базовое различающееся имя LDAP. Это местоположение, из которого запрашиваются группы и пользователи, например DC=sse,DC=example,DC=com.

    Примечание: Страница сведений о LDAP содержит отдельные поля ввода для описанных ниже объектов класс лиц, имя атрибута учетной записи, класс групп, имя атрибута группы и расписание синхронизации. Поэтому эти объекты не следует включать в поле «Базовое DN».
    Привязанное DN администратора DN администратора, настроенное для сервера LDAP. SaltStack Config использует этот параметр для проверки подлинности при доступе к каталогу для поиска пользователей и групп. Введите данные в следующем формате: cn=Administrator,cn=Users,dc=example,dc=com.
    Пароль привязанного DN администратора

    Индивидуальный пароль администратора.

    Хранится в зашифрованном виде в базе данных. Не хранится в виде обычного текста.

    Фильтр привязанного DN для проверки подлинности

    Фильтр, используемый для выбора пользователя. Результат поиска — имя DN пользователя, которое SaltStack Config использует для привязки к каталогу и предоставления пользователю доступа к SaltStack Config. Полезно для ограничения количества результатов операции поиска.

    Примечание: Так как синтаксис фильтра может быть довольно сложным, перед заполнением этого поля рекомендуется проверить данные с помощью LDP, ldapsearch или другого подобного инструмента, чтобы при необходимости внести корректировки.

    В следующем примере фильтр возвращает только ту учетную запись, которая соответствует указанному имени пользователя, принадлежащему группам DevOps или Level II.

    (&(objectclass=user)(sAMAccountName={username})(|(memberOf=CN=DevOps,OU=Groups,OU=TestCompanyHQ,DC=adtest,DC=com)(memberOf=LevelII,OU=Groups,DC=adtest,DC=com)))

    Если используются предварительно настроенные стандартные значения, замените заполнители правильными значениями для вашей службы каталогов.

    Примечание: При настройке структуры леса оставьте это поле пустым.
    Имя атрибута удаленного уникального идентификатора Имя значения, которое используется для идентификации уникальных записей. Это атрибут уникального идентификатора для всех записей. В AD это ObjectGUID.

    Группы

    Поле Описание
    DN поиска группы База для поиска групп. Например, в AD это может быть cn=Groups,dc=example,dc=com. Указывает, в каком месте каталога следует искать группы. Этот параметр используется вместе с параметром «Область поиска группы» ниже.
    Область поиска группы

    Определяет глубину поиска по каталогу, начиная с базового уровня, указанного в параметре «DN поиска группы», и может принимать одно из четырех значений.

    baseObject
    Значение 0, которое часто именуется base. Используется для поиска только этого объекта (и никаких других).
    singleLevel
    Значение 1, которое часто именуется one. Используется для поиска совпадений только на базовом уровне среди ближайших дочерних объектов.
    wholeSubtree
    Значение 2 (или SUBTREE в ldap3), которое часто именуется sub. Используется для поиска на базовом уровне и всех подчиненных уровнях любой глубины.
    subordinateSubtree
    Значение 3, которое часто именуется subordinates. Действует аналогично wholeSubtree, но при этом игнорируются записи базового уровня.
    Фильтр DN поиска группы Поисковый фильтр для извлечения групп из каталога. Обычно это (objectClass=group), но в некоторых конфигурациях AD это может быть (objectCategory=group). Используется в дополнение к параметру «Класс группы» для более глубокой детализации.
    Класс группы Имя класса объекта, используемое для определения групп, например groupOfNames.
    Атрибут имени группы Имя атрибута, который нужно использовать для имени группы. Атрибут не может иметь несколько значений.
    Атрибут членства в группе Имя атрибута в записи пользователя, содержащей имя группы, например memberOf.

    Пользователи

    Поле Описание
    DN поиска пользователя База поиска пользователей, например cn=Users,dc=example,dc=com в AD или cn=people,cn=accounts,dc=example,dc=com в других службах каталогов. Указывает, в каком месте каталога следует искать пользователей. Этот параметр используется вместе с параметром «Область поиска пользователя» ниже.
    Область поиска пользователя Определяет глубину поиска по каталогу, начиная с базового уровня, указанного в параметре «DN поиска пользователя», и может принимать одно из четырех значений. См. четыре значения, приведенные в описании параметра «Область поиска группы».
    Фильтр DN поиска пользователя Поисковый фильтр для извлечения пользователей из каталога. Обычно это (objectClass=person), но в некоторых конфигурациях AD это может быть (objectCategory=user).
    Класс лиц Имя класса службы каталогов, куда включены пользователи, для которых требуется разрешить вход. В большинстве систем (в том числе и в Active Directory) используется person, но в некоторых может использоваться user или inetOrgPerson.
    Атрибут идентификатора пользователя Уникальное имя атрибута учетной записи пользователя. В AD это sAMAccountName. В других службах это может быть uid или memberUid.
    Атрибут членства пользователя Имя атрибута в записи группы, содержащей имя пользователя. Возможными вариантами могут быть member и uniquemember.
  7. Чтобы просмотреть настройки без сохранения, щелкните Предварительный просмотр обновлений.

    В окне предварительного просмотра отображаются пользователи и группы, выбранные для подключения. При необходимости можно перейти на вкладку Группы или Пользователи, чтобы увидеть пользователей и группы, которые связаны со службой.

  8. Нажмите Сохранить.

    Конфигурация LDAP сохранена. Чтобы проверить правильность конфигурации, попробуйте войти в SaltStack Config из тестовой учетной записи. Если войти в систему не удалось, см. рекомендации в разделе Устранение неполадок.

    Примечание: SaltStack Config сохраняет параметры подключения конфигураций LDAP, включая идентифицированные группы и идентифицированных пользователей. Поиск пользователей и групп осуществляется только в пределах заданной области, при этом весь каталог не синхронизируется.

    Со временем каталог LDAP может потребоваться обновить или повторно синхронизировать. Например, это следует сделать, когда добавляются новые пользователи, которых требуется включить в SaltStack Config.

Включение групп и пользователей

После настройки подключения LDAP необходимо настроить группы службы каталогов и убедиться, что пользователи могут выполнить вход в SaltStack Config. Чтобы настроить группы службы каталогов, выполните следующее.

  1. В рабочей области «Проверка подлинности» выберите требуемую конфигурацию LDAP.
  2. Перейдите на вкладку Группы, чтобы увидеть список групп, найденных в конфигурации LDAP.
    Примечание: При наличии большого количества групп загрузка страницы может занимать до 1 минуты.
  3. Выберите группы, которые необходимо включить в SaltStack Config.
  4. Перейдите на вкладку Пользователи, чтобы увидеть список пользователей, полученных из конфигурации LDAP.
    Примечание: При наличии большого количества пользователей загрузка страницы может занимать до 1 минуты.
  5. Выберите пользователей, которых необходимо включить в SaltStack Config.
    Примечание: Все пользователи, добавленные во включенные группы, уже выбраны, и этот выбор нельзя отменить.
    directory-service-users-enabled-group
  6. Нажмите Сохранить.

    Теперь можно определить настройки контроля доступа на основе ролей (RBAC) для выбранных групп. Однако рабочая область «Роли» позволяет управлять настройками для отдельных пользователей, добавленных в выбранные группы, только после первого входа пользователя в систему. Чтобы удалить группы или пользователей, отмените выбор группы или пользователя, а затем нажмите кнопку Сохранить.

    Дополнительные сведения об RBAC в SaltStack Config см. в разделе Определение ролей пользователей.

Устранение неполадок подключения LDAP

Если просмотреть сведения о подключении не удалось, выполните следующую процедуру устранения неполадок.
Проблема Описание Решение
Не удается просмотреть подключение

Если вы не можете просмотреть группы и пользователей, в большинстве случаев это может быть связано с проблемами соединения между сервером LDAP и SaltStack Config или недопустимым значением в форме конфигурации LDAP.

  1. Убедитесь, что TCP-соединения между SaltStack Config и выбранным портом на сервере LDAP разрешены.
  2. Перепроверьте записи в форме и проверьте синтаксис с помощью сторонней программы. См. раздел Проверка и устранение неполадок с подключением к службе каталогов.
  3. Если ни одно из предыдущих решений не помогло устранить проблему, см. раздел «Прочие проблемы» ниже.
  4. Если ни одно из решений выше не помогло, обратитесь в службу поддержки.
При попытке предварительного просмотра подключения на странице происходит сбой загрузки. Если процесс загрузки страницы зависает более чем на две минуты, перезапустите службу RaaS, затем удалите конфигурацию и создайте ее снова.
  1. Откройте журнал RaaS.
    tail -f /var/log/raas/raas

    Журнал содержит сообщение об ошибке, аналогичное следующему.

    [ERROR    :256][ForkPoolWorker-2:10253][ldap_preview_background_task(some_uuid)]
    Task ldap preview_background_task[some_uuid]raised unexpected: KeyError('ad-1_preview')
  2. Остановите и перезапустите службу RaaS.
    systemctl stop raas
    systemctl start raas
  3. Вернитесь в пользовательский интерфейс SaltStack Config и удалите подключение LDAP.
    Примечание:

    Перед удалением можно скопировать записи конфигурации и вставить их в резервный текстовый файл.

  4. Снова создайте конфигурацию LDAP.
Прочие проблемы

Если подключение LDAP уже настроено и сохранено, но пользователи не могут войти в систему или если обнаружены другие проблемы, проверьте журналы raas в режиме расширенной отладки, чтобы определить основную причину.

Чтобы включить расширенную отладку, выполните следующее.

  1. В RaaS откройте /etc/raas/raas.
  2. Внесите следующие изменения.
    • В разделе Loggingoptions раскомментируйте log_file_loglevel:debug.
    • В разделе AD/LDAPdriverconfiguration раскомментируйте log_level и установите значение log_level:EXTENDED.
  3. Остановите и перезапустите службу RaaS.
    systemctl stop raas
    systemctl start raas
  4. Просмотрите журнал raas.
    tail -f /var/log/raas/raas

Ниже указаны некоторые типовые ошибки, сообщения о которых могут присутствовать в журналах.

  • Неправильные настройки подключения (SSL). Настройте параметры SSL.
    [raas.utils.validation.schemas.settings][DEBUG   :546 ][Webserver:9096]
    Error while connecting to AD/LDAP Server. SSL connection issues: socket
    ssl wrapping error: [Errno 104] Connection reset by peer
  • Неправильный пароль привязки DN администратора. Проверьте пароль и введите его снова.
    [raas.utils.rpc   ][DEBUG   :284 ][Webserver:9095]
    Processed RPC request(129360670417695). Response:
    {'riq': 129360670417695, 'ret': None, 'error': {'code': 3004, 'message':
    'Request validation failure.', 'detail': {'_schema':
    ['Credentials are not valid']}}, 'warnings': []}
  • Конфликт создает предварительно заполненный фильтр проверки подлинности привязки DN по умолчанию. Оставьте поле незаполненным или используйте {username} вместо {{username}}.
    Примечание:

    Эта ошибка может происходить, если вы уже сохранили подключение LDAP, но пользователи не могут войти в систему.

    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :903 ][Webserver:9096]
    Running _get_auth_backend_user with this search_filter: (&(objectclass=person)(sAMAccountName={username}))
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :931 ][Webserver:9096]
    Could not find any user using '(&(objectclass=person)(sAMAccountName={username}))'
    as the search filter in the ldap backend under the ad-1 configuration.
    Trying remote_uid 'None'
    
    [var.tmp._MEIBCyG76.raas.mods.auth.ldap][DEBUG   :963 ][Webserver:9096]
    Could not find any user using '(&(objectClass=person)(objectGUID=None))'
    as the search filter in the ldap backend under the ad-1 configuration.