Администрирование и контроль доступа > Настройка политики безопасности системы > Создание учетных записей пользователей и работа с ними > Подключение доменного пользователя > Механизм работы со службами каталогов
При формировании подсистемы безопасности репозитория в менеджере безопасности создаются пользователи и группы. Если предполагается вход в репозитории с использованием доменной/интегрированной доменной аутентификации, то в менеджере безопасности добавьте доменных пользователей или группы после настройки файла settings.xml.
«Форсайт. Аналитическая платформа» получает информацию о доменных субъектах безопасности из службы каталогов домена или глобального каталога, которые должны быть настроены в компьютерной сети. Взаимодействие со службой каталогов осуществляется по протоколу LDAP/LDAPS.
Если служба каталогов текущего домена (глобального каталога текущей сети) сформирована на базе Active Directory и работа с «Форсайт. Аналитическая платформа» осуществляется в ОС Windows, то для подключения к данной службе не требуются дополнительные настройки.
Если служба каталогов расположена на сервере с ОС Linux или необходимо подключиться к службе каталогов не текущей, а какой-либо другой сети (сервер с ОС Linux или Windows), то выполните следующие действия в зависимости от операционной системы:
Установите недостающие пакеты в зависимости от версии ОС Linux:
Debian-подобные дистрибутивы:
sudo apt install libldap-2.4-2 libsasl2-modules-gssapi-mit
RedHat-подобные дистрибутивы:
sudo yum install openldap openldap-clients
ALT Linux:
sudo apt-get install openldap-common
Добавьте информацию о службе каталогов в файле /etc/ldap/ldap.conf для Debian-подобных и RedHat-подобных дистрибутивах, /etc/openldap/ldap.conf для ALT Linux:
BASE dc=...,dc=...
URI ldap[s]://<IP-адрес или доменное имя сервера>:<порт>
Где:
BASE. Компоненты домена. Всю необходимую информацию можно получить у администратора сети, в которой расположен сервер;
URI. Адрес сервера службы каталогов. Схема ldap указывается, если работа сервера настроена по протоколу TCP, и ldaps, если используется TLS/SSL. В качестве порта обычно указывается: 389 для ldap, 636 для ldaps. Для работы с поддоменами через основной контроллер домена указывается порт 3268 (глобальный каталог).
Задайте параметры сопоставления атрибутов службы каталогов и атрибутов субъектов безопасности «Форсайт. Аналитическая платформа», укажите учётные данные для подключения к службе каталогов в файле settings.xml. При необходимости для доменов или поддоменов подключите дополнительные контроллеры.
Скачайте и запустите инсталлятор OpenSSL. По умолчанию OpenSSL устанавливается в папку C:\Program Files\OpenSSL-Win64.
Добавьте в системную переменную PATH путь до папки bin - C:\Program Files\OpenSSL-Win64\bin.
Задайте параметры сопоставления атрибутов службы каталогов и атрибутов субъектов безопасности «Форсайт. Аналитическая платформа», укажите учётные данные для подключения к службе каталогов в файле settings.xml. При необходимости для основного контроллера домена или поддоменов подключите дополнительные контроллеры.
Задайте настройки, управляющие работой в текущей сети и определяющие параметры подключения к различным доменам в конфигурационных файлах OpenLDAP и Kerberos. Настройка осуществляется в соответствии с документацией OpenLDAP и Kerberos. Задаваемые настройки должны учитывать параметры работы текущей компьютерной сети и должны быть скоординированы с администратором сети.
Если предполагается аутентификация по протоколу GSSAPI на серверах LDAP и PostgreSQL, то дополнительно установите «MIT Kerberos for Windows 4.1» (разрядность должна совпадать с разрядностью используемой версии «Форсайт. Аналитическая платформа»).
Примеры файла settings.xml для службы каталогов Active Directory в зависимости от типа ОС, на базе которой работает «Форсайт. Аналитическая платформа»:
<Configuration>
<Root>
<Key Name="PP">
<BIS>
<Key Name="System">
<MultiDomain>
<Key Name="наименование домена 1" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=..." libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
<Key Name="a0" filter="user" ldap="objectClass"/>
<Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
<Key Name="a2" map_to="Name" ldap="sAMAccountName" make_upn="1"/>
<Key Name="a3" map_to="Sid" ldap="objectSid"/>
<Key Name="a4" map_to="DisplayName" ldap="cn"/>
<Key Name="a5" map_to="Descr" ldap="displayName"/>
<Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
<Key Name="a7" map_to="LookupName" ldap="userPrincipalName"/>
<Key Name="a8" map_to="LookupName" ldap="displayName"/>
<Key Name="a9" map_to="LookupName" ldap="cn"/>
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
<Key Name="a0" filter="group" ldap="objectClass"/>
<Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
<Key Name="a2" map_to="Name" ldap="sAMAccountName"/>
<Key Name="a3" map_to="Sid" ldap="objectSid"/>
<Key Name="a4" map_to="DisplayName" ldap="cn"/>
<Key Name="a5" map_to="Descr" ldap="description"/>
<Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
<Key Name="a7" map_to="LookupName" ldap="description"/>
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование поддомена 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=...">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
...
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
...
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование поддомена 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=...">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
...
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
...
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование домена 2" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=..." libldap="libldap-2.4.so.2" liblber="liblber-2.4.so.2">
...
</Key>
</MultiDomain>
<Gssapi libgssapi="libgssapi_krb5.so.2" libkrb5="libkrb5.so.3"/>
</Key>
</BIS>
</Key>
</Root>
</Configuration>
<Configuration>
<Root>
<Key Name="PP">
<BIS>
<Key Name="System">
<MultiDomain>
<Key Name="наименование домена 1" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=..." libldap="libldap.dll" liblber="libldap.dll">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
<Key Name="a0" filter="user" ldap="objectClass"/>
<Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
<Key Name="a2" map_to="Name" ldap="sAMAccountName" make_upn="1"/>
<Key Name="a3" map_to="Sid" ldap="objectSid"/>
<Key Name="a4" map_to="DisplayName" ldap="cn"/>
<Key Name="a5" map_to="Descr" ldap="displayName"/>
<Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
<Key Name="a7" map_to="LookupName" ldap="userPrincipalName"/>
<Key Name="a8" map_to="LookupName" ldap="displayName"/>
<Key Name="a9" map_to="LookupName" ldap="cn"/>
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
<Key Name="a0" filter="group" ldap="objectClass"/>
<Key Name="a1" map_to="DistinguishedName" ldap="distinguishedName" get_full_domain="1"/>
<Key Name="a2" map_to="Name" ldap="sAMAccountName"/>
<Key Name="a3" map_to="Sid" ldap="objectSid"/>
<Key Name="a4" map_to="DisplayName" ldap="cn"/>
<Key Name="a5" map_to="Descr" ldap="description"/>
<Key Name="a6" map_to="LookupName" ldap="sAMAccountName"/>
<Key Name="a7" map_to="LookupName" ldap="description"/>
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование поддомена 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=...">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
...
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
...
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование поддомена 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=...">
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
<user filter="(&(objectClass=user)(sAMAccountType=805306368))" groupsFilter="(&(member=%1)(objectClass=group)(sAMAccountType=268435456))">
...
</user>
<group filter="(&(objectClass=group)(sAMAccountType=268435456))">
...
</group>
<credentials realm="" Crs="..." Crsa="..." mechanism="GSSAPI"/>
</Key>
<Key Name="наименование домена 2" Proto="LDAP" url="ldap[s]://IP-адрес или доменное имя сервера:порт" base="dc=...,dc=..." libldap="libldap.dll" liblber="libldap.dll">
...
</Key>
</MultiDomain>
<Gssapi libgssapi_32="gssapi32.dll" libgssapi_64="gssapi64.dll" libkrb5_32="krb5_32.dll" libkrb5_64="krb5_64.dll"/>
</Key>
</BIS>
</Key>
</Root>
</Configuration>
В разделе MultiDomain содержатся настройки доменов и поддоменов. Для доменов и поддоменов доступно подключение дополнительных контроллеров домена. Параметры подключения к доменам и поддоменам указываются в дочерних элементах Key.
Если в именах пользователей не содержится имя домена, то при настройке мультидоменной аутентификации предварительно переподключите пользователей в текущем репозитории.
Примечание. Указание нескольких независимых доменов поддерживается только при использовании встроенной авторизации. Если встроенная авторизация не используется, то рекомендуется указывать один домен во избежание некорректной работы, например, при использовании групп с одинаковыми именами в разных доменах.
Особенности использования атрибутов в элементе Key:
Name. Наименование домена или поддомена. При указании домена задаётся NetBIOS доменное имя (уникальное имя в рамках конфигурации файла settings.xml);
Proto. Используемая реализация взаимодействия со службами каталогов:
LDAP. Для клиента OpenLDAP;
GC. Для клиента Active Directory Windows. Поддерживается только в ОС Windows и рекомендуется для использования.
При настройке прав доступа и распределении привилегий доменным пользователям через группы учитывайте следующие особенности:
если атрибут принимает значение «GC», то при подключении к репозиторию возвращается информация обо всех доменных группах, включая вложенные;
если атрибут принимает значение «LDAP», то при подключении к репозиторию возвращается информация только о доменных группах первого уровня.
Важно. Значения атрибутов Proto, libldap и liblber, учитываются только в первом указанном элементе Key. Остальные настройки доменов и поддоменов должны соответствовать одному и тому же значению атрибута Proto.
url. Адрес сервера службы каталогов в формате: ldap[s]://<IP-адрес или доменное имя сервера>:<порт>. Схема ldap указывается, если работа сервера настроена по протоколу TCP, и ldaps, если используется TLS/SSL. В качестве порта обычно указывается: 389 для ldap, 636 для ldaps;
base. Уникальный идентификатор, соответствующий корневому элементу домена или поддомена, для поиска объектов в каталоге. Идентификатор состоит из набора компонентов домена или поддомена в виде строки - «Distinguished Names» в службе каталогов. Всю необходимую информацию можно получить у администратора сети, в которой расположен сервер.
Примечание. Атрибут может быть задан только в одном из файлов: ldap.conf или settings.xml. По умолчанию ldap.conf содержится в папке: /etc/ldap в Debian-подобных дистрибутивах, /etc/openldap в RedHat-подобных дистрибутивах и ALT Linux, C:\OpenLDAP в ОС Windows.
Дополнительные контроллеры домена используются в качестве альтернативных, если основной контроллер домена или поддомен недоступны после трёх попыток подключения к ним. При разрыве соединения с одним контроллером и переключении на другой контроллер активная сессия пользователя сохраняется.
Список дополнительных контроллеров домена задаётся в разделе controllers с элементами Key в родительском элементе Key, который соответствует заданному основному контроллеру домена или поддомену. Допустимые атрибуты раздела Key:
Name. Наименование контроллера;
url. Адрес контроллера.
Пример раздела controllers:
<controllers>
<Key Name="наименование контроллера 1" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
<Key Name="наименование контроллера 2" url="ldap[s]://IP-адрес или доменное имя сервера:порт" />
</controllers>
В каждом домене или поддомене могут содержаться разделы user и group, в которых определены элементы Key.
Особенности использования атрибутов в элементе Key:
filter. Дополнительный фильтр поиска по типу субъекта: user или group;
map_to. Соответствие ldap-атрибутов для поиска и добавления доменных субъектов (пользователей или групп) в менеджере безопасности. Атрибут содержит следующие значения:
Descr. Описание субъекта. Отображается в качестве значения параметра «Описание» в свойствах пользователя или группы;
DisplayName. Полное наименование доменного пользователя. Отображается в качестве значения параметра «Полное наименование» в свойствах пользователя;
EMail. Адрес электронной почты субъекта по умолчанию. Задаётся в качестве значения свойства IUserProfile.Email;
SamAccountName. Наименование пользователя без учёта домена в формате <домен>\<имя>;
UserPrincipalName. Наименование пользователя с учётом домена в формате <имя>@<домен>. Если не указано, то значение должно быть сформировано с помощью значения «Name» с атрибутом make_upn. Задаётся в качестве значения свойства ISecuritySubject.UserPrincipalName;
Name. Способ формирования наименования субъекта. Может содержать атрибут make_upn со значением «1» для формирования «UserPrincipalName» на основе значения «Name» с учётом домена.
Примечание. При использовании значения «Name» с атрибутом make_upn, «DistinguishedName» должен быть задан с атрибутом get_full_domain.
Если атрибут map_to принимает значение «Name» и атрибут ldap принимает значение «sAMAccountName», то к значению, полученному из LDAP-каталога, всегда добавляется имя домена: DOMAIN\ATTRVALUE;
DistinguishedName. Уникальное имя для субъекта в формате, который определен для службы каталогов, например: CN=user,OU=group,DC=domain,DC=ru. Используется для формирования значения «UserPrincipalName», если задано значение «Name» с атрибутом make_upn. Может содержать атрибут get_full_domain со значением «1». Задаётся в качестве значения свойства ISecuritySubject.DistinguishedName;
Sid. Идентификатор субъекта. Может содержать атрибут sid_prefix со значением «1», который добавляет префикс «LDAP-» к оригинальному SID-идентификатору. Задаётся в качестве значения свойства ISecuritySubject.Sid;
LookupName. Значение ldap-атрибута, по которому будет выполняться поиск доменных субъектов.
Примечание. Для ldap-атрибута должен быть указан хотя бы один атрибут map_to со значением «LookupName».
При указании способа формирования наименования субъекта «Name» убедитесь, что выполняются следующие условия для имён субъектов:
имя не может быть пустым, не заканчивается символом «\» и содержит домен (DOMAIN\NAME);
имя может совпадать с UPN. Для пользователей UPN не может быть пустым и должен содержать символ «@»;
Sid не может быть пустым.
Субъекты с невалидными именами пропускаются и в лог выводится одна из следующих ошибок:
LDAP: Name cannot be empty;
LDAP: Name '<NAME>' should contain domain;
LDAP: Name '<NAME>' should not end with '\\' symbol;
LDAP: Sid cannot be empty;
LDAP: UserPrincipalName cannot be empty;
LDAP: UserPrincipalName '<UPN>' should contain '@'.
Если были пропущены все субъекты, то перепроверьте настройки атрибута map_to.
В каждом домене или поддомене должен содержаться элемент credentials с атрибутами:
realm. Доменное имя;
Crs/Crsa. Учётные данные для подключения к серверу службы каталогов в зашифрованном виде. Зашифрованные значения этих атрибутов можно получить с помощью утилиты PP.Util, используя параметр /encrypt_creds;
username/password. Имя пользователя и пароль в открытом виде. Используются для совместимости с предыдущими версиями «Форсайт. Аналитическая платформа». Если указаны обе пары атрибутов, то будут использоваться зашифрованные учётные данные.
Совет. В целях безопасности рекомендуется использовать учётные данные в зашифрованном виде. Если указаны обе пары атрибутов Crs/Crsa и username/password, то наибольший приоритет у атрибутов Crs/Crsa.
mechanism. Механизм подключения к серверу службы каталогов, например «GSSAPI». Если указана пустая строка или в атрибуте «url» задан адрес сервера службы каталогов с протоколом ldaps, то используется механизм SASL SIMPLE.
Примечание. Убедитесь, что используемый механизм поддерживается сервером службы каталогов.
См. также:
Создание учетных записей пользователей и работа с ними | Подключение доменного пользователя | Подключение доменной группы