Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> документация —> LDAP —> часть 1

Введение в службу директорий OpenLDAP.

Автор: fr33man.


1. Введение в службу директорий OpenLDAP.

Этот документ описывает, как установить, настроить и управлять ПО OpenLDAP, чтобы обеспечить работу службы директорий. Этот документ так же включает в себя описание настройки и запуска stand-alone LDAP демона slapd(8) и stand-alone LDAP демона репликаций slurpd(8). Документ предназначен, как для новичков, так и для опытных администраторов. Этот раздел содержит базовые сведения о службе директорий и, в частности, о службе директорий, предоставляемых slapd(8).

1.1 Что такое служба директорий?

Директория - это специальная база данных, оптимизированная для чтения, просмотра и поиска. Директории содержат описательную, основанную на аттирбутах, информацию и поддерживают специальные возможности филтрации информации. Обычно, директории не поддерживают сложных транзакций и roll-back схем, которые могут быть найдены в базах данных, спроектированных для поддержания сложного обновления данных. Обновление директорий намного проще, изменения происходят по принципу все или ничего, если изменения вообще разрешены. Директории оптимизированы для быстрого ответа на сложный запрос или на поиск. Директории так же могут быть расположены на многих серверах, для повышения допступности и надежности. Когда информация директории копируется, то временные несогласованности между двумя копиями могут быть одобрены, до того момента, пока они полностью не синхронизуются.

Существует много способов обеспечить работу службы директорий. Разные методы позволяют по-разному хранить информацию, накладывают разные ограничения на то, как эта информация может быть запрошена, обновлена, защищена от неавторизованного доступа. Некоторые службы директорий локальные, обеспечивающие доступ определенному кругу(например, сервис finger на одной машине). Другие службы директорий - глобальные, обслуживающие намного больший круг(например, весь Интернет). Глобальные службы чаще всего распределены, что означает, что данные, которые они содержат распространены на большом количестве машин, все из которых кооперируют для того чтобы обеспечить работу службы директорий. Глобальные службы обычно определяют namespace, который позволяет обращаться к данным, несмотря на ваше расположение относительно этих данных. Domain Name System(DNS) - это пример глобально распространенной службы директорий.

1.2 Что такое LDAP?

LDAP - это сокращение от Lightweight Directory Access Protocol. Как следует из названия - это облегченный протокол для доступа к службе директорий, в частности к службам директорий, основанных на протоколе X.500. LDAP работает поверх протокола TCP/IP или другого, ориентированого на передачу данных. Информация о LDAP описана в RFC2251 "The Lightweight Directory Access Protocol (v3)" и в других документах, состоящих из технической информации RFC3377. Этот раздел рассматривает LDAP от лица пользователя.

Какой тип информации может храниться в директориях? Информационная модель LDAP основана на записях. Запись состоит из аттрибутов, которые имеют глобальные и уникальные Distinguished Names(DN). DN используется для точного определения записи. Каждый аттрибут имеет свой тип и одно или несколько значений. Типами обычно являются строки, например, "cn" - common name(имя) или "mail" - почтовый адрес. Значения зависят от типа аттрибута. Например, аттрибуту "cn" может соответствовать значение  Babs Jensen. Аттрибут "mail" может содержать значение "babs@example.com". Аттрибут jpegPhoto должен содержать фотографию в формате jpeg(бинарные данные).

Как информация храниться в LDAP? В LDAP, записи хранятся в виде иерархического дерева. Традиционно, такая структура отражает географические и организационные границы. Записи, обозначающие страны, находятся наверху дерева. Чуть ниже располагаются записи о регионах и организациях. Еще ниже - информация об отделах, людях, принтерах, документах или о том, о чем вы подумаете. На рисунке 1.1 изображен пример LDAP директории, использующей традиционное именование.

Дерево так же может быть создано, основываясь на доменных именах интернета. Такое именование становится все более популярным, так как позволяет узнать расположение службы директорий, используя DNS. Рисунок 1.2 показывает пример дерева, основанного на доменных именах.

Так же, LDAP позволяет контролировать какие аттрибуты необходимы и разрешены в записи, используя специальный аттрибут - objectClass. Значение аттрибута objectClass определяет схему правил, которой будет подчиняться запись.

Как информация связана? Записи связаны с помощью своих DN, которые состоят из собственного имени записи(Relative Distinguished Name или RDN) и из имен вышестоящих записей. Например, запись для Barbara Jensen, в примере выше(рис. 1.2) имеет RDN: uid=babs и DN: uid=babs,ou=People,dc=example,dc=com. Формат записи DN описан в RFC2253, "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names."

