Учебники

DB2 – LDAP

LDAP – это облегченный протокол доступа к каталогам. LDAP – это глобальная служба каталогов, стандартный протокол, основанный на модели клиент-сервер и работающий на уровне выше стека TCP / IP. LDAP предоставляет средство для подключения, доступа, изменения и поиска в интернет-каталоге.

Серверы LDAP содержат информацию, которая организована в форме дерева каталогов. Клиенты просят сервер предоставить информацию или выполнить некоторую операцию с определенной информацией. Сервер отвечает клиенту, предоставляя требуемую информацию, если таковая имеется, или направляет клиента на другой сервер для действия с требуемой информацией. Затем клиент получает желаемую информацию с другого сервера.

Древовидная структура каталога поддерживается одинаковой на всех участвующих серверах. Это важная особенность службы каталогов LDAP. Следовательно, независимо от того, на какой сервер ссылается клиент, клиент всегда получает необходимую информацию без ошибок. Здесь мы используем LDAP для аутентификации IBM DB2 в качестве замены аутентификации операционной системы.

Существует два типа LDAP:

  1. прозрачный
  2. Вставной

Давайте посмотрим, как настроить прозрачный LDAP.

Настройка прозрачного LDAP

Чтобы начать с настройки прозрачного LDAP, вам необходимо настроить сервер LDAP.

Конфигурация сервера LDAP

Создайте файл SLAPD.conf, который содержит всю информацию о пользователях и объектах группы в LDAP. Когда вы устанавливаете сервер LDAP, по умолчанию он настроен с базовым деревом каталогов LDAP на вашем компьютере.

В приведенной ниже таблице указана конфигурация файла после модификации.

Текст, выделенный желтым цветом, означает следующее:

DBA user-id = «db2my1», group = «db1my1adm», password = «db2my1» Admin user-id = «my1adm», group = «dbmy1ctl».

# base dn: example.com 
dn: dc=example,dc=com 
dc: example 
o: example 
objectClass: organization 
objectClass: dcObject 
# pc box db 
dn: dc=db697,dc=example,dc=com 
dc: db697 
o: db697 
objectClass: organization 
objectClass: dcObject 
# 
# Group: dbadm 
# 
dn: cn=dbmy1adm,dc=db697,dc=example,dc=com 
cn: dbmy1adm 
objectClass: top 
objectClass: posixGroup 
gidNumber: 400 
objectClass: groupOfNames 
member: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com 
memberUid: db2my1 
# 
# User: db2 
# 
dn: uid=db2my1,cn=dbmy1adm,dc=db697,dc=example,dc=com 
cn: db2my1 
sn: db2my1 
uid: db2my1 
objectClass: top 
objectClass: inetOrgPerson 
objectClass: posixAccount 
uidNumber: 400 
gidNumber: 400 
loginShell: /bin/csh 
homeDirectory: /db2/db2my1 
# 
# Group: dbctl 
# 
dn: cn=dbmy1ctl,dc=db697,dc=example,dc=com 
cn: dbmy1ctl 
objectClass: top 
objectClass: posixGroup 
gidNumber: 404 
objectClass: groupOfNames 
member: uid=my1adm,cn=dbmy1adm,dc=db697,dc=example,dc=com 
memberUid: my1adm 
# 
# User: adm 
# 
dn: uid=my1adm,cn=dbmy1ctl,dc=db697,dc=example,dc=com 
cn: my1adm 
sn: my1adm 
uid: my1adm 
objectClass: top 
objectClass: inetOrgPerson 
objectClass: posixAccount 
uidNumber: 404 
gidNumber: 404 
loginShell: /bin/csh 
homeDirectory: /home/my1adm 

Сохраните указанный выше файл с именем «/var/lib/slapd.conf», затем выполните этот файл, выполнив следующую команду, чтобы добавить эти значения на сервер LDAP. Это команда Linux; не команда db2.

ldapadd r- -D cn=Manager,dc=example,dc=com W f 
/var/lib/slapd.conf 

