保管時の暗号化
保管時の暗号化を、関連するアカウント、パスワード、暗号化キーを保護するトランスポート暗号化およびセキュリティ ポリシーと組み合わせて使用すると、HIPAA、PCI-DSS、FERPA などのセキュリティとプライバシーの基準へのコンプライアンスを確保するのに役立ちます。
暗号化されたストレージ エンジン
バージョン 3.2 で追加。
注意
エンタープライズ機能
MongoDB Enterprise でのみ使用できます。
重要
WiredTiger ストレージ エンジンでのみ使用できます。
MongoDB Enterprise 3.2 では、WiredTiger ストレージエンジンのネイティブ暗号化オプションが導入されています。この機能により、MongoDB はデータファイルを暗号化し、復号キーを持つ者だけがデータを復号して読めるようにすることができます。
暗号化プロセス
注意
Windows 上の MongoDB Enterprise では、保管時の暗号化のブロック暗号として AES256-GCM
をサポートしなくなりました。この使用は、Linux でのみサポートされています。
暗号化が有効になっている場合、MongoDB Enterprise が使用するデフォルトの暗号化モードは、OpenSSL 経由の AES256-CBC
(または暗号ブロックモードの 256 ビット AES(Advanced Encryption Standard))です。AES-256 は対称キーで、テキストの暗号化と復号化で同じキーを使用します。MongoDB Enterprise for Linux は、認証された暗号化 AES256-GCM
(または Galois/Counter モードの 256 ビット Advanced Encryption Standard)もサポートしています。
暗号化ストレージエンジンは、基礎のオペレーティングシステムの認定暗号プロバイダーを使用して暗号化操作を実行します。たとえば、Linux オペレーティングシステム上に MongoDB をインストールしている場合は、OpenSSL libcrypto
FIPS-140 モジュールが使用されます。
MongoDB を FIPS 準拠モードで実行するには、次のようにします。
オペレーティングシステムを FIPS 強制モードで実行するように構成します。
net.tls.FIPSMode
設定を有効にするように MongoDB を構成します。mongod
またはmongos
を再起動します。サーバーのログファイルをチェックして、FIPS モードが有効になっていることを確認します。FIPS モードが有効になっている場合は、ログファイルに
FIPS 140-2 mode activated
というメッセージが表示されます。
詳細については、「MongoDB を FIPS 用に設定」を参照してください。
注意
AES256-GCM とファイルシステムのバックアップ
AES256-GCM
暗号化モードを使用する暗号化ストレージ エンジンの場合、
AES256-GCM
はすべてのプロセスについてキーと一意のカウンター ブロック値を使用することを求めます。
AES256-GCM
暗号で構成された ストレージ エンジンの場合:
- ホット バックアップからの復元
- バージョン 4.2 以降、「ホット」バックアップ(
mongod
が実行されている状態)で取得したファイルからの復元では、MongoDB が起動時に「汚染された」キーを検出し、データベース キーを自動的にロールオーバーして、IV(Initialization Vector: 初期化ベクトル)の再利用を回避できるようになりました。
- コールド バックアップからの復元
ただし、「コールド」バックアップ(
mongod
が実行されていない状態)で取得したファイルからの復元では、MongoDB が起動時に「汚染された」キーを検出できず、IV を再利用すると、機密性と整合性における保証が無効になります。バージョン 4.2 以降では、コールド ファイルシステム スナップショットから復元した後にキーが再利用されるのを回避するため、MongoDB に新しいコマンド ライン オプション
--eseDatabaseKeyRollover
が追加されました。--eseDatabaseKeyRollover
オプションを使用して起動すると、mongod
インスタンスはAES256-GCM
暗号で構成されたデータベース キーをロールオーバーして終了します。
データ暗号化プロセスには、次のものが含まれます。
マスターキーの生成。
各データベースのキーの生成。
データベースキーを使用したデータの暗号化。
マスターキーを使用したデータベースキーの暗号化
暗号化はストレージ層で透過的に行われます。つまり、すべてのデータファイルはファイルシステムの観点から完全に暗号化され、データはメモリ内および転送中にのみ暗号化されていない状態で存在します。
MongoDB のネットワークトラフィックをすべて暗号化するには、TLS/SSL(Transport Layer Security/Secure Sockets Layer)を使用できます。「TLS/SSL 用の mongod
と mongos
構成およびクライアント用の TLS/SSL 構成」を参照してください。
キー マネジメント
重要
暗号化のキーを安全に管理することは重要です。
データベースキーはサーバー内部にあり、暗号化された形式でのみディスクにページングされます。MongoDB はいかなる状況でもマスターキーをディスクにページングすることはありません。
マスターキーのみがサーバーの外部にあります(つまり、データキーやデータベースキーとは別に保持されます)ので、外部での管理が必要になります。マスターキーを管理するために、MongoDB の暗号化されたストレージエンジンでは2つのキーマネジメントのオプションをサポートしています。
KMIP(Key Management Interoperability Protocol)を介してサードパーティのキーマネジメント機器と統合します。推奨
注意
KMIP を使用してサードパーティのマネジメント機器を統合する場合、次の KMIP 操作を許可する必要があります。
作成(
operation_create
)取得(
operation_get
)アクティブ化(
operation_activate
)
キーファイル経由でローカルキー マネジメント。
MongoDB を暗号化用に構成し、2 つのキー管理オプションのいずれかを使用するには、「暗号化の構成」を参照してください。
暗号化とレプリケーション
暗号化はレプリケーションの一部ではありません。
マスターキーとデータベースキーは複製されず、
データはネットワーク上でネイティブに暗号化されません。
ノードに同じキーを再利用することもできますが、MongoDB では、トランスポート暗号化を使用するだけでなく、ノードごとに個別のキーを使用することを推奨しています。
詳細については、「暗号化キーのローテーション」を参照してください。
ログ記録
バージョン 3.4で追加 : MongoDB Enterprise でのみ利用可能
ログファイルは、MongoDB のストレージエンジンの一部として暗号化されません。 mongod
ログ記録 付きで実行される は、構成された ログの冗長度 に応じて、通常の操作の一環として、潜在的に機密性の高い情報をログファイルに出力する場合があります。
MongoDB 3.4 Enterprise は、潜在的に機密性の高い情報が プロセス ログに入力されるのを防ぐために、security.redactClientLogData
mongod
設定を提供しています。redactClientLogData
はログの詳細を減らし、ログ診断を複雑にする可能性があります。
詳細については、「ログリダクションの手動エントリ」を参照してください。
アプリケーションレベルの暗号化
アプリケーションレベルの暗号化では、アプリケーション層内のフィールドごとまたはドキュメントごとに暗号化を提供します。
ドキュメント全体を暗号化するには、カスタムの暗号化および復号化ルーチンを書込み (write) するか、市販のソリューションを使用します。
MongoDB の認定パートナーの一覧については、パートナー リストを参照してください。