Skip to content

youngpopeugene/ArticleLDAP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

Что такое LDAP-протокол, иерархия данных? Определение компонентов данных LDAP. Когда и почему LDAP лучше, чем база данных?

Введение

LDAP, или Lightweight Directory Access Protocol, является открытым протоколом, используемым для хранения и получения данных из каталога с иерархической структурой. Обычно используемый для хранения информации об организации, ее активах и пользователях, LDAP является гибким решением для определения любого типа сущностей и их свойств.

Что такое «служба каталогов»?

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

Что такое LDAP?

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

Основные компоненты данных LDAP

Атрибуты

Сама информация в LDAP-системе хранится в элементах, называемых атрибутами. Атрибуты, в основном, являются парами ключ-значение. В отличие от некоторых других систем, ключи имеют предопределённые имена, которые продиктованы выбранным для данной записи объектными классами. Данные в атрибуте должны соответствовать типу, определённому в исходном определении атрибута.

Установка значения для атрибута:

mail: [admin@example.com]

При обращении к атрибуту и его данным (когда он не задан), две стороны соединяются знаком равенства:

mail=[example.com]

Записи

В LDAP вы используете атрибуты в пределах записи (entry). Запись представляет собой набор атрибутов под именем, используемый для описания чего-либо.

dn: sn=Ellingwood,ou=people,dc=digitalocean,dc=com
objectclass: person
sn: Ellingwood
cn: Justin Ellingwood

DIT

Все записи добавляются в систему LDAP в виде веток на деревьях, называемых Data Information Trees, или DIT-ы.

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

sn=Ellingwood,ou=people,dc=digitalocean,dc=com  

Эта строка называется distinguished name (dn) записи и используется для идентификации записи. Она функционирует как полный путь до "корня" DIT. В данном случае у нас есть запись под названием sn=Ellingwood, которую мы создаем. Прямым родителем является запись с именем ou=people. Родители этой записи произошли от доменного имени digitalocean.com, которое выступает как корень нашей DIT.

Определение компонентов данных LDAP

Определение атрибутов

Атрибуты определяются с использованием достаточно сложного синтаксиса. Это определение для атрибута name:

attributetype ( 2.5.4.41 NAME 'name' DESC 'RFC4519: common supertype of name attributes'
        EQUALITY caseIgnoreMatch
        SUBSTR caseIgnoreSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

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

Определения классов объектов

ObjectClasses — это просто группировка связанных атрибутов, которая была бы полезна при описании конкретной вещи. Например, "person" — это objectClass. Записи имеют возможность использовать атрибуты objectClass путем задания специального атрибут с названием objectClass, задающий objectClass, который вы хотите использовать.

dn: . . .
objectClass: person

После этого у вас появляется возможность установить внутри записи следующие атрибуты:

  • cn: Общее имя
  • description: Понятное человеку описание записи
  • seeAlso: Ссылка на связанные записи
  • sn: Фамилия
  • telephoneNumber: Номер телефона
  • userPassword: Пароль пользователя

Два основных типа ObjectClasses — это структурный (structural) и вспомогательные (auxiliary). Первый используется для создания и определения записи, второй - несет в себе дополнительный функционал. Запись должна иметь ровно один структурный класс, но может иметь ноль или более вспомогательных классов.

Определения ObjectClass определяют, являются ли предоставляемые атрибуты обязательными (MUST) или необязательными (MAY).

objectclass ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top STRUCTURAL
  MUST ( sn $ cn )
  MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

Это определяется как структурный объектClass, что означает, что он может быть использован для создания записи. Созданная запись должна содержать заданными атрибуты surname и commonname, и может, при желании, содержать аттрибуты userPassword, telephoneNumber, seeAlso, или description.

Схемы

Схемы в LDAP представляют собой просто наборы взаимосвязанных ObjectClasses и атрибутов. Один DIT может иметь много различных схем, так что он может создавать нужные ему записи и атрибуты.

Формат схемы, по сути, является просто комбинацией вышеперечисленных записей.

. . .
objectclass ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top STRUCTURAL
  MUST ( sn $ cn )
  MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
  DESC 'RFC2256: last (family) name(s) for which the entity is known by' SUP name )
attributetype ( 2.5.4.4 NAME ( 'cn' 'commonName' )
  DESC 'RFC4519: common name(s) for which the entity is known by' SUP name )
. . .

Наследование в LDAP

Наследование объектных классов

Каждый objectClass — это класс, который описывает характеристики объектов данного типа. Однако объекты в LDAP могут быть экземплярами нескольких классов. Это позволяет указать для записи несколько классов, в результате чего объект просто имеет доступ к объединенной коллекции атрибутов со строжайшими определениями MUST или MAY, имеющими приоритет.

Объектный класс может указывать на родительский объектный класс, от которого он наследует свои атрибуты. Родительским является объектный класс, следующий за идентификатором SUP. Класс-родитель должен быть того же типа, как и определяемый объектный класс (например, STRUCTURAL или AUXILIARY).

objectclass ( 2.5.6.7 NAME 'organizationalPerson' SUP person STRUCTURAL
 . . .

Почти все деревья наследования каждого объектного класса заканчиваются специальным объектным классом, называемым "top". Это абстрактный объектный класс, единственное предназначение которого заключается в том, чтобы можно было выполнить требование задавания объектного класса. Он используется для указания вершины цепочки наследования.

Наследование атрибутов

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

Когда и почему LDAP лучше, чем база данных?

Аспект LDAP Реляционная база данных Преимущества LDAP
Тип данных Оптимизирован для чтения, поиска и управления иерархическими данными. Оптимизирован для хранения, извлечения и управления структурированными данными в табличном формате. LDAP лучше для иерархических данных, таких как пользовательские учетные записи, группы, организационные структуры.
Операции Преимущественно чтение, менее эффективен для операций записи. Поддерживает сложные операции записи и обновления. LDAP эффективен в средах, где операции чтения значительно преобладают над операциями записи.
Запросы Использует простой механизм фильтрации. Поддерживает сложные запросы с использованием SQL. LDAP подходит для простых запросов, особенно при поиске и фильтрации данных пользователей.
Масштабируемость Высокая масштабируемость для операций чтения. Масштабируемость зависит от конкретной СУБД, но обычно хорошо масштабируется и для чтения, и для записи. LDAP лучше масштабируется для сценариев с высоким объемом операций чтения.
Безопасность Обычно используется для управления доступом и аутентификацией. Может включать сложные системы контроля доступа, но не специализируется на аутентификации. LDAP является предпочтительным выбором для управления учетными записями и аутентификации.
Сложность управления Сравнительно прост в управлении за счет ограниченного набора операций. Может требовать более сложного управления и настройки. LDAP легче в управлении для конкретных задач управления идентификацией.
Интеграция Легко интегрируется с различными системами и приложениями для управления идентификацией. Хорошо интегрируется с приложениями, требующими сложной обработки данных. LDAP лучше подходит для интеграции с системами управления идентификацией и доступом.

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

Заключение

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

About

ITMO — Semester 5 — ComputerSystems

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published