Назад | Перейти на главную страницу

Расширенная конфигурация ACL OpenLDAP

У меня есть несколько DIT на моем сервере OpenLDAP. Я сделал пользователя cn = config корневым, чтобы cn = config имел root-доступ ко всем DIT (каждому DIT). Кроме того, существует администратор для каждого DIT с идентификатором cn = admin, $ suffix [например, cn = admin, dc = example, dc = com или что-то еще].

Я добавил настраиваемый атрибут NAME для объектов admin и user. Атрибут называется «serviceLevel», а его значения либо «приостановлены», либо «нормальные». Атрибут является необязательным, и если его нет, мы интерпретируем его как нормальный, а не приостановленный.

В настоящее время, когда serviceLevel установлен в состояние «приостановлено», мой ACL приостанавливает работу обычных пользователей и не приостанавливает работу локальных администраторов / администраторов DIT. Мне нужно, чтобы администраторы не могли аутентифицироваться, как обычные пользователи.

Ниже приведены примеры текущих ACL настроек LDIF:

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  filter=(serviceLevel=suspended)
  by dn="cn=config" write
  by * none
olcAccess: {1}to attrs=userPassword,shadowLastChange
  filter=(!(serviceLevel=suspended))
  by self write
  by anonymous auth
  by dn="cn=admin,dc=directory,dc=com" write
  by dn="cn=config" write
  by * none
olcAccess: {2}to dn.base="" by * read
olcAccess: {3}to *
  filter=(serviceLevel=suspended)
  by dn="cn=config" write
  by * none
olcAccess: {4}to *
  filter=(!(serviceLevel=suspended))
  by self write
  by dn="cn=admin,dc=directory,dc=com" write
  by dn="cn=config" write
  by * read

Посоветуйте, пожалуйста, если у вас есть идея, почему админы домена проскальзывают мой ACL. Я, видимо, не понимаю, как правильно установить эти правила.

Я считаю, что вы применяете более сложный подход, чем необходимо. Чтобы отключить DIT, отключите соответствующую базу данных. Это можно сделать, установив olcHidden: TRUE.

olcHidden: ИСТИНА | ЛОЖНЫЙ
Определяет, будет ли база данных использоваться для ответов на запросы. Скрытая база данных никогда не будет выбрана для ответа на какие-либо запросы, а любой суффикс, настроенный для этой базы данных, будет игнорироваться при проверках конфликтов с другими базами данных. По умолчанию olcHidden имеет значение FALSE.

ldapmodify <<EOF
dn: olcDatabase={2}hdb,cn=config
replace: olcHidden
olcHidden: TRUE
EOF

Дополнительное примечание:

Независимо от того, какая политика контроля доступа определена, rootdn всегда имеет полные права (т.е. авторизация, поиск, сравнение, чтение и запись) обо всем и обо всем.

Как следствие, бесполезно (и приводит к снижению производительности) явно указывать rootdn среди предложений. -OpenLDAP Software 2.4 Administrator's Guide