Как получить доступ к информации? LDAP содержит операции для запросов и обновления директорий. Операции позволяют добавлять и удалять записи из директорий, изменять текущие записи и изменять имя записи. Больше времени LDAP используется для поиска информации в директориях. Операция поиска в LDAP позволяет просмотреть часть директорий, для поиска записей, удовлетворяющих некоторому критерию, указанному в фильтре поиска. Информация может быть запрошена из каждой записи, удовлетворяющей критерию.

Например, вы хотите найти в директории, находящейся ниже dc=example,dc=com, людей с именем Barbara Jensen, и получить адресс email каждой найденной записи. LDAP позволит легко это сделать. Или вы хотите найти записи организаций, находящиеся ниже st=California,c=US, и содержащие в своем название слово Acme и у которых есть номер факса. LDAP позволит вам сделать это. В следующем разделе будет более детально описано, что вы можете сделать с помощью LDAP и как вы можете это использовать.

Как информация защищена от неавторизованного доступа? Некоторые службы директорий не обеспечивают защиты, позволяя всем просматривать информацию. LDAP дает возможность пользователю авторизоваться или доказать свою идентичность серверу директорий, для получения больших возможностей по управлению доступом, чтобы защитить информацию, которую содержит сервер. LDAP так же поддерживает безопасность данных(целостность и конфиденциальность).

1.3 Как работает LDAP?

Служба директорий LDAP основана на клиент-серверной модели. Один или несколько серверов LDAP содержат данные, которые создают directory information tree (DIT). Клиент соединяется с сервером и спрашивает его. Сервер дает клиенту ответ и/или указание, где получить дополнительную информацию(обычно, другой LDAP сервер). Неважно, с каким сервером соедениться клиент, он увидит ту же самую директорию; имя преоставленно LDAP серверу ссылается на ту же запись, которая будет и на другом LDAP сервере. Это важная особенность глобальной службы директорий, такой как LDAP.

1.4 Что насчет X.500?

Технически, LDAP это протокол доступа к службам директорий, основанных на X.500, службе директорий OSI. Первоначально LDAP клиенты получили доступ через шлюзы к службе директорий X.500. На этих шлюзах работал LDAP, соединявший клиента и шлюз и Directory Access Protocol (DAP) X.500, а так же соединявий шлюз и X.500 сервер. DAP - тяжелый протокол, который работает через весь стек модели OSI и достаточно требователен к ресурсам компьютера. LDAP создан, чтобы работать поверх TCP/IP и обеспечивать большинство функциональных возможностей DAP, но затрачивая меньше ресурсов.

Пока LDAP все еще используется для доступа к службе директорий X.500 через шлюзы, LDAP теперь непосредственно используется в серверах X.500.

Stand-alone LDAP демон, или slapd(8), может быть определен, как облегченная версия  сервера директорий X.500. Таким образом LDAP не осуществляет полностью протокол DAP и не поддерживает полные модели DAP.

Если Вы используете службу X.500 DAP и хотите продолжать использование данной службы, то можете перестать читать данную документацию. Эта документация описывает использование директорий LDAP, созданных с помошью slapd(8), без использования X.500 DAP. Если вы не используете X.500 DAP или хотите прекратить использование X.500 DAP или у вас нет срочных планов по запуску X.500 DAP, то можете продолжать читать.

Так же возможно скопировать данные из сервера директорий LDAP в X.500 DAP DSA. ЭТа операция потребует шлюз с запущенным DAP/LDAP. OpenLDAP не предоставляет таких возможностей, но демон репликаций может быть использован для копирования данных. Смотрите раздел Копирование данных с помощью slurpd, для более подробной информации о копировании данных.

1.5 Какая разница между LDAPv2 и LDAPv3?

LDAPv3 был разработан в 1990 году, чтобы заменить LDAPv2. В LDAPv3 были добавлены новые возможности:

- Строгая аутентификация и защита данных с помощью SASL.
- Аутентификация с помощью сертефикатов и безопасность данных с помощью TLS(SSL).
- Использование Unicode.
- Использование ссылок.
- Просмотр схем.
- Расширяемость(контроль, расширенные операции и тд.).

LDAPv2 описан в RFC3494. Большинство реализаций LDAPv2(включая slapd) не соответствует технической спецификации, поэтому поддержка LDAPv2 приостановлена. LDAPv2 очень сильно отличается от LDAPv3, настраивать одновременно LDAPv2 и LDAPv3 достаточно проблематично. LDAPv2 лучше не использовать. LDAPv2 выключен по умолчанию.