После регистрации пользователей DB2 и группы DB2 на сервере LDAP войдите в систему для конкретного пользователя, где вы установили экземпляр и базу данных. Вам необходимо настроить клиент LDAP для подтверждения клиенту, где находится ваш сервер, будь то удаленный или локальный.

Конфигурация клиента LDAP

Конфигурация клиента LDAP сохраняется в файле ‘ldap.conf’. Для параметров конфигурации доступны два файла: один общий, а другой – конкретный. Вы должны найти первый в /etc/ldap.conf, а последний находится в /etc/openldap/ldap.conf.

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

# File: /etc/ldap.conf  
# The file contains lots of more entries and many of them  
# are comments. You show only the interesting values for now  
host localhost  
base dc=example,dc=com  
ldap_version 3  
pam_password crypt  
pam_filter objectclass=posixAccount  
nss_map_attribute uniqueMember member 
nss_base_passwd dc=example,dc=com  
nss_base_shadow dc=example,dc=com  
nss_base_group dc=example,dc=com 

Вам необходимо изменить расположение информации о сервере и домене в соответствии с конфигурацией DB2. Если мы используем сервер в той же системе, то упомяните его как «localhost» в «host» и «base», вы можете настроить, что упомянуто в файле «SLAPD.conf» для сервера LDAP.

Сменная модель аутентификации (PAM) – это API для сервисов аутентификации. Это общий интерфейс для аутентификации LDAP с зашифрованным паролем и специальным объектом LDAP типа posixAccount. Все объекты LDAP этого типа представляют собой абстракцию учетной записи с атрибутами переносимого интерфейса операционной системы (POSIX).

Службы сетевой безопасности (NSS) – это набор библиотек для поддержки кроссплатформенной разработки клиентских и серверных приложений с включенной безопасностью. Это включает в себя библиотеки, такие как SSL, TLS, PKCS S / MIME и другие стандарты безопасности.

Вам нужно указать базовое DN для этого интерфейса и два дополнительных атрибута сопоставления. Файл конфигурации клиента OpenLDAP содержит следующие записи:

host localhost  
base dc=example,dc=com

До этого вы просто определяете хост подачи LDAP и базовый DN.

Проверка среды OpenLDAP

После того, как вы настроили сервер LDAP и клиент LDAP, проверьте оба соединения.

Шаг 1 : Проверьте, работает ли ваш локальный сервер LDAP. Используя команду ниже:

ps -ef | grep -i ldap

Эта команда должна перечислить демон LDAP, который представляет ваш сервер LDAP:

/usr/lib/openldap/slapd -h ldap:/// -u ldap -g ldap -o slp=on

Это означает, что ваш сервер LDAP работает и ожидает запроса от клиентов. Если для предыдущих команд такого процесса не существует, вы можете запустить сервер LDAP с помощью команды ‘rcldap’.

rcldap start 

Когда сервер запускается, вы можете отслеживать это в файле ‘/ var / log / messages /, выполнив следующую команду.

tail f /var/log/messages 

Тестирование соединения с сервером LDAP с помощью ldapsearch

Команда ldapsearch открывает соединение с сервером LDAP, связывается с ним и выполняет поисковый запрос, который можно указать, используя специальные параметры ‘-x’, подключаются к вашему серверу LDAP с помощью простого механизма аутентификации, используя параметр –x вместо более сложный механизм, такой как простая аутентификация и уровень безопасности (SASL)

ldapsearch x  

Сервер LDAP должен ответить приведенным ниже ответом, содержащим все ваши записи LDAP в формате обмена данными LDAP (LDIF).

# extended LDIF  
#  
# LDAPv3  
# base <> with scope subtree  
# filter: (objectclass=*) 
# requesting: ALL  
# example.com  
dn: dc=example,
dc=com  dc: example  
o: example  
objectClass: organization  
objectClass: dcObject  
# search result  
search: 2  
result: 0 Success  
# numResponses: 2  
# numEntries: 1  

