KeyVault.createKey()
KeyVault.createKey(keyManagementService, customerMasterKey, ["keyAltName"])
データベース接続に関連付けられたキーヴォールトにデータ暗号化キーを追加します。 クライアント側フィールドレベル暗号化は、フィールド値の暗号化と復号化をサポートするためにデータ暗号化キーを使用します。
createKey()
の構文は次のとおりです。keyVault = db.getMongo().getKeyVault() keyVault.createKey( keyManagementService, customerMasterKey, [ "keyAltName" ] ) Parameterタイプ説明keyManagementService
string必須
CMK(Customer Master Key)の取得に使用するKMS ( KMS )。 次のパラメータを受け入れます。
aws
Amazon Web Services KMSの。customerMasterKey
の CMK(Customer Master Key) stringを指定する必要があります。azure
Azure Key Vault用の。customerMasterKey
の CMK(Customer Master Key)ドキュメントを指定する必要があります。バージョン 5.0 で追加
gcp
Google Cloud Platform KMS用。customerMasterKey
の CMK(Customer Master Key)ドキュメントを指定する必要があります。バージョン 5.0 で追加
local
ローカルで管理されているキーの場合
database connection
が指定された KMS で構成されていない場合、データ暗号化キーの作成は失敗します。customerMasterKey
文字列またはドキュメントデータ暗号化キーの暗号化に使用する CMK(Customer Master Key)。
keyManagementService
がaws
、azure
、またはgcp
の場合に必須です。KMS プロバイダーに応じて、次のように CMK を指定します。
Amazon Web Services KMS の場合は、完全な Amazon リソース名(ARN) を指定します マスター キーの を単一の string として表示します。
Azure Key Vault KMS の場合は、次のキーと値のペアを含むドキュメントを指定します。
keyName
- Azure Key Vault 名keyVaultEndpoint
- 使用する Azure Key Vault の DNS 名keyVersion
- 任意。keyName
で指定されたキーのバージョン(該当する場合)
バージョン 5.0 で追加
Google Cloud Platform KMSの場合は、次のキーと値のペアを含むドキュメントを指定します。
projectId
- GCP プロジェクト名location
- KMS キーの場所keyRing
- KMS キーリングの名前(多くの場合「グローバル」)keyName
- 使用するキーの名前keyVersion
- 任意。keyName
で指定されたキーのバージョン(該当する場合)
バージョン 5.0 で追加
createKey()
は、指定されたKMSを使用してデータ暗号化キーマテリアルを暗号化することを要求します。 CMK が存在しない場合、またはAutoEncryptionOpts
構成に CMK を使用するための十分な特権がない場合、createKey()
はエラーを返します。このパラメータは、
keyManagementService
がlocal
である場合は効果がなく、省略しても問題ありません。keyAltName
文字列の配列任意
データ暗号化キーの別名。 特定のデータ暗号化キーを見つけやすくするには、またはコメントに類似するものとして
keyAltName
を使用します。メソッドは、
getKeyVault()
が存在するドキュメントのみを対象とする 部分インデックスkeyAltNames
フィルターを使用して、 フィールドに 一意のインデックスkeyAltNames
を自動的に作成します。options
ドキュメント任意
新しいキーのオプションを指定するドキュメント。
options
には次のフィールドがあります:masterKey
: データを暗号化するための新しいマスター キー。keyAltNames
: マスターキーごとに 1 つの代替名の配列。keyMaterial
: キーを作成するために使用されるバインデータ。
次の値を返します。 作成されたデータ暗号化キーの UUID
一意の識別子。
動作
データベース接続にクライアント側のフィールドレベル暗号化を構成する必要があります
mongosh
クライアント側のフィールド レベル暗号化メソッドでは、クライアント側のフィールド レベル暗号化が有効になっているデータベース接続が必要です。現在のデータベース接続がクライアント側のフィールド レベル暗号化を有効にして開始されなかった場合、次のいずれかが発生します。
Mongo()
必要なクライアント側のフィールドレベル暗号化オプションとの接続を確立するには、mongosh
から コンストラクターを使用します。Mongo()
メソッドは、CMK(Customer Master Key)管理のために次のKMS ( KMS )プロバイダーをサポートしています。or
必要なオプションとの接続を確立するには、
mongosh
コマンドライン オプションを使用します。 コマンドライン オプションは、CMK 管理用のAmazon Web Services KMSプロバイダーのみをサポートしています。
例
次の例は、クライアント側のフィールドレベル暗号化の迅速な評価を目的としています。 サポートされている各KeyVault.createKey()
KMS プロバイダーで を使用する具体的な例については、「 データキーの作成 」を参照してください。
ローカルで管理されているキーに対してクライアント側のフィールドレベル暗号化を構成するには、次の手順に従います。
基本的な64でエンコードされた96バイトの string を生成し、改行を含まない
キーを読み込むには、
mongosh
を使用します。
export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')") mongosh --nodb
生成されたローカルキーstringを使用して、クライアント側のフィールドレベル暗号化オブジェクトを作成します。
var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, process.env["TEST_LOCAL_KEY"]) } } }
データベース接続を作成するには、クライアント側のフィールドレベル暗号化オプションが構成されたMongo()
コンストラクターを使用します。 mongodb://myMongo.example.net
URI を、ターゲットクラスターの接続string URIに置き換えます。
encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
keyVault
オブジェクトを取得し、 KeyVault.createKey()
メソッドを使用して、ローカルで管理されているキーを使用して新しいデータ暗号化キーを作成します。
keyVault = encryptedClient.getKeyVault() keyVault.createKey("local", ["data-encryption-key"])
成功した場合、 createKey()
は新しいデータ暗号化キーのUUID
を返します。 新しいデータ暗号化キー ドキュメントをキーヴォールトから検索するには、次のいずれかを実行します。
getKey()
を使用して、UUID
によって作成されたキーを取得します。または
別名でキーを検索するには、
getKeyByAltName()
を使用します。