Setting up Kerberos authentication¶
This document provides configuration steps for setting up Kerberos Authentication in Percona Server for MongoDB.
Assumptions¶
The setup of the Kerberos server itself is not included in this document. Please refer to the Kerberos documentation for the installation and configuration steps relevant to your operating system.
We assume that you have successfully completed the following steps:
-
Installed and configured the Kerberos server
-
Added necessary realms
-
Added service, admin, and user principals
-
Configured the
AandPTRDNS records for every host runningmongodinstance to resolve the hostnames onto Kerberos realm.
Add user principals to Percona Server for MongoDB¶
To authenticate, users must exist in the Kerberos and Percona Server for MongoDB servers. Their usernames must match exactly.
After you have defined the user principals in the Kerberos server, add them to the $external database in Percona Server for MongoDB and assign required roles:
> use $external
> db.createUser({user: "[email protected]",roles: [{role: "read", db: "admin"}]})
Replace [email protected] with your username and Kerberos realm.
Configure Kerberos keytab files¶
A keytab file stores the authentication keys for a service principal representing a mongod instance to access the Kerberos admin server.
After you have added the service principal to the Kerberos admin server, the entry for this principal is added to the /etc/krb5.keytab file.
To authenticate, the mongod server must have access to the keytab file. To keep the keytab file secure, restrict access to it only to the user running the mongod process.
-
Stop the
mongodservice$ sudo systemctl stop mongod -
Generate the keytab file or get a copy of it if you generated the
keytabfile on another host. Save the key file under a separate path (e.g./etc/mongodb.keytab)$ cp /etc/krb5.keytab /etc/mongodb.keytab -
Change the ownership to the
keytabfile. The user name and group name depend on how you installed Percona Server for MongoDB:$ sudo chown mongod:mongod /etc/mongodb.keytab$ sudo chown mongodb:mongodb /etc/mongodb.keytab -
Set the
KRB5_KTNAMEvariable in the environment file for themongodprocess.Edit the environment file at the path
/etc/default/mongodand specify theKRB5_KTNAMEvariable:KRB5_KTNAME=/etc/mongodb.keytabIf you have a different path to the keytab file, specify it accordingly.
Edit the environment file at the path
/etc/sysconfig/mongodand specify theKRB5_KTNAMEvariable:KRB5_KTNAME=/etc/mongodb.keytabIf you have a different path to the keytab file, specify it accordingly.
-
Restart the
mongodservice$ sudo systemctl start mongod