Конфигурирование DB2

После работы с сервером и клиентом LDAP вам необходимо сконфигурировать нашу базу данных DB2 для использования с LDAP. Давайте обсудим, как вы можете установить и настроить базу данных для использования нашей среды LDAP для процесса аутентификации пользователя DB2.

Конфигурирование подключаемых модулей взаимодействия DB2 и LDAP

IBM предоставляет бесплатный пакет с плагинами LDAP для DB2. Пакет DB2 включает три подключаемых модуля защиты DB2 для каждого из следующих компонентов:

  • аутентификация на стороне сервера
  • аутентификация на стороне клиента
  • поиск группы

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

Вы должны решить, какие плагины являются обязательными для нашей системы. Подключаемые модули аутентификации клиента, используемые в сценариях, в которых идентификатор пользователя и проверка пароля, указанные в операторе CONNECT или ATTACH, происходят в клиентской системе. Поэтому параметры конфигурации менеджера баз данных SRVCON_AUTH или AUTHENTICATION должны быть установлены в значение CLIENT. Аутентификация клиента трудна для обеспечения безопасности и обычно не рекомендуется. Обычно рекомендуется подключаемый модуль сервера, поскольку он выполняет проверку идентификаторов пользователей и паролей на стороне сервера, если клиент выполняет инструкцию CONNECT или ATTACH, и это безопасный способ. Плагин сервера также предоставляет способ сопоставления идентификаторов пользователей LDAP с идентификаторами авторизации DB2.

Теперь вы можете начать установку и настройку подключаемых модулей защиты DB2, вам нужно подумать о необходимом дереве информации о каталогах для DB2. DB2 использует косвенную авторизацию, что означает, что пользователь принадлежит к группе, и этой группе предоставлено меньше полномочий. Вам нужно определить всех пользователей DB2 и группы DB2 в каталоге LDAP.

Образ

Файл LDIF openldap.ldif должен содержать следующий код:

#  
# LDAP root object  
# example.com  
#  
dn: dc=example,
dc=com  
dc: example  
o: example  
objectClass: organization  
objectClass: dcObject 
 #  
 # db2 groups  
 #  
 dn: cn=dasadm1,dc=example,dc=com  
 cn: dasadm1  
 objectClass: top  
 objectClass: posixGroup  
 gidNumber: 300  
 objectClass: groupOfNames 
 member: uid=dasusr1,cn=dasadm1,dc=example,dc=com  
 memberUid: dasusr1  
 dn: cn=db2grp1,dc=example,dc=com  
 cn: db2grp1  
 objectClass: top  
 objectClass: posixGroup  
 gidNumber: 301  
 objectClass: groupOfNames  
 member: uid=db2inst2,cn=db2grp1,dc=example,dc=com  memberUid: db2inst2  
 dn: cn=db2fgrp1,dc=example,dc=com  
 cn: db2fgrp1  
 objectClass: top 
 objectClass: posixGroup  
 gidNumber: 302  
 objectClass: groupOfNames 
 member: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com  
 memberUid: db2fenc1  
 #  
 # db2 users  
 #  
 dn: uid=dasusr1,
 cn=dasadm1,
 dc=example,dc=com  
 cn: dasusr1  
 sn: dasusr1  
 uid: dasusr1  
 objectClass: top  
 objectClass: inetOrgPerson 
 objectClass: posixAccount 
 uidNumber: 300  
 gidNumber: 300  
 loginShell: /bin/bash 
 homeDirectory: /home/dasusr1  
 dn: uid=db2inst2,cn=db2grp1,dc=example,dc=com  
 cn: db2inst2  
 sn: db2inst2  
 uid: db2inst2  
 objectClass: top  
 objectClass: inetOrgPerson  
 objectClass: posixAccount  
 uidNumber: 301  
 gidNumber: 301  
 loginShell: /bin/bash  
 homeDirectory: /home/db2inst2  
 dn: uid=db2fenc1,cn=db2fgrp1,dc=example,dc=com  
 cn: db2fenc1  
 sn: db2fenc1  
 uid: db2fenc1  
 objectClass: top  
 objectClass: inetOrgPerson  
 objectClass: posixAccount  
 uidNumber: 303  
 gidNumber: 303  
 loginShell: /bin/bash  
 homeDirectory: /home/db2fenc1 
 

