Алекс Комягин из 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/