Использование LDAP в инфраструктуре интернет-компании Сергей Скворцов

Содержание

Слайд 2

I. Теория

I. Теория

Слайд 3

Служба каталогов

Служба каталогов (Directory Service)
Централизованное (единое) хранилище
Хранит ресурсы – один или

Служба каталогов Служба каталогов (Directory Service) Централизованное (единое) хранилище Хранит ресурсы –
более классов, есть набор свойств (атрибутов)
Иерахическое (tree) представление

Слайд 4

Что такое LDAP?

Lightweight Directory Access Protocol
Облегчённый вариант DAP (входит в X.500)
Кратенько: RFC

Что такое LDAP? Lightweight Directory Access Protocol Облегчённый вариант DAP (входит в
4510..4533, плюс ещё ~10..20
Но это не страшно!
Кто читал весь стандарт SQL?
А всё RFC по DNS?
Это бинарный протокол (TCP тоже такой :)

Слайд 5

Глобальные сущности

Directory Information Model (DIM)
Набор схем, которые описывают классы и атрибуты
Directory Information

Глобальные сущности Directory Information Model (DIM) Набор схем, которые описывают классы и
Tree (DIT)
Собственно хранилище ресурсов (directory entries) – объектов и aliases (грубо: symlinks)

Слайд 6

Концепции: классы

Каждый объект относится как минимум к одному классу. Классы наследуются.
Два вида:
Структурные

Концепции: классы Каждый объект относится как минимум к одному классу. Классы наследуются.
(structural)
Вспомогательные (auxiliary)
Содержат обязательные (MUST) и вспомогательные (MAY) атрибуты

Слайд 7

Пример: класс

objectclass (
0.9.2342.19200300.100.4.5
NAME 'account'
SUP top STRUCTURAL
MUST userid
MAY

Пример: класс objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCTURAL MUST userid
( description $ seeAlso $
localityName $ organizationName $
organizationalUnitName $ host
) )

Слайд 8

Концепции: атрибуты

Атрибут определяется через:
Имя и OID-идентификатор
Синтаксис (syntax)
Правила (matching rules)
Сравнения, поиска подстроки
Упорядочивания (сортировки)
Тип

Концепции: атрибуты Атрибут определяется через: Имя и OID-идентификатор Синтаксис (syntax) Правила (matching
значения: множественное или единственное (SINGLE)

Слайд 9

Пример: атрибут

attributetype ( 2.5.4.9
NAME ( 'street' 'streetAddress' )
DESC 'RFC2256: street

Пример: атрибут attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' ) DESC 'RFC2256:
address of object'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128}
)

Слайд 10

Схема(-ы)

Схема задаёт набор атрибутов и классов
Набор загружаемых файлов схем образуют схему DIT

Схема(-ы) Схема задаёт набор атрибутов и классов Набор загружаемых файлов схем образуют
(или просто DIM).
Схемы есть:
Предопределённые (системные)
Внешние (application)
Ваши собственные

Слайд 11

И снова про DS

Cтруктурированное, иерархическое хранилище
Оптимизация на массовое чтение, редкие записи
Это НЕ реляционная

И снова про DS Cтруктурированное, иерархическое хранилище Оптимизация на массовое чтение, редкие
модель!
Может быть разбито на поддеревья
Рассчитано на распределённое использование (referrals)

Слайд 12

DS на пальцах

Аналог – DNS
Но! DNS – это простая lookup служба
Служба каталогов

DS на пальцах Аналог – DNS Но! DNS – это простая lookup
– куда круче!
Некоторая симметрия
Реплики и поддеревья – зоны
DNS записи как объекты
Master и slave сервера
И т.п.

Слайд 13

Кусочек дерева

o=company
ou=users
cn=vpupkin
...
DN: cn=vpupkin,ou=users,o=company

Кусочек дерева o=company ou=users cn=vpupkin ... DN: cn=vpupkin,ou=users,o=company

Слайд 14

Картинка

Картинка

Слайд 15

Кусочек дерева

o=company
ou=users
cn=vpupkin
...
DN: cn=vpupkin,ou=users,o=company

Кусочек дерева o=company ou=users cn=vpupkin ... DN: cn=vpupkin,ou=users,o=company

Слайд 16

LDIF – текстовый формат

dn: uid=vpupkin,ou=users,o=company
objectClass: person
objectClass: inetLocalMainRecipient
cn: Vasily Pupkin
userPassword: {SSHA}XXXXXX
mail: vasya@pupkin.ru

LDIF – текстовый формат dn: uid=vpupkin,ou=users,o=company objectClass: person objectClass: inetLocalMainRecipient cn: Vasily

Слайд 17

Схема расширяема

Решить, надо ли вам это
Достаточно:
Прочесть раздел «Extending Schema»
RFC 4512, и немного

Схема расширяема Решить, надо ли вам это Достаточно: Прочесть раздел «Extending Schema»
других :)
Зарегистрировать OID в IANA

Слайд 18

Стандартные классы

Системные:
organization organizationalUnit groupOfUniqueNames
Пользователи:
account inetOrgPerson inetLocalMailRecipient
Сеть:
domain ipHost ipNetwork bootableDevice ieee802Device
UNIX-related:
posixAccount

Стандартные классы Системные: organization organizationalUnit groupOfUniqueNames Пользователи: account inetOrgPerson inetLocalMailRecipient Сеть: domain
posixGroup sudoRole ldapPublicKey

Слайд 19

Что ещё важного?

Поиск – через т.н. фильтры
Достаточно мощный язык запросов
Расширения протокола через

Что ещё важного? Поиск – через т.н. фильтры Достаточно мощный язык запросов
controls
Примеры: Paged Results, Modify Password
Безопасность
TLS, SASL, и т.п.

Слайд 20

I I. Практика

I I. Практика

Слайд 21

Поставленные цели

Единое центральное хранилище
Управление учётными записями сотрудников
Управление почтой (aliases, листы рассылки)
Учёт сетевых

Поставленные цели Единое центральное хранилище Управление учётными записями сотрудников Управление почтой (aliases,
ресурсов (сетей, хостов)
Единая, прозрачная аутентификация и авторизация
Конфигурация (в т.ч. ACL) для приложений

Слайд 22

Цель: управление доступом

Единая точка управления доступом:
К host’ам по SSH; управление sudoers
К веб-ресурсам:

Цель: управление доступом Единая точка управления доступом: К host’ам по SSH; управление
intranet, wiki, bugzilla, otrs, SVN, webdav-folders, внутренние приложения…
К прочим ресурсам: SMTP/IMAP/POP3; KVM / IPMI, …
К почтовым рассылкам (в т.ч. архивам – через IMAP shared folders)

Слайд 23

Цель: инвентаризация

Отправная точка для инвентаризации:
Информация о хостах, сетях
Ссылки во внешние системы учёта
Точка

Цель: инвентаризация Отправная точка для инвентаризации: Информация о хостах, сетях Ссылки во
синхронизации с DNS:
DNS-зоны доменов генерятся частично из LDAP
Мониторинг:
Начальную информацию берёт из LDAP (без всяких auto-discovery)

Слайд 24

Выбор software

OpenLDAP
Стабильный, быстрый, функциональный
Opensource
Альтернативы
Novell eDirectory; Microsoft Active Directory
Apache Directory Server; Fedora Directory

Выбор software OpenLDAP Стабильный, быстрый, функциональный Opensource Альтернативы Novell eDirectory; Microsoft Active
Server
И ещё чуть меньше десятка

Слайд 25

Реализация: сервера

Master-серверы:
FreeBSD 7.1; OpenLDAP 2.4.16
2 сервера в MirrorMode
CARPed
Consumer-серверы в отдельных ДЦ
чтение локально
записи

Реализация: сервера Master-серверы: FreeBSD 7.1; OpenLDAP 2.4.16 2 сервера в MirrorMode CARPed
перенаправляются на masters

Слайд 26

Типичный LDAPified host

OS: *nix (у нас в массе FreeBSD)
pam_ldap – PAM смотрит

Типичный LDAPified host OS: *nix (у нас в массе FreeBSD) pam_ldap –
сначала в LDAP:
nss_ldap – интеграция NSS с LDAP
users, groups, passwd
openssh+LPK – SSH-ключ смотрится в атрибуте sshPublicKey учётной записи пользователя
sudo+ldap – sudoers полностью находится в LDAP; локальный sudoers у нас запрещён

Слайд 27

DIT крупным планом

cn=company-log
o=company
ou=users
ou=groups
ou=mail
ou=networks
ou=sites

DIT крупным планом cn=company-log o=company ou=users ou=groups ou=mail ou=networks ou=sites

Слайд 28

Учётные записи: DIT

o=company
ou=users
cn=vpupkin
...
ou=retired
ou=locked
ou=system

Учётные записи: DIT o=company ou=users cn=vpupkin ... ou=retired ou=locked ou=system

Слайд 29

Учётные записи: типы

ext-user
person, inetOrgPerson, inetLocalMailRecipient, extraPerson
uid, cn, givenName, sn, mail, userPassword, icqNumber,

Учётные записи: типы ext-user person, inetOrgPerson, inetLocalMailRecipient, extraPerson uid, cn, givenName, sn,
jabber, birthday
plain-user
+ organizationalPerson, intraPerson
title, roomNumber, telephoneNumber, shirtSize
account-user
+ posixAccount, shadowAccount, ldapPublicKey, intraAccount
uidNumber, gidNumber, loginShell, sshPublicKey, loginClass

Слайд 30

Почта: DIT

o=company
ou=mail
dc=spylog.ru
ou=aliases
cn=mOrketing
ou=lists
cn=changes
cn=read
cn=write

Почта: DIT o=company ou=mail dc=spylog.ru ou=aliases cn=mOrketing ou=lists cn=changes cn=read cn=write

Слайд 31

Почта: пример

dn: cn=changes, ou=lists, dc=spylog.ru,ou=mail,o=company
objectClass: nisMailAlias
rfc822MailMember: vasya@pupkin.ru
owner: uid=vpupkin,ou=users,o=company

Почта: пример dn: cn=changes, ou=lists, dc=spylog.ru,ou=mail,o=company objectClass: nisMailAlias rfc822MailMember: vasya@pupkin.ru owner: uid=vpupkin,ou=users,o=company

Слайд 32

LDAP + SMTP

SMTP-auth пользователей – через LDAP
Exim, при получении письма для домена

LDAP + SMTP SMTP-auth пользователей – через LDAP Exim, при получении письма
dc=XXX,ou=mail,обрабатывает целевой адрес:
В ou=lists (атрибут rfc822MailMember): обрабатывает как рассылку – в т.ч. передаётся в Cyrus в shared folder
В ou=aliases (атрибут rfc822MailMember): раскрывает как почтовый алиас
В ou=users (атрибут mailLocalAddress): передаёт в Cyrus в соотв. папку

Слайд 33

LDAP + IMAP

Аутентификация пользователей – через LDAP
Специальный Perl-backend (в отдельном consumer-сервере) ловит

LDAP + IMAP Аутентификация пользователей – через LDAP Специальный Perl-backend (в отдельном
всё изменения в дереве и отражает их в Cyrus
slapd-perl(5)
Cyrus::IMAP::Admin
При добавлении пользователя или при добавлении атрибута mail, содержащего домен, который находится в dc=XXX,ou=mail – в Cyrus создаётся соответствующий почтовый ящик.

Слайд 34

LDAP + IMAP: рассылки

При добавлении рассылки в ou=lists,dc=XXX,ou=mail создаётся соотв. shared folder

LDAP + IMAP: рассылки При добавлении рассылки в ou=lists,dc=XXX,ou=mail создаётся соотв. shared
в Cyrus
При изменении прав на рассылку (добавление/удаление пользователей из дочерних объектов cn=read, cn=write) – соответственно обновляются ACL на shared folder’е

Слайд 35

Учёт сетей

Сети – их много!
Много внутренних (10.0.0.0/8)
Немало внешних (выделенных в RIPE)
Их надо

Учёт сетей Сети – их много! Много внутренних (10.0.0.0/8) Немало внешних (выделенных
учитывать, хранить в едином месте:
Основные параметры (адрес и маску)
RIPE-данные
VLAN, routing, etc.

Слайд 36

Сети: DIT

o=company
ou=networks
cn=10.0.0.0/8
cn=10.99.0.0/16
cn=88.55.66.0-88.55.66.255
...

Сети: DIT o=company ou=networks cn=10.0.0.0/8 cn=10.99.0.0/16 cn=88.55.66.0-88.55.66.255 ...

Слайд 37

Сети: пример

dn: cn=10.99.0.0/16,…,ou=networks,o=company
objectClass: ipNetwork, intraNetConfig
ipNetworkNumber: 10.99.0.0
ipNetmaskNumber: 255.255.0.0
vlanNumber: 555
defaultRoute: 10.99.0.1
owner: uid=vpupkin,ou=users,o=company

Сети: пример dn: cn=10.99.0.0/16,…,ou=networks,o=company objectClass: ipNetwork, intraNetConfig ipNetworkNumber: 10.99.0.0 ipNetmaskNumber: 255.255.0.0 vlanNumber:

Слайд 38

Сайты (sites)

Сайт – это scope of administration
Содержит ресурсы, объединённые по логическому (corp,

Сайты (sites) Сайт – это scope of administration Содержит ресурсы, объединённые по
devel, infra) или проектному (hosting, spylog) принципу
Ресурсы:
хосты, группы доступа, настройки для приложений

Слайд 39

Сайты: DIT

o=company
ou=sites
ou=foobar
ou=hosting
ou=infra
ou=spylog
...

Сайты: DIT o=company ou=sites ou=foobar ou=hosting ou=infra ou=spylog ...

Слайд 40

Типичный сайт: DIT

o=company,ou=sites,ou=foobar
ou=hosts
ou=groups
ou=shellusers
ou=web
ou=virtual
ou=sudoers

Типичный сайт: DIT o=company,ou=sites,ou=foobar ou=hosts ou=groups ou=shellusers ou=web ou=virtual ou=sudoers

Слайд 41

Хосты

Хостов ещё больше чем сетей
Их часто просто теряют
Выделяют повторно одни и те

Хосты Хостов ещё больше чем сетей Их часто просто теряют Выделяют повторно
же ip-адреса
Не всегда ясна связь с реальным железом, со складским учётом и бухгалтерией
Инвентаризация – нужна!
Хочется хранить доп. параметры (carp vhid)

Слайд 42

Сайты: хосты

o=company,ou=sites,ou=foobar
ou=hosts
ou=jails
cn=www01.int.foobar.ru
ou=mgmt
cn=x0666.mgmt
ou=carp

Сайты: хосты o=company,ou=sites,ou=foobar ou=hosts ou=jails cn=www01.int.foobar.ru ou=mgmt cn=x0666.mgmt ou=carp

Слайд 43

Хост: mainhost

dn: cn=x0666,ou=mgmt,ou=hosts, ou=foobar,ou=sites,o=company
objectClass: device,ieee802Device,ipHost,intraHost
cn: x0666.mgmt
ipHostNumber: 10.99.10.4
macAddress: 00:35:1A:15:17:42
hostType: main
datacenterServerID: srv_01018
l: ДЦ Алтуфьево

Хост: mainhost dn: cn=x0666,ou=mgmt,ou=hosts, ou=foobar,ou=sites,o=company objectClass: device,ieee802Device,ipHost,intraHost cn: x0666.mgmt ipHostNumber: 10.99.10.4 macAddress:

Слайд 44

Хост: jailhost

dn: cn=www01.int.foobar.ru,ou=jails,ou=hosts, ou=foobar,ou=sites,o=company
objectClass: ipHost, intraHost
cn: www01.int.foobar.ru
ipHostNumber: 10.99.20.2
hostType: jail
owner: cn=x0666,ou=mgmt,ou=hosts,ou=foobar,ou=sites,o=company
manager: uid=vpupkin,ou=users,o=company

Хост: jailhost dn: cn=www01.int.foobar.ru,ou=jails,ou=hosts, ou=foobar,ou=sites,o=company objectClass: ipHost, intraHost cn: www01.int.foobar.ru ipHostNumber: 10.99.20.2

Слайд 45

Хосты и DNS

Хосты заводятся в LDAP одной командой
# ldap_ctl --create --host XXX

Хосты и DNS Хосты заводятся в LDAP одной командой # ldap_ctl --create

Далее – перегенерятся зоны:
# dns_ctl --process foobar.zone --process 10.99.10.0-24
Думаем (!), коммитим в SVN, выкатываем обновления на authorative NS servers

Слайд 46

Хосты и DNS

Если откуда-то надо срочно понять что это за хост:
# host

Хосты и DNS Если откуда-то надо срочно понять что это за хост:
–t TXT www01.int.foobar.ru
www01.int.foobar.ru descriptive text "manager: uid=vpupkin,ou=users,o=company“
www01.int.foobar.ru descriptive text "mainhost: cn=x0666,ou=mgmt,ou=hosts, ou=foobar,ou=sites,o=company"

Слайд 47

Группы доступа

Группы доступа - самый популярных способ в реализации авторизации
Контроль доступа к:
Хостам

Группы доступа Группы доступа - самый популярных способ в реализации авторизации Контроль
(по SSH)
Веб-приложениям (например, всё Apache-based)
Используем класс groupOfUniqueNames

Слайд 48

Сайты: хосты

o=company,ou=sites,ou=foobar
ou=groups
ou=shellusers
cn=mgmt-dev
ou=web
cn=bugzilla

Сайты: хосты o=company,ou=sites,ou=foobar ou=groups ou=shellusers cn=mgmt-dev ou=web cn=bugzilla

Слайд 49

Группа: пример

dn: cn=mgmt-dev,ou=shellusers,ou=groups, ou=foobar,ou=sites,o=company
objectClass: groupOfUniqueNames
cn: mgmt-dev
uniqueMember: uid=vpupkin,ou=users,o=company
description: Доступ на dev mainhosts

Группа: пример dn: cn=mgmt-dev,ou=shellusers,ou=groups, ou=foobar,ou=sites,o=company objectClass: groupOfUniqueNames cn: mgmt-dev uniqueMember: uid=vpupkin,ou=users,o=company description: Доступ на dev mainhosts

Слайд 50

PAM

/etc/pam.d/sshd , /etc/pam.d/system
# auth
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass
# account
account required /usr/local/lib/pam_ldap.so ignore_authinfo_unavail ignore_unknown_user
account required pam_unix.so
/etc/nsswitch.conf
passwd:

PAM /etc/pam.d/sshd , /etc/pam.d/system # auth auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass auth
cache files ldap

Слайд 51

nss_ldap

/usr/local/etc/nss_ldap.conf
base ou=users,o=company
uri ldap://ldap.company.ru
binddn uid=pam,ou=virtual,ou=foobar,ou=sites,o=company
bindpw 26a9e1b8df74606eaafa2dde8f8964c1
pam_login_attribute uid
pam_member_attribute uniqueMember
pam_groupdn cn=mgmt-dev,ou=shellusers,ou=groups, ou=foobar,ou=sites,o=company
sudoers_base ou=sudoers,ou=foobar,ou=sites,o=company

nss_ldap /usr/local/etc/nss_ldap.conf base ou=users,o=company uri ldap://ldap.company.ru binddn uid=pam,ou=virtual,ou=foobar,ou=sites,o=company bindpw 26a9e1b8df74606eaafa2dde8f8964c1 pam_login_attribute uid

Слайд 52

OpenSSH

/usr/local/etc/ssh/sshd_config
UseLPK yes
LpkLdapConf /usr/local/etc/nss_ldap.conf
LpkServers ldap://ldap.company.ru
LpkForceTLS yes
LpkUserDN ou=users,o=company
LpkBindDN uid=pam,ou=virtual,ou=foobar,ou=sites,o=company
LpkBindPw 26a9e1b8df74606eaafa2dde8f8964c1

OpenSSH /usr/local/etc/ssh/sshd_config UseLPK yes LpkLdapConf /usr/local/etc/nss_ldap.conf LpkServers ldap://ldap.company.ru LpkForceTLS yes LpkUserDN ou=users,o=company LpkBindDN uid=pam,ou=virtual,ou=foobar,ou=sites,o=company LpkBindPw 26a9e1b8df74606eaafa2dde8f8964c1

Слайд 53

Sudo + LDAP

Sudo – стандарт де-факто для контроля выдачи привилегий (в т.ч.

Sudo + LDAP Sudo – стандарт де-факто для контроля выдачи привилегий (в
под root’ом)
Настройки файла sudoers можно хранить в LDAP
Почти без потери функциональности
При этом для надёжности локальный файл sudoers можно просто запретить читать

Слайд 54

Сайты: sudoers

o=company,ou=sites,ou=foobar
ou=sudoers
cn=defaults
cn=root@mgmt-dev
cn=%www@dev-web

Сайты: sudoers o=company,ou=sites,ou=foobar ou=sudoers cn=defaults cn=root@mgmt-dev cn=%www@dev-web

Слайд 55

Sudo: defaults

dn: cn=defaults,ou=sudoers, ou=foobar,ou=sites,o=company
objectClass: sudoRole
cn: defaults
sudoOption: !env_reset
sudoOption: ignore_local_sudoers

Sudo: defaults dn: cn=defaults,ou=sudoers, ou=foobar,ou=sites,o=company objectClass: sudoRole cn: defaults sudoOption: !env_reset sudoOption: ignore_local_sudoers

Слайд 56

Sudo: пример

dn: cn=root@mgmt-dev,ou=sudoers, ou=foobar,ou=sites,o=company
objectClass: sudoRole
cn: root@mgmt-dev
sudoCommand: ALL
sudoHost: x0666.mgmt
sudoOption: !authenticate
sudoRunAs: root
sudoUser: vpupkin

Sudo: пример dn: cn=root@mgmt-dev,ou=sudoers, ou=foobar,ou=sites,o=company objectClass: sudoRole cn: root@mgmt-dev sudoCommand: ALL sudoHost:

Слайд 57

Виртуальные пользователи

В LDAP пользователь – это тот, кто:
Есть как объект в DIT
Имеет

Виртуальные пользователи В LDAP пользователь – это тот, кто: Есть как объект
пароль в атрибуте userPassword
Как следствие он:
Может делать bind к DIT
Т.е. получает доступ к дереву с некими правами

Слайд 58

Сайты: вирт. users

o=company,ou=sites,ou=foobar
ou=virtual
uid=inventory-bot
uid=pam
uid=wiki-bind
uid=jabber-notifier

Сайты: вирт. users o=company,ou=sites,ou=foobar ou=virtual uid=inventory-bot uid=pam uid=wiki-bind uid=jabber-notifier

Слайд 59

Вирт. user: пример

dn: uid=pam,ou=virtual, ou=foobar,ou=sites,o=company
objectClass: account, simpleSecurityObject
uid: pam
userPassword: {SSHA}TgTWBI+nMOOYC8OMLIZaHufQjFDsS2UHzbx12Q==
description: PAM binding

Вирт. user: пример dn: uid=pam,ou=virtual, ou=foobar,ou=sites,o=company objectClass: account, simpleSecurityObject uid: pam userPassword: {SSHA}TgTWBI+nMOOYC8OMLIZaHufQjFDsS2UHzbx12Q== description: PAM binding

Слайд 60

Apache + LDAP: Subversion

AuthBasicProvider ldap
AuthType Basic
AuthName "Subversion"
AuthLDAPBindDN uid=apache-svn,ou=virtual,ou=devel,ou=sites,o=company
AuthLDAPBindPassword 09a5f58cdd4fbd038d86703d0984d604
AuthLDAPURL ldaps://ldap.company.ru/ou=users,o=company?uid?sub
AuthLDAPGroupAttribute uniqueMember
AuthLDAPGroupAttributeIsDN on
Require ldap-group cn=subversion,ou=groups,ou=devel,ou=sites,o=company
AuthLDAPRemoteUserAttribute uid
AuthzLDAPAuthoritative on
AuthzSVNAccessFile /usr/local/etc/subversion/access.conf

Apache + LDAP: Subversion AuthBasicProvider ldap AuthType Basic AuthName "Subversion" AuthLDAPBindDN uid=apache-svn,ou=virtual,ou=devel,ou=sites,o=company

Слайд 61

OpenLDAP: подсистемы

OpenLDAP Software 2.4 Administrator's Guide
Backend - hdb
Overlays:
accesslog – протоколирование изменений (в

OpenLDAP: подсистемы OpenLDAP Software 2.4 Administrator's Guide Backend - hdb Overlays: accesslog
отдельное поддерево)
unique – гарантия уникальности объекта: uid, uidNumber, mail, mailLocalAddress, ipHostNumber
memberof – автоматические backlink ссылки

Слайд 62

OpenLDAP: ACL

Rule-based Access Control Lists - очень мощный синтаксис
«Access Control», slapd.access(5)
Можно делать

OpenLDAP: ACL Rule-based Access Control Lists - очень мощный синтаксис «Access Control»,
тесты
slapacl(8)
Есть экспериментальные ACI - контроль доступа на уровне объекта(ов), когда ACL хранятся прямо в дереве. Не рекомендую.

Слайд 63

OpenLDAP: репликация

Replication:
LDAP Sync Replication
Delta-syncrepl replication
N-Way Multi-Master replication
MirrorMode replication
Syncrepl Proxy
Мы используем MirrorMode
Есть куда

OpenLDAP: репликация Replication: LDAP Sync Replication Delta-syncrepl replication N-Way Multi-Master replication MirrorMode
расти

Слайд 64

Инструментарий

Command line forever!
ldapsearchldapsearch, ldapaddldapsearch, ldapadd, ldapmodify, ldapdelete, …
ldapvi – вся мощь Vim

Инструментарий Command line forever! ldapsearchldapsearch, ldapaddldapsearch, ldapadd, ldapmodify, ldapdelete, … ldapvi –
для LDAP!
Apache Directory Studio – Java GUI
Внутренние разработки:
ldap_ctl, perl backends, …

Слайд 65

III. Размышления

III. Размышления

Слайд 66

Где использовать LDAP ?

Все реализации LDAP оптимизированы на массовые чтения (в отличии

Где использовать LDAP ? Все реализации LDAP оптимизированы на массовые чтения (в
от SQL)
Dynamic Directory Services – это извращение
Хорошая репликация
Время «запрос-ответ» можно уменьшать
Это служба каталогов, а не lookup сервис (в отличии от DNS)
Т.е. удобство схем, мощный поиск

Слайд 67

Почему не SQL ?

SQL – это реляционная модель
out-of-box:
Много полезных и de-facto стандартных

Почему не SQL ? SQL – это реляционная модель out-of-box: Много полезных
схем
Аудит, репликация
Стандартный протокол – много software и hardware его умеют
Это служба каталогов, а не lookup сервис (в отличии от DNS)
Т.е. удобство схем, мощный поиск

Слайд 68

Где мы не используем LDAP

Хранение в LDAP полностью зон DNS
Есть схемы: DNSZone,

Где мы не используем LDAP Хранение в LDAP полностью зон DNS Есть
DNSDomain2
Поддерживается в BIND, PowerDNS
Очень неудобно править *YMMV
Интеграция с DHCP
Пока не было нужно, возможно будет для PXE

Слайд 69

Что в планах

Хранение в LDAP корпоративных PGP Keys
gnupg 2.x так умеет
Реализация шаблонов

Что в планах Хранение в LDAP корпоративных PGP Keys gnupg 2.x так
(templates) для заведения учётной записи / её upgrad’а
PKI – хранить внутренние SSL-сертификаты
Имя файла: Использование-LDAP-в-инфраструктуре-интернет-компании-Сергей-Скворцов.pptx
Количество просмотров: 434
Количество скачиваний: 0