К сожалению, аутентификацию 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