Статьи

MongoDB LDAP и Kerberos аутентификация с помощью Centrify

Алекс Комягин из MongoDB с помощью Фельдери Сантьяго из Centrify и Робертсона Пиментеля из Centrify

обзор

Centrify предоставляет унифицированные решения для управления идентификацией, которые обеспечивают единый вход для пользователей (SSO) и упрощенную инфраструктуру идентификации для ИТ. Centrify Server Suite интегрирует системы Linux в домены Active Directory, чтобы обеспечить централизованную аутентификацию, контроль доступа, управление привилегированными пользователями и аудит доступа для соответствия требованиям.

Начиная с версии 2.4, MongoDB Enterprise позволяет выполнять аутентификацию с помощью Microsoft Active Directory Services с использованием протоколов LDAP и Kerberos. В системах Linux теперь можно использовать решение Centrify Server Suite для интеграции MongoDB с Active Directory.

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

Требования

  • Существующий домен Active Directory
  • MongoDB Enterprise 2.4 или выше
  • Centrify Suite

Все дальнейшие команды MongoDB в этой статье приведены для текущей последней стабильной версии, MongoDB 2.6.5. Используемая ОС Linux — RHEL6.4. Версия Centrify Server Suite — 2014.1.

Процедура настройки

Подготовка нового сервера MongoDB Linux

В существующих корпоративных средах, в которых уже используются Centrify и MongoDB, обычно есть конкретные рекомендации по настройке систем Linux. Здесь мы рассмотрим самые основные необходимые шаги, которые можно использовать как краткий справочник:

1. Настройте имя хоста и разрешение DNS

Для правильной работы Centrify и MongoDB необходимо установить имя хоста в системе и убедиться, что он настроен на использование правильного IP-адреса экземпляра DNS-сервера, поддерживающего Active Directory. Вы можете обновить имя хоста, используя команды, которые выглядят следующим образом:

$ nano /etc/sysconfig/network
HOSTNAME=lin-client.mongotest.com
$ reboot
$ hostname -f
lin-client.mongotest.com

Затем проверьте настройки DNS и добавьте дополнительные серверы, если это необходимо:

$ nano /etc/resolv.conf
search mongotest.com
nameserver 10.10.42.250

2. Установите MongoDB Enterprise

Процесс установки хорошо описан в нашей документации. Для этого упражнения рекомендуется отключить SELinux:

$ nano /etc/selinux/config
SELINUX=disabled

Поскольку MongoDB предоставляет пользовательские привилегии посредством авторизации на основе ролей, в mongodb должны быть созданы LDAP и пользователь Kerberos:

$ service mongod start
$ mongo
> db.getSiblingDB("$external").createUser(
    {
      user : "alex",
      roles: [ { role: "root" , db : "admin"} ]
    }
)
> db.getSiblingDB("$external").createUser(
   {
     user: "[email protected]",
     roles: [ { role: "root", db: "admin" } ]
   }
)

«Alex» — это пользователь, зарегистрированный в AD и являющийся членом группы «Пользователи домена», в качестве организационной единицы которого установлена ​​«поддержка».

3. Установите агент Centrify

Распакуйте архив пакета Centrify и установите пакет centrify-dc. Затем присоедините сервер к своему домену в качестве рабочей станции:

$ rpm -ihv centrifydc-5.2.0-rhel3-x86_64.rpm
$ adjoin -V -w -u ldap_admin mongotest.com
[email protected]'s password:

Здесь «ldap_admin» — это пользователь, который является членом группы «Администраторы домена» в AD.

Настройка MongoDB с аутентификацией LDAP с использованием Centrify

Агент Centrify управляет всеми коммуникациями с Active Directory, а MongoDB может использовать модуль Centrify PAM для аутентификации пользователей LDAP.

1. Настройте saslauthd, который используется MongoDB в качестве интерфейса между базой данных и системой Linux PAM.

а. Убедитесь, что «MECH = pam» установлено в / etc / sysconfig / saslauthd:

$ grep ^MECH /etc/sysconfig/saslauthd
MECH=pam

б. Включите службу saslauthd и убедитесь, что она запускается после перезагрузки:

$ service saslauthd start
Starting saslauthd:                                     [  OK  ]
$ chkconfig saslauthd on
$ chkconfig --list saslauthd
saslauthd  0:off   1:off   2:on    3:on 4:on    5:on    6:off

2. Настройте PAM для распознавания службы mongodb, создав соответствующий файл службы PAM. Мы будем использовать служебный файл sshd в качестве шаблона, поскольку он уже должен быть предварительно настроен для работы с Centrify:

$ cp -v /etc/pam.d/{sshd,mongodb}
`/etc/pam.d/sshd' -> `/etc/pam.d/mongodb'

