このチュートリアルでは、MongoDB Queryable Encryption 機能を実装し、ドキュメントフィールドを自動的に暗号化および復号化するアプリケーションを構築する方法を説明します。
チュートリアルには、次のセクションが含まれています。
プロジェクトの設定: ドライバーと暗号化の依存関係をインストールし、環境変数を構成し、必要なアプリケーション変数を使用してプロジェクト ファイルを作成します。
暗号化の設定: カスタマー マスター キー( CMK )を作成し、KMS プロバイダーと自動暗号化設定を構成して、暗号化対応のクライアントとコレクションを作成します。
暗号化された操作の実行: 暗号化されたフィールドを含むドキュメントを挿入し、暗号化されたフィールドでクエリを実行し、アプリケーションを実行して復号化された結果を表示します。
ドキュメント フィールドを自動的に暗号化および復号化するアプリケーションを作成する方法については、ドロップダウン メニューでドライバー言語を選択してください。
重要
このサンプル アプリケーションは本番環境では使用しないでください
このチュートリアルの手順では、暗号化のキーを安全でない環境に保存することが含まれているため、本番環境ではこのアプリケーションの変更されていないバージョンを使用しないでください。 このアプリケーションを本番環境で使用すると、暗号化のキーへの不正アクセスや、データの復号に必要なキーが失われるリスクがあります。 このチュートリアルの目的は、キー管理システムを設定する必要なく、Queryable Encryption を使用する方法を説明することです。
キー管理システムを使用して、暗号化のキーを本番環境に安全に保存できます。 KMSは、暗号化のキーを安全に保存および管理するリモート サービスです。 KMSを使用する Queryable Encryption 対応アプリケーションを設定する方法については、「 Queryable Encryption チュートリアル 」を参照してください。
始める前に
このチュートリアルを開始する前に、次の前提条件ステップを完了してください。
MongoDBダウンロード センター から自動暗号化共有ライブラリをダウンロードします。MongoDB Enterprise Server Download セクションに移動し、次のオプションを選択します。
Version ドロップダウンで、
"current"とマークされたバージョンを選択します。[ Platform ] ドロップダウンで、プラットフォームを選択します。
Package のドロップダウンで、[
crypt_shared] を選択します。
アーカイブを展開し、共有ライブラリ ファイルへのパスを今後の使用のために保存します。
注意
クエリ分析コンポーネント
自動暗号化共有ライブラリは
mongocryptdの推奨代替であり、自動暗号化を実行するために新しいプロセスを生成する必要はありません。このチュートリアルでは、自動暗号化共有ライブラリを使用します。MongoDB Atlasクラスターまたはローカルレプリカセットの配置を構成し、将来使用するために接続文字列を保存します。詳しくは、「 使い始める 」チュートリアルを参照してください。
注意
MongoDB Community Edition は、自動暗号化による Queryable Encryption をサポートしていません。
データベースユーザーに、次の名前空間に対する
dbAdminパーミッションがあることを確認します。encryption.__keyVaultmedicalRecordsdatabase
完全なアプリケーション コード
手順
このチュートリアルでは、patients コレクションの ssn フィールドと billing フィールドを自動的に暗号化および復号化するアプリケーションを作成しました。アプリケーションは暗号化されたクライアントを使用するため、クエリは復号化されたフィールド値を返します。暗号化のキーが設定されていないクライアントでは、これらのフィールドの暗号化された値が表示されます。
詳細
リモート KMS を使用した本番環境のQueryable Encryptionに関するチュートリアルについては、 Queryable Encryptionチュートリアル を参照してください。
Queryable Encryptionの仕組みについては、 Queryable Encryption の基礎 を参照してください。
このガイドで言及されているトピックについて詳しくは、次のリンクを参照してください。
Queryable Encryption コンポーネントの詳細については、リファレンスページを参照してください。
カスタマー マスター キーとデータ暗号化キーの仕組みについては、「暗号化キーとキーヴォールト」ページを参照してください。
KMS プロバイダーが Queryable Encryption キーを管理する方法については、 KMS プロバイダーのページで確認してください。