Настройка провайдера идентификации LDAP
В данном разделе описывается процедура подключения провайдера идентификации в StarVault по протоколу LDAP.
Необходимые условия
-
У вас есть токен доступа к хранилищу секретов StarVault с привилегиями
root. -
У вас есть доступ к Kubernetes API с привилегиями администратора кластера.
-
(Опционально) У вас есть CA-сертификат в формате
x509 PEMдля валидации подключения в случае использования защищенного протокола LDAPS (LDAP over SSL). -
У вас есть сервисная учетная запись для выполнения операций поиска в каталоге LDAP-сервера.
-
Сервер LDAP доступен для StarVault.
|
StarVault размещается на мастер-узлах Kubernetes и запущен в качестве службы Systemd. StarVault должен корректно разрешать DNS-имя LDAP-сервера или иметь доступ к его IP-адресу и портам |
|
Рекомендуется использовать защищенную версию протокола LDAPS (LDAP over SSL), которая использует безопасное TLS/SSL-соединение для передачи данных. Протокол LDAPS по умолчанию использует порт |
1. Об аутентификации по протоколу LDAP
В ходе аутентификации по протоколу LDAP в каталоге сервера (провайдера идентификации) выполняется поиск записи, соответствующей указанному имени пользователя. Если обнаружено одно уникальное совпадение, предпринимается попытка аутентификации с использованием уникального имени (DN) записи и предоставленного пароля.
В StarVault вы можете определить фильтры для поиска пользователей и групп в каталоге LDAP-сервера.
В процессе аутентификации можно выделить следующие особенности:
-
Если в процессе поиска записи с учетом пользовательских фильтров не будет найдена ровно одна запись, соответствующая указанному имени пользователя, то доступ будет запрещен.
-
Если ровно одна запись, соответствующая указанному имени пользователя, будет найдена, но попытка подключения к LDAP-серверу с предоставленным паролем будет неудачна, то доступ будет запрещен.
-
Если учетная запись найдена, и подключение к LDAP-серверу с предоставленным паролем выполнено успешно, то аутентификация также будет считаться успешной. После этого в StarVault автоматически будет создана сущность Entity как уникальный идентификатор пользователя.
Обратите внимание, что конфигурация DN в StarVault должна выполняться с учетом экранирования специальных символов, следуя правилам RFC 4514. При настройке провайдера идентификации Microsoft Active Directory следует учесть дополнительные требования к экранированию символов и #.=
2. Подключение к StarVault
Подключитесь к StarVault следуя процедуре, описанной в разделе Подключение к StarVault.
3. Настройка с помощью графического интерфейса
3.1. Настройка метода аутентификации
Провайдер идентификации подключается к StarVault путем настройки соответствующего метода аутентификации.
-
В веб-интерфейсе StarVault выберите вкладку Access, далее Auth Methods.
Рисунок 1. Методы аутентификации StarVault -
Выберите опцию Enable new method, далее - LDAP и нажмите Next.
Рисунок 2. Выбор метода аутентификации LDAP в StarVault -
Определите значение параметра path и настройте дополнительные параметры в меню Method Options при необходимости, далее нажмите Enable Method.
В данном примере используется параметр
pathсо значениемsite1. Обычно, кастомизация параметраpathтребуется при использовании нескольких различных серверовLDAP. Вы можете оставить значение параметраpathпо умолчанию -ldapпри настройке первого метода идентификации с типом LDAP и кастомизировать его в дальнейшем при настройке дополнительных методов аутентификации.
Рисунок 3. Настройка метода аутентификации LDAP в StarVault -
Выполните настройку созданного метода аутентификации в окне Configure LDAP.
-
В поле URL укажите URL-адрес сервера(ов) LDAP. Вы можете оставить по умолчанию параметры токенов, полученных в результате аутентификации данным методом.
Рисунок 4. Настройка метода аутентификации LDAP в StarVaultВ данном примере используется безопасное подключение по протоколу LDAPS. Для использования незащищенного соединения используйте параметр
URLвидаldap://server01.nova.external. -
Перейдите ниже и разверните меню LDAP Options.
-
Выберите параметры подключения к LDAP, загрузите CA-сертификат, который будет использован для проверки сертификата сервера LDAP (опционально).
Рисунок 5. Настройка метода аутентификации LDAP в StarVault -
В поле User Attribute укажите имя атрибута пользовательского объекта, который соответствует имени пользователя. В зависимости от провайдера идентификации пользовательский атрибут может принимать такие значение, как
sAMAccountName,cn,uidи другие.Как правило, в Active Directory в качестве атрибута имени пользователя используется параметр
sAMAccountName, а в решениях на базе Linux -cnилиuid.
Рисунок 6. Настройка метода аутентификации LDAP в StarVault -
Перейдите ниже и разверните меню Customize User Search.
-
В поле Name of Object to bind (binddn) укажите уникальное имя (DN) сервисной учетной записи для выполнения операций поиска в каталоге LDAP-сервера.
-
В поле Bindpass укажите пароль пользователя для подключения к LDAP.
-
В поле User DN укажите DN, в котором будет производится поиск пользователей.
-
В поле User Search Filter определите шаблон, который используется как фильтр при поиске пользователей в LDAP. Фильтр может использоваться для ограничения пользователей, которым необходимо разрешить доступ.
Параметры
{{.UserAttr}}и{{.Username}}являются переменными Go-шаблона, который применяется в StarVault при конструировании запросов к LDAP-серверу. В переменную{{.UserAttr}}передается установленное значение в полеUser Attribute, а переменная{{.Username}}является имененем, которое пользователь вводит при входе в StarVault.
Рисунок 7. Настройка метода аутентификации LDAP в StarVault -
Перейдите ниже и разверните меню Customize Group Membership Search.
-
В поле Group Filter определите шаблон, который используется как фильтр при поиске групп, в которых состоит пользователь.
Для получения групп пользователя, включая вложенные, в Active Directory используется оператор
LDAP_MATCHING_RULE_IN_CHAIN-1.2.840.113556.1.4.1941. -
В поле Group Attribute укажите LDAP-атрибут, который следует использовать для объектов, возвращаемых фильтром Group Filter, для перечисления членства в группах пользователей.
-
В поле Group DN укажите DN, в котором будет производится поиск групп.
-
При включении параметра Use token groups, другие настройки параметров поиска групп (Group Filter, Group Attribute и Group DN) перестают иметь эффект. Поиск членства в группах в данном случае будет работать следующим образом:
-
На LDAP-сервер отправляется запрос параметра
tokenGroupsдля пользователя. При этом в качестве базы для поиска будет использован User DN; -
Из полученного токена берется SID каждой группы и запрашивается ее имя.
Если LDAP-сервер является GlobalCatalog, то рекомендуется выключить параметр Use token groups и использовать фильтр.
-
-
Сохраните настройки нажав на Save.
Рисунок 8. Настройка метода аутентификации LDAP в StarVaultВ данном примере используется фильтр проверки членства в группе
nova-users. Группаnova-usersможет содержать в себе множество других групп, на уровне которых можно создавать политики StarVault и правила RBAC в Kubernetes.Настройка фильтров и атрибутов групп необходима для того, чтобы определить, членом каких групп является пользователь. Конфигурация для этого может различаться в зависимости от вашего LDAP-сервера (провайдера идентификации) и схемы его каталога.
Существует две основные стратегии определения членства в группах:
-
поиск пользователя и отслеживание атрибута групп, членом которых он является.
-
поиск групповых объектов, членом которых является пользователь.
Например, для
Group Filter, возвращающего групповые объекты, используйтеGroup Attributeсо значениемcn. Для запросов, возвращающих пользовательские объекты, используйтеGroup Attributeсо значениемmemberOf. -
3.2. Проверка метода аутентификации
После настройки метода аутентификации вы можете проверить его. Попробуйте выполнить вход в StarVault с помощью учетной записи, отвечающей ранее настроенным в методе аутентификации фильтрам.
Если при настройке метода аутентификации вы не меняли параметр path, то при входе опцию Mount path можно не указывать.
3.3. Настройка политик доступа к ресурсам StarVault для пользователей и групп
Если пользователям из каталога LDAP-сервера требуется доступ к ресурсам в StarVault, вы можете назначить определенным пользователям или группам специальные политики. Это может быть полезно в следующих сценариях:
-
Пользователи должны иметь доступ к какому-либо общему или приватному хранилищу секретов.
-
Существует необходимость настройки учетной записи администратора StarVault для пользователя из каталога LDAP-сервера.
Если пользователям из каталога LDAP-сервера требуется только возможность входа в Kubernetes и его приложения, вы можете пропустить этот шаг.
Для того, чтобы добавить политики пользователям или группам пользователей следуйте процедуре ниже.
-
Перейдите в раздел Access, далее Auth Methods.
-
Выберите ранее созданный метод аутентификации, например, site1.
-
Для назначения политик конкретному пользователю из каталога LDAP-сервера перейдите на вкладку Users и нажмите Create user.
-
В поле Name укажите имя пользователя.
-
В поле Policies укажите необходимую политику.
-
Сохраните настройки нажав на Save.
Рисунок 10. Установка политик пользователям в StarVault
-
-
Для назначения политик группе пользователей из каталога LDAP-сервера перейдите на вкладку Groups и нажмите Create group.
-
В поле Name укажите имя группы.
-
В поле Policies укажите необходимую политику.
-
Сохраните настройки нажав на Save.
Рисунок 11. Установка политик пользователям в StarVault
-
3.4. Настройка групп пользователей
Каждая новая группа из каталога LDAP-сервера должна быть явно создана и настроена в StarVault. Автоматическая синхронизация (импорт) доступных групп не поддерживается.
Например, в сценарии настройки выше использовалась общая группа nova-users для фильтрации пользователей, которым разрешена аутентификация.
Аналогичная группа в каталоге вашего LDAP-сервера может включать множество дополнительных групп. Для того, чтобы добавить дополнительные группы в StarVault, следуйте процедуре ниже.
-
Перейдите в раздел Access, далее Groups.
-
Нажмите Create group.
-
В поле Name укажите имя группы так же, как группа названа в каталоге LDAP-сервера.
-
В поле Type укажите External.
-
(Опционально) В поле Policies можно указать политику доступа к ресурсам StarVault.
-
Нажмите Create, чтобы создать группу. Откроется страница с параметрами созданной группы.
Рисунок 12. Настройка внешних групп в StarVault
Вы создали сущность внешней группы в StarVault, которую далее необходимо привязать к действительной группе в каталоге LDAP-сервера, то есть создать алиас (Alias). Для этого выполните действия ниже.
-
Нажмите Add alias.
-
В поле Name укажите имя алиаса так же, как группа названа в каталоге LDAP-сервера.
-
В поле Auth Backend выберете имя метода аутентификации LDAP.
-
Нажмите Create, чтобы создать алиас.
Для удобства и простоты администрирования рекомендуется использовать один алиас на одну сущность StarVault.
Вы выполнили привязку группы в StarVault к действительной группе в каталоге LDAP-сервера. Аналогичным способом вы можете создать все необходимые группы и алиасы для других доступных групп в каталоге LDAP-сервера.
-
3.4.1. Настройка доступа к приложениям OIDC
Для возможности использования приложений Nova Container Platform пользователи должны быть явно назначены каким-либо приложениям.
|
Получить подробную информацию о преднастроенных приложениях вы можете в разделе Приложения OAuth. |
Выполните настройку доступа к необходимым приложениям OIDC в Nova Container Platform согласно процедуре, описанной в разделе документации Настройка доступа к приложениям OAuth
3.5. Настройка авторизации в Kubernetes
После того, как все необходимые назначения настроены для пользователя или группы пользователей, вы можете настроить необходимые правила RBAC в среде Kubernetes. Это может быть необходимо в случаях, когда вам необходимо добавить в Kubernetes пользователей в качестве администратора кластера, администратора пространства имен (namespace) и других.
Выполните настройку RBAC согласно процедуре, описанной в разделе документации Использование RBAC для разграничения доступа в Kubernetes.
4. Решение проблем
При некорректной настройке сущностей StarVault, а также фильтров LDAP, необходимых для поиска пользователей и групп в структуре службы каталогов, вы можете получить различные ошибки. Далее приведены примеры ошибок и способы их устранения.
4.1. Типовые ошибки
Ошибка при входе в StarVault Authentication failed: ldap operation failed: failed to bind as user может возникать в следующих ситуациях:
-
Ошибка в учетных данных сервисной учетной записи, с помощью которой выполняется подключение к службе каталогов и поиск пользователя в каталоге LDAP-сервера. Проверьте, что параметры сервисной учетной записи указаны верно, а в логах LDAP-сервера фиксируется успешный вход данной учетной записи.
-
Ошибка в учетных данных учетной записи, с помощью которой вы выполняете вход. Проверьте, что учетная запись активна, пароль установлен, не просрочен и не требует замены.
-
Ошибка в настроенных фильтрах, по которым выполняется поиск пользователя. Проверьте настроенные фильтры. Для локализации проблемы с фильтром рекомендуется использовать в тестовых целях как можно более простой фильтр без комплексных условий.
Информационное сообщение после входа в StarVault no LDAP groups found in groupDN; only policies from locally-defined groups available может возникать в следующих ситуациях:
-
Ошибка в настроенных фильтрах, по которым выполняется поиск групп и определение принадлежности пользователя к группам. Проверьте настроенные фильтры. Для локализации проблемы с фильтром рекомендуется использовать в тестовых целях как можно более простой фильтр без комплексных условий.
4.2. Проверка конфигурации фильтров LDAP
Для диагностики фильтров LDAP удобно использовать утилиту ldapsearch. С помощью данной утилиты вы можете конструировать и направлять запросы к LDAP-серверу. В ответе LDAP-сервера вы можете проверить, насколько возвращаемая информация соответствует используемым вами фильтрам.
Процедура
-
Проверьте, что в вашем каталоге пользователей (User DN) доступны все необходимые пользователи:
ldapsearch -x -LLL -h '<Имя или IP-адрес LDAP-сервера>' \ -p '<Порт LDAP-сервера>' \ -D '<имя сервисного аккаунта>' \ -w '<пароль сервисного аккаунта (Bindpass)>' \ -b "<Каталог пользователей (User DN)>" \ '<Атрибут имени пользователя (User Attribute)>' \ distinguishedName \ -s sub "(objectClass=user)"Пример
ldapsearch -x -LLL -h ldap.nova.internal \ -p 389 \ -D sa \ -w 'p@$sw0rd' \ -b "OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal" \ sAMAccountName \ distinguishedName \ -s sub "(objectClass=user)" dn: OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal dn: CN=user3,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=user3,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal sAMAccountName: user3 dn: CN=user1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=user1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal sAMAccountName: user1 dn: CN=kubeadmin1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=kubeadmin1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal sAMAccountName: kubeadmin1 dn: CN=kubeadmin2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=kubeadmin2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal sAMAccountName: kubeadmin2 dn: CN=user2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=user2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal sAMAccountName: user2 -
Выберите из списка любого пользователя и используйте его атрибут
distinguishedNameдля дальнейших проверок. Получите список групп, в которые входит данный пользователь:ldapsearch -x -LLL -h '<Имя или IP-адрес LDAP-сервера>:<Порт LDAP-сервера>' \ -D '<имя сервисного аккаунта>' \ -w '<пароль сервисного аккаунта (Bindpass)>' \ -b "<Каталог групп (Group DN)>" \ '<Фильтр групп (Group Filter)>'Пример
ldapsearch -x -LLL -h ldap.nova.internal\ -D sa \ -w 'p@$sw0rd' \ -b "OU=Nova,OU=Groups,OU=Kubernetes,DC=nova,DC=internal" \ '(&(objectClass=group)(member:1.2.840.113556.1.4.1941:=CN=user2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal))' dn: CN=Nova-users,OU=Nova,OU=Groups,OU=Kubernetes,DC=nova,DC=internal objectClass: top objectClass: group cn: Nova-users member: CN=user2,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal member: CN=kubeadmin1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal member: CN=user1,OU=Nova,OU=Users,OU=Kubernetes,DC=nova,DC=internal distinguishedName: CN=Nova-users,OU=Nova,OU=Groups,OU=Kubernetes,DC=ms,DC=infraВ выводе команды видно, что в каталоге есть только одна группа
Nova-users, в которой находится пользовательuser2.