Введение в LDAP
служба каталогов
Каталог — это профессиональная распределенная база данных, оптимизированная для запросов, просмотра и поиска, которая представляетДревовидная структура для организации данных, точно так же, как каталог файлов в системе Linux/Unix. В отличие от реляционных баз данных, базы данных-каталоги имеют отличныепроизводительность чтения,ноплохая скорость записи, и нет сложных функций типа обработки транзакций и отката, что не подходит для хранения часто изменяемых данных. такКаталоги созданы для запросов. LDAP (облегченный протокол доступа к каталогам) позволяет управлять данными каталога по одному.
Функции
- Структура LDAP представлена деревом, а не таблицей. Из-за этого вы не можете использовать операторы SQL
- LDAP может очень быстро получать результаты запроса, но с точки зрения записи он намного медленнее.
- LDAP обеспечивает быстрый способ запроса статических данных
- Модель клиент/сервер. Сервер используется для хранения данных. Клиент предоставляет инструменты для управления информационными деревьями каталогов.
- Эти инструменты могут представить вам содержимое базы данных в текстовом формате (формат обмена данными LDAP, LDIF).
- LDAP — это открытый интернет-стандарт, а протокол LDAP — межплатформенный интернет-протокол.
Как LDAP упорядочивает данные
На следующем рисунке показано дерево каталогов LDAP:
В этом дереве нам нужно понимать следующие понятия:
Вход
Каждая сетка на рисунке является записью Entry, запись имеет несколько атрибутов и несколько значений, а также может содержать несколько подзаписей.
Отличительное имя, DN
Подобно абсолютному пути в Linux, он указывает абсолютный путь, запускаемый из корня дерева каталогов, который является уникальным идентификатором записи. DN ребенка на рисунке может быть выражено как:
cn=baby,ou-marketing,ou=people,dc=mydomain,dc=org
Относительное отличительное имя Относительное DN
Относительное отличительное имя — это содержимое слева от первого DN.
Например, RDN ребенка может быть выражено как
cn=baby
Вообще говоря, RDN используют записи dc=, ou=, c=, o= в качестве контейнеров, что означает, что они могут содержать подзаписи.
Базовое отличительное имя Базовое DN
Относится к корню каталога, DN этого рисунка:
dc=mydomain,dc=org
Атрибуты
Каждая запись может иметь множество атрибутов (Attribute), например, у обычных людей есть такие атрибуты, как имя, адрес, телефон и т.д. У каждого атрибута есть имя и соответствующее значение. Значение атрибута может быть одиночным или множественным. Например, у вас есть несколько почтовых ящиков.
Атрибуты не определены произвольно, они должны соответствовать определенным правилам, и этоПравила могут быть сделаны через схему. Например, если запись не включена в схему inetorgpersonobjectClass: inetOrgPerson, то для него нельзя указать свойство employeeNumber, так как employeeNumber определен в inetOrgPerson.
LDAP разработал атрибуты (такие как commonName, surname) для общих объектов в кадровых организациях. Вот некоторые часто используемые псевдонимы:
| Атрибуты | псевдоним | грамматика | описывать | значение (пример) |
|---|---|---|---|---|
| commonName | cn | Directory String | Имя | sean |
| surname | sn | Directory String | фамилия | Chow |
| organizationalUnitName | ou | Directory String | Название подразделения (отдела) | IT_SECTION |
| organization | o | Directory String | Название организации (компании) | example |
| telephoneNumber | Telephone Number | номер телефона | 110 | |
| objectClass | Встроенные свойства | organizationalPerson |
класс объекта
Класс объектов представляет собой набор атрибутов.LDAP инкапсулирует множество общих объектов в организации и инкапсулирует их в класс объектов. Например, person (лицо) содержит такие атрибуты, как фамилия (sn), имя (cn), номер телефона (telephoneNumber), пароль (userPassword), а OrganizationPerson — это класс наследования лица (person), который также содержит титулы. помимо вышеперечисленных атрибутов (название), почтовый индекс (postalCode), почтовый адрес (postalAddress) и другие атрибуты.
LDAP также определяет атрибуты объектов, из которых есть два типа атрибутов:
- Обязательные/обязательные обязательные атрибуты
- May/Optional необязательные расширенные атрибуты
Существует три типа классов объектов: Структурные, Абстрактные и Вспомогательные. Структурный тип является самым основным типом, он определяет основные свойства объектной сущности, каждая запись принадлежит одному и только одному структурному классу объектов. Абстрактный тип может быть структурным типом или другим суперклассом абстрактного типа, который объединяет общие части свойств объекта вместе, называемым шаблоном других классов, и запись не может напрямую интегрировать класс объекта абстрактного типа. Вспомогательные типы определяют расширенные свойства объектных сущностей. Каждая запись имеет по крайней мере один класс структурных объектов.
Как и объектно-ориентированные, классы объектов LDAP могут выполнять такие операции, как полиморфизм наследования:
Schema
Класс объекта (ObjectClass), тип атрибута (AttributeType) и синтаксис (Syntax) соответственно определяют элементы, атрибуты и значения. Отношения между ними показаны на следующем рисунке. Таким образом, они составляют схему — набор классов объектов.
LDAP-файл
Файл формата обмена данными LDAP, который хранится в текстовом виде и используется для обмена данными между серверами. Добавление данных и изменение данных необходимо выполнять через файл LDIF. Можно провести аналогию с файлом SQL реляционной базы данных.
Формат файла LDIF обычно следующий:
dn: <识别名>
<属性 1>: <值 1>
<属性 2>: <值 2>
...
Установить
yum install -y openldap openldap-servers openldap-clients
service slapd start
# 查看状态
netstat -antup | grep -i 389
настраивать
Запустите команду slappaswwd, чтобы сгенерировать зашифрованный текст пароля администратора:
[root@localhost openldap-2.4.46]# slappasswd
New password:
Re-enter new password:
{SSHA}V66P95ZEFTur6OZYQf10L4h8hlTeUakC
Во-первых, мы сначала создаем файл в формате Modify.ldif и введите следующий контент:
# 修改管理员密码
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}V66P95ZEFTur6OZYQf10L4h8hlTeUakC
# 管理员的DN前缀(一般为Base DN)
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=my-domain,dc=com
# 管理员的用户名
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=my-domain,dc=com
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=my-domain,dc=com" read by * none
Выполните следующую команду, чтобы завершить изменения в конфигурации службы LDAP:
ldapadd -Y EXTERNAL -H ldapi:/// -f modify.ldif
добавить узел
Давайте создадим новый base.ldif и добавим следующее содержимое Entry:
dn: dc=my-domain,dc=com
dc: my-domain
objectClass: top
objectClass: domain
dn: cn=admin,dc=my-domain,dc=com
objectClass: organizationalRole
cn: admin
uid: admin
mail: admin@my-domain.com
dn: cn=testuser,dc=my-domain,dc=com
objectClass: organizationalRole
cn: testuser
uid: testuser
mail: testuser@my-domain.com
description: Just A Test User
Запустите команду для вставки данных:
ldapadd -x -W -D "cn=admin,dc=my-domain,dc=com" -f base.ldif
# 检查是否添加成功
ldapsearch -x -b 'dc=my-domain,dc=com' '(objectClass=*)'
Добавить пользователя
P.S. Адресы тестового сервера появляются ниже: 10.10.101.29, порт 389 по умолчанию, BDN является DC = My-Domain, DC = COM
Можно использовать команду режима низкой эффективностиПрограммное обеспечение администратора LDAPОсуществлять визуальное управление.
Вы можете видеть, что информация о добавленном пользователе выглядит следующим образом (обратите внимание на добавление атрибута userPassword, который может быть сгенерирован предыдущей командой):
LDAP-соединение с другими инструментами
Конфигурация в Redmine
В режиме управления, аутентификации добавьте следующую информацию:
Нажмите «Управление» > «Пользователи», создайте нового пользователя и добавьте вновь созданного пользователя через LDAP:
Затем вы можете войти в эту учетную запись с помощью uid и userPassword, установленных LDAP.
Настроить в Дженкинсе
Выберите «Настроить глобальную безопасность» в разделе «Управление системой», выберите «Управление доступом к LDAP» и введите следующее (чтобы нажать «Расширенная конфигурация сервера», чтобы настроить BDN и другую информацию).
Это можно проверить со следующими настройками Test LDAP:
использованная литература
https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html
http://seanlook.com/2015/01/21/openldap-install-guide-ssl/
https://zhuanlan.zhihu.com/p/32732045
https://segmentfault.com/a/1190000002607140
https://www.cnblogs.com/lemon-le/p/6266921.html
http://www.pfeng.org/archives/564
http://www.pfeng.org/archives/580