Расширенная конфигурация ACL OpenLDAP
У меня есть несколько DIT на моем сервере OpenLDAP. Я сделал пользователя cn=config корневым, чтобы cn=config имел root-доступ ко всем DIT (каждому DIT). Кроме того, существует администратор для каждого DIT, идентифицируемый как cn=admin, суффикс $ [например, 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. Я, видимо, не понимаю, как правильно установить эти правила.
1 ответ
Я считаю, что вы используете более сложный подход, чем необходимо. Чтобы отключить 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