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