3. Запустите MongoDB с включенной аутентификацией LDAP, настроив файл конфигурации:

$ nano /etc/mongod.conf
auth=true
setParameter=saslauthdPath=/var/run/saslauthd/mux
setParameter=authenticationMechanisms=PLAIN
$ service mongod restart

4. Попробуйте аутентифицироваться как пользователь «alex» в MongoDB:

$ mongo
> db.getSiblingDB("$external").auth(
   {
     mechanism: "PLAIN",
     user: "alex",
     pwd:  "xxx",
     digestPassword: false
   }
)
1
>

Возвращение значения «1» означает, что аутентификация прошла успешно.

Настройка MongoDB с аутентификацией Kerberos с использованием Centrify

Агент Centrify автоматически обновляет конфигурацию системы Kerberos (файл /etc/krb5.conf), поэтому ручная настройка не требуется. Кроме того, Centrify предоставляет средства для создания пользователя службы Active Directory, имени участника службы и файла ключа непосредственно с сервера Linux, что упрощает автоматизацию.

1. Создайте пользователя «lin-client-svc» в Active Directory с SPN и UPN для сервера и экспортируйте его таблицу ключей в файл «mongod_lin.keytab»:

$ adkeytab -n -P mongodb/[email protected] -U mongodb/[email protected] -K /home/ec2-user/mongod_lin.keytab -c "OU=support" -V --user ldap_admin lin-client-svc
[email protected]'s password:
$ adquery user lin-client-svc -PS
userPrincipalName:mongodb/[email protected]
servicePrincipalName:mongodb/lin-client.mongotest.com

Опять же, «ldap_admin» — это пользователь, который является членом группы «Администраторы домена» в AD. «Поддержка» OU будет использоваться для создания пользователя службы «lin-client-svc».

2. Запустите MongoDB с включенной аутентификацией Kerberos, настроив файл конфигурации. Вы также должны убедиться, что mongod прослушивает интерфейс, связанный с полным доменным именем. Для этого упражнения вы можете просто настроить mongod для прослушивания на всех интерфейсах:

$ nano /etc/mongod.conf
# Listen to local interface only. Comment out to listen on all interfaces.
#bind_ip=127.0.0.1
auth=true
setParameter=authenticationMechanisms=GSSAPI
$ service mongod stop
$ env KRB5_KTNAME=/home/ec2-user/mongod_lin.keytab mongod -f /etc/mongod.conf

3. Попробуйте аутентифицироваться как пользователь «[email protected]» в MongoDB:

$ kinit [email protected]
Password for [email protected]:
$ mongo --host lin-client.mongotest.com
> db.getSiblingDB("$external").auth(
   {
     mechanism: "GSSAPI",
     user: "[email protected]",
   }
)
1
>

Возвращаемое значение «1» означает успех.

Резюме и дополнительная информация

MongoDB поддерживает различные варианты аутентификации, включая Kerberos и внешнюю аутентификацию LDAP. Благодаря интеграции MongoDB и Centrify теперь можно ускорить корпоративное развертывание MongoDB в существующей инфраструктуре безопасности и Active Directory и обеспечить быструю производительность в течение первого дня, не тратя дни и недели труда на инструменты с открытым исходным кодом.

О Центрифии

Centrify — ведущий поставщик унифицированных решений для управления идентификацией, которые обеспечивают единый вход для пользователей (SSO) и упрощенную инфраструктуру идентификации для ИТ. Программное обеспечение Centrify Server Suite интегрирует системы Linux в домены Active Directory, чтобы обеспечить централизованную аутентификацию, контроль доступа, управление привилегированными пользователями и аудит доступа для соответствия требованиям. За последние 10 лет более 5000 клиентов по всему миру, включая почти половину Fortune 50, развернули решения Centrify и доверяют им на миллионах серверов, рабочих станций и приложений и регулярно сокращают расходы на управление идентификацией и соответствие нормативным требованиям на 50 % или больше.

Видео уроки

Видео о том, как использовать Centrify для интеграции MongoDB с Active Directory:

Видео о том, как применять права доступа PAM в качестве дополнительного уровня безопасности для MongoDB с помощью Centrify:

Пост и видео Centrify Community, демонстрирующие интеграцию Active Directory для MongoDB: http://community.centrify.com/t5/Standard-Edition-DirectControl/MongoDB-AD-Integration-made-easy-with-Centrify/td-p/18779

Документация по безопасности MongoDB доступна здесь: http://docs.mongodb.org/manual/security/ Учебные руководства по управлению пользователями и ролями MongoDB: http://docs.mongodb.org/manual/administration/security-user-role-management/