CSFLE によるドキュメントの復号化
このページでは、CSFLE がデータ暗号化キーとカスタマー マスター キーのメタデータを使用してデータを復号化する方法について説明します。
復号に使用されるメタデータ
CSFLE を使用してデータを暗号化すると、暗号化されたデータは、次のメタデータを含む BinData
サブタイプ6オブジェクトとして保存されます。
データの暗号化に使用されるデータ暗号化キーの
_id
データの暗号化に使用される暗号化アルゴリズム
データ暗号化キーには、暗号化に使用されたカスタマー マスター キーを記述するメタデータが含まれています。
ドライバーと mongosh
はこのメタデータを使用して、データの自動復号を試行します。
自動復号化プロセス
データを自動的に復号化するには、CSFLE 対応クライアントは次の手順を実行します。
値の暗号化に使用されるデータ暗号化キーと暗号化アルゴリズムについて、復号化するフィールドの
BinData
lob メタデータを確認します。指定されたデータ暗号化キーについて、現在のデータベース接続で構成されているキーヴォールト コレクションを確認します。 Key Vault コレクションに指定されたキーが含まれていない場合、自動復号は失敗し、ドライバーはエラーを返します。
キーマテリアルの暗号化に使用される CMK(Customer Master Key)の データ暗号化キー メタデータを確認します。
データ暗号化キーを復号化します。 このプロセスは KMS プロバイダーによって異なります。
Amazon Web Services ( Amazon Web Services ) KMSの場合は、復号化のためにAmazon Web Services KMSインスタンスに データ暗号化キー を送信します。 CMK が存在しない場合、または接続構成で CMK へのアクセスが許可されていない場合、復号は失敗し、ドライバーは暗号化された
BinData
BLOB を返します。Tip
Amazon Web Services KMSを使用して自動暗号化を実行する方法については、「 Amazon Web Services でのAmazon Web Servicesクライアント側フィールドレベル暗号化の使用 」を参照してください。
Google Cloud Platform(GCP)KMS の場合は、復号化のために GCP KMS インスタンスに データ暗号化キーを送信します 。 CMK が存在しない場合、または接続構成で CMK へのアクセスが許可されていない場合、復号は失敗し、ドライバーは暗号化された
BinData
BLOB を返します。Tip
Google Cloud Platform KMS を使用して自動暗号化を行う方法については、「 GCP で自動クライアント側フィールドレベル暗号化を使用 」を参照してください。
Azure Key Vault の場合は、復号化のために Azure Key Vault インスタンスに データ暗号化キー を送信します。 CMK が存在しない場合、または接続構成で CMK へのアクセスが許可されていない場合、復号は失敗し、ドライバーは暗号化された
BinData
BLOB を返します。Tip
Azure Key Vault を使用して自動暗号化を行う方法については、「 Azure で自動クライアント側フィールド レベル暗号化を使用する 」を参照してください。
KMIP 準拠の KMS の場合は、KMS から CMK を取得し、その CMK をローカルに使用してデータ暗号化キーを復号化します。 CMK が存在しない場合、または接続構成で CMK へのアクセスが許可されていない場合、復号は失敗し、ドライバーは暗号化された
BinData
BLOB を返します。Tip
KMIP 準拠の KMS を使用して自動暗号化を行う方法については、「 KMIP を使用した自動クライアント側フィールド レベル暗号化の使用 」を参照してください。
ローカル キー プロバイダーの場合は、ファイルシステムから CMK を取得し、それを使用してデータ暗号化キーを復号化します。 データベース構成で指定されたローカルキーが データ暗号化キー の暗号化に使用されなかった場合、復号は失敗し、ドライバーは暗号化された
BinData
BLOB を返します。復号化されたデータ暗号化キーと適切なアルゴリズムを使用して、
BinData
値を復号化します。
MongoDB サーバーにアクセスでき、必要な CMK とデータ暗号化キーにもアクセスできないアプリケーションは、 BinData
値を復号化できません。
自動暗号化された読み取り動作
読み取り操作では、ドライバーは読み取り操作を発行する前に、暗号化スキーマを使用してクエリ ドキュメント内のフィールド値を暗号化します。
その後、クライアント アプリケーションはBinData
メタデータを使用して、MongoDB から受信したドキュメントを自動的に復号化します。
暗号化スキーマの詳細については、「暗号化スキーマ 」を参照してください。
詳細
クライアント側のフィールドレベル暗号化のためのデータベース接続の構成方法については、「 CSFLE 用の MongoClient オプション 」を参照してください。
データ暗号化キーとカスタマー マスター キーの関係の詳細については、「暗号化キーとキーヴォールト 」を参照してください。