Docs Menu

getKeyVault()

getKeyVault()

Returns the KeyVault object for the current database connection. The KeyVault object supports data encryption key management for Client-side field level encryption.

次の値を返します。The KeyVault object for current database connection.

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

getKeyVault()の構文は次のとおりです。

keyVault = db.getMongo().getKeyVault();

Use the KeyVault object to access the following data encryption key management methods:

The following example uses a locally managed key for the client-side field level encryption configuration.

mongoクライアント側のフィールドレベル暗号化メソッドでは、クライアント側のフィールドレベル暗号化が有効になっているデータベース接続が必要です。 現在のデータベース接続がクライアント側のフィールド レベル暗号化を有効にして開始されなかった場合、次のいずれかが発生します。

The getKeyVault() method automatically creates a 一意なインデックス on the keyAltNames field with a partial index filter for only documents where keyAltNames exists. getKeyVault() creates this index in the key vault collection. This prevents any two data encryption keys in the same key vault from having the same key alternative name and therefore avoids ambiguity around which data encryption key is appropriate for encryption/decryption.

警告

Do not drop the unique index created by getKeyVault(). Client-side field level encryption operations depend on server-enforced uniqueness of keyAltNames. Removing the index may lead to unexpected or unpredictable behavior.

The following example uses a locally managed key for the client-side field level encryption configuration.

ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、改行を含まない base64 でエンコードされた 96 バイトのstringを指定する必要があります。 次の操作では、前述の要件を満たすキーを生成し、それをmongo shell にロードします。

TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb --shell --eval "var TEST_LOCAL_KEY='$TEST_LOCAL_KEY'"

生成されたローカルキーstringを使用して、クライアント側のフィールドレベル暗号化オブジェクトを作成します。

var ClientSideFieldLevelEncryptionOptions = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, TEST_LOCAL_KEY)
}
}
}

Mongo()コンストラクターを使用して、クライアント側のフィールドレベル暗号化オプションを持つデータベース接続を作成します。 mongodb://myMongo.example.net URI を、ターゲットクラスターの接続string URIに置き換えます。

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
ClientSideFieldLevelEncryptionOptions
)

Use the getKeyVault() method to retrieve the key vault object:

keyVault = encryptedClient.getKeyVault()

クライアント側のフィールドレベル暗号化を有効にして MongoDB 接続を開始する方法に関する詳細なドキュメントについては、 Mongo()を参照してください。