KeyVault.removeKeyAlternateName()
KeyVault.
removeKeyAlternateName
(UUID, keyAltName)- Removes the specified
keyAltName
from the data key with the specifiedUUID
. The data key must exist in the key vault associated to the databaseconnection.
removeKeyAlternateName()
has the following syntax:
- keyVault = db.getMongo().getKeyVault()
- keyVault.removeKeyAlternateName(
- UUID("<UUID string>"),
- "keyAltName"
- )
returns: | The data key prior to updating the keyAltName .Returns null if no data key has the specified UUID() . |
---|
Behavior
Requires Configuring Client-Side Field Level Encryption on Database Connection
The mongo
client-side field level encrytion methodsrequire a database connection with client-side field level encryptionenabled. If the current database connection was not initiated withclient-side field level encryption enabled, either:
- Use the
Mongo()
constructor from themongo
shell to establish a connection with the required client-side fieldlevel encryption options. TheMongo()
method supports bothAmazon Web Services and Local Key Management Service (KMS) providersfor Customer Master Key (CMK) management.
or
- Use the
mongo
shell command line options to establish aconnection with the required options. The command line options onlysupport the AWS KMS provider for CMK management.
Example
The following example is intended for rapid evaluation ofclient-side field level encryption. For more complete examplesappropriate for development and production environments, seeManage a data encryption key’s alternate name.
Configuring client-side field level encryption for a locallymanaged key requires specifying a base64-encoded 96-bytestring with no line breaks. The following operation generatesa key that meets the stated requirements and loads it intothe mongo
shell:
- TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
- mongo --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"
Create the client-side field level encryption object using thegenerated local key string:
- var ClientSideFieldLevelEncryptionOptions = {
- "keyVaultNamespace" : "encryption.__dataKeys",
- "kmsProviders" : {
- "local" : {
- "key" : BinData(0, TEST_LOCAL_KEY)
- }
- }
- }
Use the Mongo()
constructor to create a database connectionwith the client-side field level encryption options. Replace themongodb://myMongo.example.net
URI with the connection stringURI of the target cluster.
- encryptedClient = Mongo(
- "mongodb://myMongo.example.net:27017/?replSetName=myMongo",
- ClientSideFieldLevelEncryptionOptions
- )
Retrieve the keyVault
object anduse the KeyVault.removeKeyAlternateName()
method to removethe specified key alternate name from the data key with matchingUUID
:
- keyVault = encryptedClient.getKeyVault()
- keyVault.removeKeyAlternateName(UUID("b4b41b33-5c97-412e-a02b-743498346079"),"Other-Data-Encryption-Key")
If successful, removeKeyAlternateName()
returns thedata key prior to updating the keyAltName
.
- {
- "_id" : UUID("b4b41b33-5c97-412e-a02b-743498346079"),
- "keyMaterial" : BinData(0,"PXRsLOAYxhzTS/mFQAI8486da7BwZgqA91UI7NKz/T/AjB0uJZxTvhvmQQsKbCJYsWVS/cp5Rqy/FUX2zZwxJOJmI3rosPhzV0OI5y1cuXhAlLWlj03CnTcOSRzE/YIrsCjMB0/NyiZ7MRWUYzLAEQnE30d947XCiiHIb8a0kt2SD0so8vZvSuP2n0Vtz4NYqnzF0CkhZSWFa2e2yA=="),
- "creationDate" : ISODate("2019-08-12T21:21:30.569Z"),
- "updateDate" : ISODate("2019-08-12T21:21:30.569Z"),
- "status" : 0,
- "version" : NumberLong(0),
- "masterKey" : {
- "provider" : "local"
- },
- "keyAltNames" : [
- "ssn-encryption-key"
- ]
- }