On this page本页内容
Most regulatory requirements mandate that a managed key used to decrypt sensitive data must be rotated out and replaced with a new key once a year.
Disambiguation
To roll over database keys configured with AES256-GCM cipher afer a filesystem restore, see --eseDatabaseKeyRollover instead.
MongoDB provides two options for key rotation. You can rotate out the binary with a new instance that uses a new key. Or, if you are using a KMIP server for key management, you can rotate the master key.
For a replica set, to rotate out a member:
mongod instance, configured to use a new key. Include the --replSet option with the name of the replica set as well as any other options specific to your configuration, such as --dbpath and --bind_ip.
mongo shell to the replica set’s primary.Tip
When a newly added secondary has its votes and priority settings greater than zero, during its initial sync, the secondary still counts as a voting member even though it cannot serve reads nor become primary because its data is not yet consistent.
This can lead to a case where a majority of the voting members are online but no primary can be elected. To avoid such situations, consider adding the new secondary initially with priority :0 and votes :0. Then, once the member has transitioned into SECONDARY state, use rs.reconfig() to update its priority and votes.
During the initial sync process, the re-encryption of the data with an entirely new set of database keys as well as a new system key occurs.
SECONDARY state. To check the state of the replica set members, run rs.status():
rs.reconfig() to update the newly added secondary’s vote and priority settings. See Add a Secondary to an Existing Replica Set for details:
where n is the array index of the new member in the members array.
Warning
rs.reconfig() shell method can force the current primary to step down, which causes an election. When the primary steps down, the mongod closes all client connections. While this typically takes 10-20 seconds, try to make these changes during scheduled maintenance periods.If you are using a KMIP server for key management, you can rotate the master key, the only externally managed key. With the new master key, the internal keystore will be re-encrypted but the database keys will be otherwise left unchanged. This obviates the need to re-encrypt the entire data set.
--kmipRotateMasterKey option. Include any other options specific to your configuration, such as --bind_ip. If the member already includes the --kmipKeyIdentifier option, either update the --kmipKeyIdentifier option with the new key to use or omit to request a new key from the KMIP server:
If using a configuration file, include the security.kmip.rotateMasterKey.
mongod will exit.--kmipRotateMasterKey parameter. Include any other options specific to your configuration, such as --bind_ip.
If using a configuration file, remove the security.kmip.rotateMasterKey setting.
Connect a mongo shell to the primary and use rs.stepDown() to step down the primary and force an election of a new primary:
rs.status() shows that the primary has stepped down and another member has assumed PRIMARY state, rotate the master key for the stepped down member:
--kmipRotateMasterKey option. Include any other options specific to your configuration, such as --bind_ip. If the member already includes the --kmipKeyIdentifier option, either update the --kmipKeyIdentifier option with the new key to use or omit.
If using a configuration file, include the security.kmip.rotateMasterKey.
mongod will exit.--kmipRotateMasterKey option. Include any other options specific to your configuration, such as --bind_ip.
If using a configuration file, remove the security.kmip.rotateMasterKey setting.