暗号化キー管理
このガイドでは、Queryable Encryption 有効アプリケーションでキー管理システム( KMS )を使用して暗号化のキーを管理する方法を学習できます。
暗号化コンポーネント
MongoDB は、Queryable Encryption を実行するために次のコンポーネントを使用します。
データ暗号化キー( DEK )s
カスタマー マスター キー( CMK )
キーヴォールト コレクション
キー管理システム( KMS )
キーとキー ボールトの詳細については、 キーとキー Vault を参照してください。
mongosh を使用した暗号化キーのローテーション
KeyVault.rewrapManyDataKey()
メソッドを使用して暗号化のキーをローテーションできます。 rewrapManyDataKey
メソッドは複数のデータキーを自動的に復号化し、指定された CMK を使用して再暗号化します。 次に、キーヴォールトコレクション内のローテーションされたキーをアップデートします。 この方法では、2 つのオプションの引数に基づいて暗号化のキーをローテーションできます。
ローテーションするキーを指定するために使用されるクエリフィルター ドキュメント。 指定されたフィルターに一致するデータキーがない場合、キーはローテーションされません。 フィルターを省略すると、キーヴォールト コレクション内のすべてのキーがローテーションされます。
新しいCMKを表すオブジェクト。 現在の CMK を使用してデータキーをローテーションするには、このオブジェクトを省略します。
rewrapManyDataKey
メソッドの構文は次のとおりです。
let keyVault = db.getMongo().getKeyVault() keyVault.rewrapManyDataKey( { "<Your custom filter>" }, { provider: "<KMS provider>", masterKey: { "<dataKeyOpts Key>" : "<dataKeyOpts Value>" } } )
サポートされているキー管理サービス
Queryable Encryption は、次のキー管理システム プロバイダーをサポートしています。
Amazon Web Services KMS
Azure Key Vault
Google Cloud KMS
任意の KMIP 準拠キー管理システム
ローカル キー プロバイダー(テスト専用)
アプリケーションが KMS プロバイダーを使用して Queryable Encryption を実行する方法を示す図など、これらのプロバイダーの詳細については、「 KMS プロバイダー 」を参照してください。
リモート KMS を使用する理由
リモート キー管理システムを使用してカスタマー マスター キーを管理する方法には、ローカル ファイルシステムを使用してCMKをホストする場合よりも次の利点があります。
アクセス監査を使用してキーを安全にストレージ
アクセス権限の問題のリスク軽減
リモート クライアントへのキーの可用性と配布
キーのバックアップと復元の自動化
一元化された暗号化キーのライフサイクル管理
さらに、次のKMSプロバイダーの場合、 KMSはデータ暗号化キーをリモートで暗号化および復号化し、カスタマー マスター キーが Queryable Encryption 対応アプリケーションに公開されないようにします。
Amazon Web Services KMS
Azure Key Vault
Google Cloud KMS
詳細
サポートされているKMSプロバイダーのそれぞれを使用して、Queryable Encryption 対応のアプリケーションを設定する方法の詳細なチュートリアルについては、次のページを参照してください。