Encryption at Rest
Encryption at rest, when used in conjunction with transport encryption and good security policies that protect relevant accounts, passwords, and encryption keys, can help ensure compliance with security and privacy standards, including HIPAA, PCI-DSS, and FERPA.
New in version 3.2.
Available in MongoDB Enterprise only.
Available for the WiredTiger Storage Engine only.
MongoDB Enterprise 3.2 introduces a native encryption option for the WiredTiger storage engine. This feature allows MongoDB to encrypt data files such that only parties with the decryption key can decode and read the data.
If encryption is enabled, the default encryption mode that MongoDB Enterprise uses is the
AES256-CBC (or 256-bit Advanced Encryption Standard in Cipher Block Chaining mode) via OpenSSL. AES-256 uses a symmetric key; i.e. the same key to encrypt and decrypt text. MongoDB Enterprise also supports authenticated encryption
AES256-GCM (or 256-bit Advanced Encryption Standard in Galois/Counter Mode). FIPS mode encryption is also available.
If you use
AES256-GCM authenticated encryption, do not make copies of your data files.
AES256-GCM requires that every process use a unique counter block value with the key. If you use copied
AES256-GCM encrypted data files to start a second
mongod instance, the
mongod instances may use the duplicate counter block values, voiding confidentiality and integrity guarantees.
The data encryption process includes:
- Generating a master key.
- Generating keys for each database.
- Encrypting data with the database keys.
- Encrypting the database keys with the master key.
The encryption occurs transparently in the storage layer; i.e. all data files are fully encrypted from a filesystem perspective, and data only exists in an unencrypted state in memory and during transmission.
Secure management of the encryption keys is critical.
The database keys are internal to the server and are only paged to disk in an encrypted format. MongoDB never pages the master key to disk under any circumstances.
Only the master key is external to the server (i.e. kept separate from the data and the database keys), and requires external management. To manage the master key, MongoDB’s encrypted storage engine supports two key management options:
- Integration with a third party key management appliance via the Key Management Interoperability Protocol (KMIP). Recommended
- Local key management via a keyfile.
To configure MongoDB for encryption and use one of the two key management options, see Configure Encryption.
Encryption is not a part of replication:
- Master keys and database keys are not replicated, and
- Data is not natively encrypted over the wire.
Although you could reuse the same key for the nodes, MongoDB recommends the use of individual keys for each node as well as the use of transport encryption.
For details, see Rotate Encryption Keys.
New in version 3.4: Available in MongoDB Enterprise only
The log file is not encrypted as a part of MongoDB’s encrypted storage engine. A
mongod running with logging may output potentially sensitive information to log files as a part of normal operations, depending on the configured log verbosity.
MongoDB 3.4 Enterprise provides the
security.redactClientLogData setting to prevent potentially sensitive information from entering the
mongod process log.
redactClientLogData reduces detail in the log and may complicate log diagnostics.
See the log redaction manual entry for more information.
Application Level Encryption provides encryption on a per-field or per-document basis within the application layer. To encrypt document or field level data, write custom encryption and decryption routines or use a commercial solution.
For a list of MongoDB’s certified partners, refer to the Partners List . To view security partners, select “Security” from the Technology filter, and “Certified” from the Certified filter.