Настройка MongoDB для аутентификации пароля пользователя через Linux PAM

Я ищу способ настроить MongoDB для использования Linux PAM для управления паролями пользователей. Таким образом, когда пользователь меняет свой пароль, его не нужно обновлять вручную в MongoDB.

Поиск справки для этого в Интернете возвращает только один результат — блог статья, в которой упоминается, что это возможно, но не описывается, как это делается.

введите здесь описание изображения

Официальная документация пропускает настройку PAM и говорит о LDAP.

Как настроить Mongodb для аутентификации пользователей БД через Linux PAM?


person Gabriel Fair    schedule 08.02.2019    source источник


Ответы (1)


К сожалению, аутентификацию MongoDB с использованием PAM Linux можно настроить только в MongoDB Enterprise Edition.

Это связано с тем, что для аутентификации PAM требуется простой механизм аутентификации, доступный только в MongoDB Enterprise Edition, как указано в документация:

PLAIN (LDAP SASL) Внешняя аутентификация с использованием LDAP. Вы также можете использовать PLAIN для аутентификации пользователей в базе данных. PLAIN передает пароли в виде обычного текста. Этот механизм доступен только в MongoDB Enterprise.

Кстати, в MongoDB Enterprise Edition вы можете включить аутентификацию PAM, используя следующее (проверено на Debian Stretch):

Установить saslauthd

apt-get install sasl2-bin

vi /etc/default/saslauthd

START=yes

/etc/init.d/saslauthd restart

На этом шаге вы можете протестировать свою конфигурацию sasl с помощью ("myuser" — ваш пользователь unix):

testsaslauthd -u <myuser> -p <SecretPassword>

Это должно вывести сообщение об успехе:

0: OK "Success."

Создайте пользователя MongoDB «myuser»

Замените «myuser» на пользователя, с которым вы хотите пройти аутентификацию.

mongo admin

db.getSiblingDB("$external").createUser(
    {
      user : "myuser",
      roles: [ { role: "read", db: "mydb" } ]
    }
)

Настройте MongoDB для включения механизма аутентификации PLAIN.

vi /etc/mongod.conf

security:
  authorization: enabled

setParameter:
  authenticationMechanisms: PLAIN,MONGODB-X509,SCRAM-SHA-1,SCRAM-SHA-256

Вы должны добавить пользователя mongodb (Linux) в группу sasl (это гарантирует, что у MongoDB есть разрешение на доступ к saslauthd)

adduser mongodb sasl

Перезапустите монгод

systemctl restart mongod.service

Подключиться к МонгоДБ

Теперь в MongoDB Enterprise вы должны иметь возможность аутентифицироваться, используя свое имя пользователя/пароль linux:

mongo --authenticationMechanism=PLAIN --authenticationDatabase='$external' -u myuser mydb

MongoDB shell version v4.0.7
connecting to: mongodb://127.0.0.1:27017/mydb?authMechanism=PLAIN&authSource=%24external&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("********-****-****-****-************") }
MongoDB server version: 4.0.7
MongoDB Enterprise > 

В MongoDB Community Edition он, к сожалению, терпит неудачу с ошибкой «Неподдерживаемый механизм»:

MongoDB shell version v4.0.7
connecting to: mongodb://127.0.0.1:27017/mydb?authMechanism=PLAIN&authSource=%24external&gssapiServiceName=mongodb
2019-03-25T18:26:51.307+0100 E QUERY    [js] Error: Unsupported mechanism 'PLAIN' on authentication database '$external' :
connect@src/mongo/shell/mongo.js:343:13
@(connect):3:6
exception: connect failed
person Nicolas Payart    schedule 25.03.2019