Интеграция со сторонними каталогами пользователей
На этой странице описано, как настроить интеграцию продукта Indeed PAM с каталогами пользователей Active Directory, FreeIPA, OpenLDAP и ALD Pro.
Для изменения параметров чтения каталога пользователей требуется отредактировать секцию UserCatalog
в конфигурационных файлах Core и Idp.
Путь до файла конфигурации Core:
Windows | C:\inetpub\wwwroot\pam\core\appsettings.json |
Linux | /etc/indeed/indeed-pam/core/appsettings.json |
Путь до файла конфигурации Idp:
Windows | C:\inetpub\wwwroot\pam\idp\appsettings.json |
Linux | /etc/indeed/indeed-pam/idp/appsettings.json |
Настройка интеграции с Active Directory
Файлы конфигурации изначально содержат настройки для интеграции с Active Directory, дополнительных изменений не требуется.
Настройка поиска пользователей в группе безопасности
Для настройки поиска пользователей из определенной группы безопасности требуется настроить параметр CatalogFilter
.
"CatalogFilter": "memberOf=cn=Admins,CN=Builtin,DC=vdd,DC=com"
"CatalogFilter": "(|(memberOf=cn=Admins,CN=Builtin,DC=vdd,DC=com) (memberOf=cn=PrivelledgeAccounts,OU=Groups,DC=vdd,DC=com) (memberOf=cn=Admins1,OU=PAMUsers,DC=vdd,DC=com))"
Параметр ContainerPath
также должен быть заполнен, т.к. считываться будут только те пользователи, которые состоят в OU, который вы указали в значении параметра CatalogFilter
.
Пример заполненной секции UserCatalog с указанием группы безопасности
"UserCatalog": {
"RootProvider": "ad1",
"Providers": {
"Ldap": [
{
"Id": "ad1",
"ConnectorType": "Ldap",
"LdapServerType": "ActiveDirectory",
"Domain": "indeed.test",
"Port": 636,
"AuthType": "Basic",
"SecureSocketLayer": true,
"ContainerPath": "OU=UsersPAM,DC=indeed,DC=test",
"CatalogFilter": "memberOf=cn=SecurityGroup,OU=PAMUsers,DC=indeed,DC=test",
"UserName": "IPAMADReadOps@indeed.test",
"Password": "qwe123",
"UserMapRules": {
"Settings": [
{
"Category": "person",
"Class": "user"
}
]
}
}
]
}
}
Дополнительную информацию по настройке параметра CatalogFilter
можно прочитать в документации Microsoft.
Настройка интеграции с FreeIpa или AldPro
Для настройки интеграции с каталогом пользователей FreeIPA или AldPro пользователи каталога должны иметь следующие атрибуты:
entryUUID
илиipaUniqueID
cn
entryDn
ipaNTSecurityIdentifier
krbPrincipalName
uid
Пример заполненной секции UserCatalog для каталога пользователей FreeIPA или AldPro
{
"Id": "ad",
"ConnectorType": "Ldap",
"LdapServerType": "FreeIpa", //Заменить на AldPro при настройке на AldPro
"Domain": "ald.sup", //Имя домена или конкретного контроллера
"Port": 389, //389 для подключения по LDAP, 636 для подключения по LDAPS
"AuthType": "Basic",
"SecureSocketLayer": false,//false для подключения по LDAP, true для подключения по LDAPS
"ContainerPath": "dc=ald,dc=sup", //Путь до контейнера пользователей
"UserName": "uid=pamread,cn=users,cn=accounts,dc=ald,dc=sup", //Учетные данные для доступа к домену. Должны быть в формате distigushedName, УЗ должна иметь права на чтение необходимых атрибутов
"Password": "Q1w2e3r4", //Пароль УЗ для доступа к домену
"GroupMapRules": {
"Settings": [
{
"Category": "",
"Class": "ipantgroupattrs"
}
],
"Attributes": {
"Id": "ipaUniqueID",
"Name": "cn",
"SamAccountName": "cn",
"CanonicalName": "cn",
"DistinguishedName": "entryDn",
"SidBytes": "ipaNTSecurityIdentifier"
}
},
"UserMapRules": {
"Settings": [
{
"Category": "",
"Class": "person"
}
],
"Attributes": {
"Id": "ipaUniqueID",
"Name": "cn",
"PrincipalName": "krbPrincipalName",
"SamAccountName": "uid",
"DistinguishedName": "entryDn",
"SidBytes": "ipaNTSecurityIdentifier",
"ThumbnailPhoto": "jpegPhoto",
"JpegPhoto": "jpegPhoto"
}
}
}
Если у пользователей каталога есть атрибут entryUUID
и нет атрибута ipaUniqueID
, то в секциях GroupMapRules
и UserMapRules
в разделе Attributes
необходимо удалить параметр "Id": "ipaUniqueID"
.
Настройка интеграции с OpenLDAP
Для настройки интеграции с каталогом пользователей OpenLDAP пользователи каталога должны иметь следующие атрибуты:
cn
entryDn
uid
Пример заполненной секции UserCatalog для каталога пользователей OpenLDAP
{
"Id": "oldap",
"ConnectorType": "Ldap",
"LdapServerType": "OpenLdap",
"Domain": "oldap.local", //Имя домена или конкретного контроллера
"Port": 389, //389 для подключения по LDAP, 636 для подключения по LDAPS
"AuthType": "Basic",
"SecureSocketLayer": false, //false для подключения по LDAP, true для подключения по LDAPS
"ContainerPath": "DC=oldap,DC=local", //Путь до контейнера пользователей
"UserName": "cn=IPAMADReadOps,dc=oldap,dc=local", //Учетные данные для доступа к домену. Должны быть в формате distigushedName, УЗ должна иметь права на чтение необходимых атрибутов
"Password": "QWEqwe123", //Пароль УЗ для доступа к домену
"GroupMapRules": {
"Settings": [
{
"Category": "",
"Class": "groupOfUniqueNames"
}
],
"Attributes": {
"Name": "cn",
"SamAccountName": "cn",
"CanonicalName": "cn",
"DistinguishedName": "entryDn",
"Members": "uniqueMember"
}
},
"UserMapRules": {
"Settings": [
{
"Category": "",
"Class": "inetOrgPerson"
}
],
"Attributes": {
"Name": "cn",
"SamAccountName": "uid",
"DistinguishedName": "entryDn",
"ThumbnailPhoto": "photo",
"JpegPhoto": "photo"
}
}
}
Настройка интеграции с несколькими каталогами пользователей
Для настройки интеграции с несколькими каталогами пользователей выполните следующие действия:
- Поменяйте значение параметра
RootProvider
на "orUCP". - В секции
Ldap
перечислите через запятую каталоги пользователей, с которыми необходима интеграция. Id провайдеров не должны совпадать. Id провайдеров, с которыми до этого работал PAM, не должны меняться. - Добавьте секцию
Or
из примера ниже, в которой пропишите Id секций провайдеров.
Пример секции UserCatalog, настроенной на работу с двумя каталогами пользователей
"UserCatalog": {
"RootProvider": "orUCP",
"Providers": {
"Ldap": [
{
"Id": "ad",
"ConnectorType": "Ldap",
"LdapServerType": "ActiveDirectory",
"Domain": "indeed.test",
"Port": 636,
"AuthType": "Basic",
"SecureSocketLayer": true,
"ContainerPath": "OU=UsersPAM,DC=indeed,DC=test",
"UserName": "IPAMADReadOps@indeed.test",
"Password": "qwe123",
"UserMapRules": {
"Settings": [
{
"Category": "person",
"Class": "user"
}
]
}
},
{
"Id": "ad2",
"ConnectorType": "Ldap",
"LdapServerType": "ActiveDirectory",
"Domain": "indeed.test",
"Port": 636,
"AuthType": "Basic",
"SecureSocketLayer": true,
"ContainerPath": "OU=UsersPAM,DC=indeed,DC=test",
"UserName": "IPAMADReadOps@indeed.test",
"Password": "qwe123",
"UserMapRules": {
"Settings": [
{
"Category": "person",
"Class": "user"
}
]
}
},
{
"Id": "ipa",
"ConnectorType": "Ldap",
"LdapServerType": "FreeIpa",
"Domain": "ipa.redos",
"Port": 389,
"AuthType": "Basic",
"SecureSocketLayer": false,
"ContainerPath": "DC=ipa,DC=redos",
"UserName": "uid=IPAMADReadOps,cn=users,cn=accounts,dc=ipa,dc=redos",
"Password": "qwe123",
"GroupMapRules": {
"Settings": [
{
"Category": "",
"Class": "ipantgroupattrs"
}
],
"Attributes": {
"Name": "cn",
"SamAccountName": "cn",
"CanonicalName": "cn",
"DistinguishedName": "entryDn",
"SidBytes": "ipaNTSecurityIdentifier"
}
},
"UserMapRules": {
"Settings": [
{
"Category": "",
"Class": "person"
}
],
"Attributes": {
"Name": "cn",
"PrincipalName": "krbPrincipalName",
"SamAccountName": "uid",
"DistinguishedName": "entryDn",
"SidBytes": "ipaNTSecurityIdentifier",
"ThumbnailPhoto": "jpegPhoto",
"JpegPhoto": "jpegPhoto"
}
}
}
],
"Or": [
{
"Id": "orUCP",
"Providers": {
"ad": {"IgnoreExceptions": true},
"ad2": {"IgnoreExceptions": true},
"ipa": {"IgnoreExceptions": true}
}
}
]
}
}