1.6 Что такое slapd и что он может сделать?

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

LDAPv3: slapd позволяет использовать третью версию LDAP протокола. Slapd поддерживает работу LDAP поверх IPv4 и IPv6 и Unix IPC.

Simple Authentication and Security Layer(SASL): slapd поддерживает аутентификацию и безопасность данных(целостность и конфендициаьность) с помощью испоьзования SASL. Slapd использует утилиты Cyrus-sasl, которые поддерживают разные механизмы аутентификации, например, DIGEST-MD5, EXTERNAL и GSSAPI.

Transport Layer Security(TLS): slapd поддерживает аутентификацию, основанную на сертефикатах, и безопасность данных(целостность и конфендициаьность) с помощью TLS(SSL). Slapd использует утилиты OpenSSL.

Контроль основанный на информации о сети: slapd может быть настроен для распределения доступа, основанного на топологии сети. Это возможность использует TCP wrappers.

Контроль доступа: slapd обеспечивает богатое и мощное средство контроля   доступом, которое позволяет контролировать доступ к вашей информации в вашей базе данных. Вы можете управлять доступом к записям, основываясь на аутентификационной информации, IP адрессе, доменном имени или на другом критерии. Slapd поддерживает и статический и динамический контроль доступа к информации.

Интернационализация: slapd поддерживает Unicode и языковые признаки.

Выбор типов баз данных: slapd предоставляет возможность выбора из различных типов баз данных. BDB высокоэффективная БД, поддерживающая транзакции. HDB иерархичная, высокоэффективная БД, поддерживающая транзакции. LDBM облегченная весия БД DBM. SHELL интерфейс для хранения произвольных SHELL скриптов. PASSWD простой интерфейс к файлу passwd(5). BDB и HDB используют Sleepycat Berkeley DB. LDBM использует Berkeley DB или GDBM.

Использование разных типов БД: slapd может быть сконфигурирован для одновременного управления разными базами данных. Это значит, что один сервер slapd может отвечать на запросы для логически разных частей дерева LDAP, используя один или разные типы баз данных.

Единый программный интерфейс для модулей: Если вам необходимо больше гибкости, то вы можете написать собственный модуль для slapd. slapd разделен на две части: передняя часть, которая содержит протокол связи с LDAP клиентами и модульная часть, которая содержит специфические задачи, например, операции с БД. Так как эти две части связаны между собой с помошью хорошо определенного языка C, то вы можете написать собственные модули, которые смогут расширить возможности slapd. Так же поддерживается большое число программируемых модулей БД. Это позволит вам подключить внешние данные к slapd, используя популярные языки программирования(Perl, Shell, SQL и TCL).

Потоки: slapd является многопоточным для лучшей производительности. Единственный процесс slapd обрабатывает все входящие запросы, использую потоки. Это уменьшает нагрузку на систему, увеличивая эффективность работы.

Репликации: slapd может быть настроен для хранения копий директорий. Схема single-master/multiple-slave очень важна в большой среде, где единственный slapd сервер не может обеспечить необходимую доступность и надежность. Slapd поддерживает два метода репликации: основанную на синхронизации и основанную на демоне slurpd(8).

Кэширующий прокси: slapd может быть настроен как кэширующий LDAP прокси сервер.

Конфигурация: slapd является очень конфигурируемым сервером, с одним конфигурационным файлом, который позволяет поменять все, что вы когда-либо хотели поменять. Конфигурационные опции имеют разумные настройки по умолчанию, что делает вау работу намного легче.

1.7 Что такое slurpd и что он может делать?

slurpd(8) - демон, который, с помощью slapd(8), обеспечивает работу службы репликаций. Он отвечает за распространение изменений, сделанных в главной БД slapd, на другие БД slapd. Slurpd освобождает slapd от необходимости беспокоится, если другие БД slapd выключены или недоступны, когда произошли изменения в главной БД. Slurpd автоматически повторяет запросы на обновление. Slapd и Slurpd связаны через простой текстовый файл, который используется для записи изменений.

Смотрите раздел Replication with slurpd для информации о том, как настроить и запустить демон репликаций slurpd(8).

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



размещено: 2007-04-05,
последнее обновление: 2007-11-21,
автор: fr33man



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.033 секунд
Из них PHP: 29%; SQL: 71%; Число SQL-запросов: 42 шт.
Исходный размер: 31086; Сжатая: 9154