Создайте файл с именем ‘db2.ldif’ и вставьте в него приведенный выше пример. Используя этот файл, добавьте определенные структуры в каталог LDAP.

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

Выполните следующие синтаксисы, чтобы заполнить информационный каталог LDAP всеми нашими объектами, определенными в файле LDIF ‘db2.ldif’

ldapadd x D cn=Manager, dc=example,dc=com W f <path>/db2.ldif 

Выполните результат поиска с большим параметром

ldapsearch x |more 

Подготовка файловой системы для использования DB2

Создание экземпляра для нашего пользователя LDAP db2inst2. Для этого пользователя требуется домашний каталог с двумя пустыми файлами внутри домашнего каталога. Перед созданием нового экземпляра необходимо создать пользователя, который будет владельцем экземпляра.

После создания пользователя экземпляра вам нужно будет создать файлы «.profile» и «.login» в домашнем каталоге пользователя, которые будут изменены DB2. Чтобы создать этот файл в каталоге, выполните следующую команду:

mkdir /home/db2inst2  
mkdir /home/db2inst2/.login 
mkdir /home/db2inst2/.profile  

Вы зарегистрировали всех пользователей и группы, связанные с DB2, в каталоге LDAP, теперь вы можете создать экземпляр с именем ‘db2inst2’ с идентификатором владельца экземпляра ‘db2inst2’ и использовать идентификатор изолированного пользователя ‘db2fenc1’, который необходим для запуска пользователя определенные функции (UDF) или хранимые процедуры.

/opt/ibm/db2/V10.1/instance/db2icrt u db2fenc1 db2inst2  
DBI1070I Program db2icrt completed successfully.  

Теперь проверьте домашний каталог экземпляра. Вы можете увидеть новый подкаталог с именем ‘sqllib’ и файлы .profile и .login, настроенные для использования DB2.

Настройка общедоступных модулей аутентификации для поддержки LDAP в DB2

Скопируйте необходимые плагины LDAP в соответствующий каталог DB2:

cp            ///v10/IBMLDAPauthserver.so  
/home/db2inst2/sqllib/security/plugin/server/. 
 
cp            ///v10/IBMLDAPgroups.so 
/home/db2inst2/sqllib/security/plugin/group/.

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

Su  db2inst2  
db2inst2> db2 update dbm cfg using svrcon_pw_plugin 
IBMLDAPauthserver 
db2inst2> db2 update dbm cfg using group_plugin 
IBMLDAPgroups 
db2inst2> db2 update dbm cfg using authentication 
SERVER_ENCRYPT 
db2inst2> db2stop 
db2inst2> db2start  

Эта модификация вступает в силу после запуска экземпляра DB2. После перезапуска экземпляра вам необходимо установить и настроить основной файл конфигурации DB2 LDAP с именем «IBMLDAPSecurity.ini», чтобы подключаемые модули DB2 работали с текущей конфигурацией LDAP.

Файл IBMLDAPSecurity.ini содержит

