Skip to content

Using the Key Management Interoperability Protocol (KMIP)

Percona Server for MongoDB adds support for the secure transfer of keys using the OASIS Key Management Interoperability Protocol (KMIP). The KMIP implementation was tested with the PyKMIP server and the HashiCorp Vault Enterprise KMIP Secrets Engine.

KMIP enables the communication between a key management system and the database server. KMIP provides the following benefits:

  • Streamlines encryption key management

  • Eliminates redundant key management processes

You can specify multiple KMIP servers for failover. On startup, Percona Server for MongoDB connects to the servers in the order listed and selects the one with which the connection is successful.

KMIP parameters






The hostname or IP address of the KMIP server. Multiple KMIP servers are supported as the comma-separated list, e.g.,



The port used to communicate with the KMIP server. When undefined, the default port 5696 will be used.



The path to the TLS certificate file. CA file is used to validate secure client connection to the KMIP server.



The path to the PEM file with the KMIP client private key and the certificate chain. The database server uses this PEM file to authenticate the KMIP server.



The identifier of the KMIP key. If the key does not exist, the database server creates a key on the KMIP server with the specified identifier. When you specify the identifier, the key with such an ID must exist on the key storage. You can only use this setting for the first time you enable encryption.



Controls master keys rotation. When enabled, generates the new master key version and re-encrypts the keystore. Requires the unique --kmipKeyIdentifier for every mongod node.



The password for the KMIP client private key or certificate. Use this parameter only if the KMIP client private key or certificate is encrypted.

Key rotation

Percona Server for MongoDB supports the master key rotation to enable users to comply with data security regulations when using KMIP.



Make sure you have obtained the root certificate, and the keypair for the KMIP server and the mongod client. For testing purposes you can use the OpenSSL to issue self-signed certificates. For production use we recommend you use the valid certificates issued by the key management appliance.

To enable data-at-rest encryption in Percona Server for MongoDB using KMIP, edit the /etc/mongod.conf configuration file as follows:

  enableEncryption: true
    serverName: <kmip_server_name>
    port: <kmip_port>
    clientCertificateFile: </path/client_certificate.pem>
    clientKeyFile: </path/client_key.pem>
    serverCAFile: </path/ca.pem>
    keyIdentifier: <key_name>

Alternatively, you can start Percona Server for MongoDB using the command line as follows:

$ mongod --enableEncryption \
  --kmipServerName <kmip_servername> \
  --kmipPort <kmip_port> \
  --kmipServerCAFile <path_to_ca_file> \
  --kmipClientCertificateFile <path_to_client_certificate> \
  --kmipClientKeyFile <path_to_client_private_key> \
  --kmipKeyIdentifier <kmip_identifier>