- Security >
- Authentication >
- Enterprise Authentication Mechanisms >
- Kerberos Authentication >
- Configure MongoDB with Kerberos Authentication on Windows
Configure MongoDB with Kerberos Authentication on Windows¶
On this page
New in version 2.6.
Overview¶
MongoDB Enterprise supports authentication using a Kerberos service. Kerberos is an industry standard authentication protocol for large client/server system. Kerberos allows MongoDB and applications to take advantage of existing authentication infrastructure and processes.
Prerequisites¶
Setting up and configuring a Kerberos deployment is beyond the scope of
this document. This tutorial assumes have configured a Kerberos
service principal for each
mongod.exe and mongos.exe instance.
For replica sets and sharded clusters, ensure that your configuration uses fully qualified domain names (FQDN) rather than IP addresses or unqualified hostnames. You must use the FQDN for GSSAPI to correctly resolve the Kerberos realms and allow you to connect.
Procedures¶
Start mongod.exe without Kerberos.¶
For the initial addition of Kerberos users, start mongod.exe
without Kerberos support.
If a Kerberos user is already in MongoDB and has the
privileges required to create a user, you can start
mongod.exe with Kerberos support.
Connect to mongod.¶
Connect via the mongo.exe shell to the mongod.exe
instance. If mongod.exe has --auth enabled, ensure
you connect with the privileges required to create a user.
Add Kerberos Principal(s) to MongoDB.¶
Add a Kerberos principal, <username>@<KERBEROS REALM>, to
MongoDB in the $external database. Specify the Kerberos realm in
ALL UPPERCASE. The $external database allows
mongod.exe to consult an external source (e.g. Kerberos)
to authenticate. To specify the user’s privileges, assign
roles to the user.
The following example adds the Kerberos principal
reportingapp@EXAMPLE.NET with read-only access to the
records database:
Add additional principals as needed. For every user you want to authenticate using Kerberos, you must create a corresponding user in MongoDB. For more information about creating and managing users, see User Management Commands.
Start mongod.exe with Kerberos support.¶
You must start mongod.exe as the service principal
account.
To start mongod.exe with Kerberos support, set
the mongod.exe parameter
authenticationMechanisms to GSSAPI:
For example, the following starts a standalone mongod.exe
instance with Kerberos support:
Modify or include additional
mongod.exe options as required for your configuration.
Connect mongo.exe shell to mongod.exe and authenticate.¶
Connect the mongo.exe shell client as the Kerberos
principal application@EXAMPLE.NET.
You can connect and authenticate from the command line.
Using cmd.exe:
Using Windows PowerShell:
If you are connecting to a system whose hostname matches the
Kerberos name, ensure that you specify the fully qualified
domain name (FQDN) for the --host
option, rather than an IP address or unqualified hostname.
If you are connecting to a system whose hostname does not
match the Kerberos name, use --gssapiHostName
to specify the Kerberos FQDN that it responds to.
Alternatively, you can first connect mongo.exe to the
mongod.exe, and then from the mongo.exe shell, use
the db.auth() method to authenticate in the
$external database.
Additional Considerations¶
Configure mongos.exe for Kerberos¶
To start mongos.exe with Kerberos support, set the
mongos.exe parameter authenticationMechanisms
to GSSAPI. You must start mongos.exe as the
service principal account.:
For example, the following starts a mongos instance with
Kerberos support:
Modify or include any additional mongos.exe options as required
for your configuration. For example, instead of using
--keyFile for internal authentication of sharded cluster
members, you can use x.509 member authentication instead.
Assign Service Principal Name to MongoDB Windows Service¶
Use setspn.exe to assign the service principal name (SPN) to the
account running the mongod.exe and the mongos.exe service:
For example, if mongod.exe runs as a service named
mongodb on testserver.mongodb.com with the service account name
mongodtest, assign the SPN as follows:
Incorporate Additional Authentication Mechanisms¶
Kerberos authentication (GSSAPI (Kerberos)) can work alongside MongoDB’s challenge/response authentication mechanisms (SCRAM-SHA-1 and MONGODB-CR), MongoDB’s authentication mechanism for LDAP (PLAIN (LDAP SASL)), and MongoDB’s authentication mechanism for x.509 ( MONGODB-X509). Specify the mechanisms as follows:
Only add the other mechanisms if in use. This parameter setting does not affect MongoDB’s internal authentication of cluster members.