Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

保管時の暗号化

項目一覧

  • 暗号化されたストレージ エンジン
  • アプリケーションレベルの暗号化

保管時の暗号化を、関連するアカウント、パスワード、暗号化キーを保護するトランスポート暗号化およびセキュリティ ポリシーと組み合わせて使用すると、HIPAA、PCI-DSS、FERPA などのセキュリティとプライバシーの基準へのコンプライアンスを確保するのに役立ちます。

注意

エンタープライズ機能

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 準拠モードで実行するには、次のようにします。

  1. オペレーティングシステムを FIPS 強制モードで実行するように構成します。

  2. MongoDB を構成して、net.tls.FIPSMode 設定を有効にします。

  3. mongod または mongos を再起動します。

  4. サーバーのログファイルをチェックして、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 用の mongodmongos 構成およびクライアント用の TLS/SSL 構成」を参照してください。

重要

暗号化のキーを安全に管理することは重要です。

データベースキーはサーバー内部にあり、暗号化された形式でのみディスクにページングされます。MongoDB はいかなる状況でもマスターキーをディスクにページングすることはありません。

マスターキーのみがサーバーの外部にあります(つまり、データキーやデータベースキーとは別に保持されます)ので、外部での管理が必要になります。マスターキーを管理するために、MongoDB の暗号化されたストレージエンジンでは2つのキーマネジメントのオプションをサポートしています。

  • KMIP(Key Management Interoperability Protocol)を介してサードパーティのキーマネジメント機器と統合します。推奨

    注意

    KMIP を使用してサードパーティのマネジメント機器を統合する場合、次の KMIP 操作を許可する必要があります。

    • 作成(operation_create

    • 取得(operation_get

    • アクティブ化(operation_activate

  • キーファイル経由でローカルキー マネジメント。

MongoDB を暗号化用に構成し、2 つのキー管理オプションのいずれかを使用するには、「暗号化の構成」を参照してください。

暗号化はレプリケーションの一部ではありません。

  • マスターキーとデータベースキーは複製されず、

  • データはネットワーク上でネイティブに暗号化されません。

ノードに同じキーを再利用することもできますが、MongoDB では、トランスポート暗号化を使用するだけでなく、ノードごとに個別のキーを使用することを推奨しています。

詳細については、「暗号化キーのローテーション」を参照してください。

MongoDB Enterprise でのみ使用できます。

MongoDB 6.0 Enterprise 以降では、外部の KMIP サーバーを使用して、MongoDB 監査ログを暗号化するためのキーを安全に管理できます。

KMIP は暗号化キーのマネジメントを簡素化し、非標準のキーマネジメントのプロセスの使用を排除します。

デフォルトの KMIP プロトコル バージョンは 1.2 です。MongoDB サーバーの構成ファイルで、KMIP バージョン 1.0 または 1.1 を使用するように MongoDB を構成できます。

監査ログの暗号化で KMIP サーバーを使用するには、次の設定とパラメーターを構成します。

監査ログの暗号化をテストする場合は、auditLog.localAuditKeyFile 設定を使用することもできます。

MongoDB 6.0 以降で、以前の MongoDB バージョンにダウングレードする必要がある場合は、まず auditLog.auditEncryptionKeyIdentifier または auditLog.localAuditKeyFile を削除して監査ログの暗号化を無効にする必要があります。既存の暗号化された監査ログは暗号化されたままなので、暗号化されたログのストレージと処理のために開発した手順はすべてそのまま使用できます。

注意

監査ログを暗号化する場合、監査ログの保存先はファイルである必要があります。syslog を宛先として使用することはできません。

このセクションは、前のセクションで説明したように、外部の KMIP サーバーを使用して監査ログを暗号化するためのキーを管理していない場合に適用されます。

監査ログファイルは、MongoDB のストレージエンジンの一部として暗号化されません。ログ記録付きで実行される mongod を実行すると、構成されたログの冗長度に応じて、通常の操作の一環として、潜在的に機密性の高い情報をログファイルに出力する場合があります。

security.redactClientLogData 設定を使用して、潜在的に機密性の高い情報が mongod プロセスログに入力されるのを防ぎます。redactClientLogData を設定すると、ログの詳細が減り、ログ診断が複雑になる可能性があります。

詳細については、「ログリダクションの手動エントリ」を参照してください。

MongoDB 7.0 以降では、Queryable Encryption を使用してエンドツーエンドの暗号化を有効にできます。使用方法の詳細については、「クイック スタート」を参照してください。

MongoDB の認定パートナーの一覧については、パートナー リストを参照してください。

戻る

libmongocrypt の使用