Настройка MongoDB для аутентификации пароля пользователя через Linux PAM - PullRequest
0 голосов
/ 09 февраля 2019

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

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

enter image description here

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

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

1 Ответ

0 голосов
/ 25 марта 2019

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

Это связано с тем, что для аутентификации PAM требуется механизм аутентификации PLAIN, доступный только в 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."

Создать MongoDBuser "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

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

adduser mongodb sasl

Перезапустить mongod

systemctl restart mongod.service

Подключиться к MongoDB

Теперь, на MongoDB ПредприятиеТо есть, вы должны иметь возможность проходить аутентификацию, используя ваше имя пользователя linux / pwd:

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
...