;-----------------------------------------------------------  
; SERVER RELATED VALUES  
;-----------------------------------------------------------  
; Name of your LDAP server(s).  
; This is a space separated list of LDAP server addresses,  
; with an optional port number for each one:  
; host1[:port] [host2:[port2] ... ]  
; The default port number is 389, or 636 if SSL is enabled.  
LDAP_HOST = my.ldap.server  
;-----------------------------------------------------------  
; USER RELATED VALUES  
;-----------------------------------------------------------  
rs  
; LDAP object class used for use USER_OBJECTCLASS = posixAccount  
; LDAP user attribute that represents the "userid"  
; This attribute is combined with the USER_OBJECTCLASS and  
; USER_BASEDN (if specified) to construct an LDAP search  
; filter when a user issues a DB2 CONNECT statement with an  
; unqualified userid. For example, using the default values 
; in this configuration file, (db2 connect to MYDB user bob  
; using bobpass) results in the following search filter:  
OrgPerson)(uid=bob)  
; &(objectClass=inet USERID_ATTRIBUTE = uid  
representing the DB2 authorization ID  
; LDAP user attribute, AUTHID_ATTRIBUTE = uid  
;-----------------------------------------------------------  
; GROUP RELATED VALUES  
;-----------------------------------------------------------  
ps  
; LDAP object class used for grou GROUP_OBJECTCLASS = groupOfNames  
at represents the name of the group  
; LDAP group attribute th GROUPNAME_ATTRIBUTE = cn  
; Determines the method used to find the group memberships  
; for a user. Possible values are:  
; SEARCH_BY_DN - Search for groups that list the user as  
; a member. Membership is indicated by the  
; group attribute defined as  
; GROUP_LOOKUP_ATTRIBUTE. 
; USER_ATTRIBUTE - A user's groups are listed as attributes  
; of the user object itself. Search for the  
; user attribute defined as  
TRIBUTE to get the groups.  
; GROUP_LOOKUP_AT GROUP_LOOKUP_METHOD = SEARCH_BY_DN  
; GROUP_LOOKUP_ATTRIBUTE  
; Name of the attribute used to determine group membership,  
; as described above.  
llGroups  
; GROUP_LOOKUP_ATTRIBUTE = ibm-a GROUP_LOOKUP_ATTRIBUTE = member 

Теперь найдите файл IBMLDAPSecurity.ini в каталоге текущего экземпляра. Скопируйте вышеуказанный пример содержимого в тот же.

Cp 
//db2_ldap_pkg/IBMLDAPSecurity.ini  
/home/db2inst2/sqllib/cfg/ 

Теперь вам нужно перезапустить ваш экземпляр DB2, используя два синтаксиса, приведенные ниже:

db2inst2> db2stop 

Db2inst2> db2start 

На этом этапе, если вы попробуете команду ‘db2start’, вы получите сообщение об ошибке безопасности. Потому что конфигурация безопасности DB2 еще не настроена правильно для вашей среды LDAP.

Настройка обеих конфигураций

Держите под рукой имя LDAP_HOST, которое настраивается в файле slapd.conf.

Теперь отредактируйте файл IMBLDAPSecurity.ini и введите имя LDAP_HOST. Имя LDAP_HOST в обоих указанных файлах должно быть одинаковым.

Содержимое файла показано ниже:

      ;-----------------------------------------------------------  
      ; SERVER RELATED VALUES  
      ;-----------------------------------------------------------  
      LDAP_HOST = localhost  
      ;-----------------------------------------------------------  
      ; USER RELATED VALUES  
      ----------------------------  
      ;-------------------------------  
      USER_OBJECTCLASS = posixAccount  
      USER_BASEDN = dc=example,dc=com  
      USERID_ATTRIBUTE = uid  
      AUTHID_ATTRIBUTE = uid  
      ;-----------------------------------------------------------  
      ; GROUP RELATED VALUES  
      ;-----------------------------------------------------------  
      GROUP_OBJECTCLASS = groupOfNames 
	  GROUP_BASEDN = dc=example,dc=com  
      GROUPNAME_ATTRIBUTE = cn  
      GROUP_LOOKUP_METHOD = SEARCH_BY_DN  
      GROUP_LOOKUP_ATTRIBUTE = member 

После изменения этих значений LDAP немедленно вступает в силу, и ваша среда DB2 с LDAP работает отлично.

Вы можете выйти и снова войти в систему для пользователя ‘db2inst2’.

Теперь ваш экземпляр работает с каталогом LDAP.