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

暗号化キーのローテーション

項目一覧

  • レプリカセット ノードのローテーション
  • KMIP マスター キーのローテーション

ほとんどの規制要件では、機密データの復号に使用されるマネージド キーを 1 年ごとにローテーションして新しいキーに置き換える必要があります。

注意

曖昧さ回避

ファイルシステムの復元後に AES 256 -GCM 暗号で構成されたデータベースキーをロールオーバーするには、代わりに --eseDatabaseKeyRolloverを参照してください。

MongoDB には、キー ローテーションの 2 つのオプションが用意されています。 新しいキーを使用する新しい インスタンスで、バイナリをローテーションできます。 または、キー管理に KMIP サーバーを使用している場合は、CMK をローテーションすることもできます

注意

書き込みクォーラムが変更されないように、一度に複数のレプリカセット ノードをローテーションしないでください。

レプリカセットの場合、ノードをローテーションするには次のようにします。

  1. 新しいキーを使用するように構成された新しいmongodインスタンスを起動します。 レプリカセットの名前を含む--replSetオプションと、 --dbpath--bind_ipなど構成に固有のその他のオプションを含めます。

    mongod --replSet myReplSet --enableEncryption \
    --kmipServerName <KMIP Server HostName> \
    --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem
  2. mongoshをレプリカセットのプライマリに接続します。

  3. レプリカセットにインスタンスを追加します。

    rs.add( { host: <host:port> } )

    警告

    MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。MongoDB バージョン 5.0 より前のバージョンを実行中で、 votespriorityの設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0votes :0を使用して新しいセカンダリを追加することを検討してください。次に、 rs.status()を実行して、ノードがSECONDARY状態に移行したことを確認します。最後に、 rs.reconfig()を使用して優先順位と投票をアップデートします。

    最初の同期プロセス中に、完全に新しいデータベースキーのセットと新しいシステムキーを使用してデータの再暗号化が行われます。

  4. レプリカセットから古いノードを削除し、そのデータをすべて削除します。 手順については、「自己管理型レプリカセットからのノードの削除」を参照してください。

キー管理に KMIP サーバーを使用している場合は、外部で管理される唯一のキーであるカスタマー マスター キーをローテーションできます。 新しいマスターキーを使用すると、内部キーストアは再暗号化されますが、データベースキーは変更されません。 そのため、データセット全体を再暗号化する必要が不要になります。

  1. レプリカセットのセカンダリノードのマスター キーを 1 つずつローテーションします。

    1. --kmipRotateMasterKeyオプションを含めてセカンダリを再起動します。 構成に固有のその他のオプション--bind_ipなど)を含めます。 ノードにすでに--kmipKeyIdentifierオプションが含まれている場合は、使用する新しいキーで--kmipKeyIdentifierオプションをアップデートするか、省略して KMIP サーバーに新しいキーをリクエストします。

      mongod --enableEncryption --kmipRotateMasterKey \
      --kmipServerName <KMIP Server HostName> \
      --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem

      構成ファイルを使用する場合は、 security.kmip.rotateMasterKeyを含めます。

    2. データベース キーストアのマスターキーのローテーションと再暗号化が正常に完了すると、 mongodは終了します。

    3. --kmipRotateMasterKeyパラメータなしでセカンダリを再起動します。 構成に固有のその他のオプション--bind_ipなど)を含めます。

      mongod --enableEncryption --kmipServerName <KMIP Server HostName> \
      --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem

      構成ファイルを使用している場合は、 security.kmip.rotateMasterKey設定を削除します。

  2. レプリカセットのプライマリを降格します。

    mongoshをプライマリに接続し、 rs.stepDown()を使用してプライマリを降格し、新しいプライマリの選出を強制します。

    rs.stepDown()
  3. rs.status()でプライマリが降格し、別のノードがPRIMARY状態になったことが示されたら、降格したノードのマスターキーをローテーションします。

    1. --kmipRotateMasterKeyオプションを含めて、ステップダウンしたメンバーを再起動します。 構成に固有のその他のオプション--bind_ipなど)を含めます。 ノードにすでに--kmipKeyIdentifierオプションが含まれている場合は、使用する新しいキーで--kmipKeyIdentifierオプションを更新するか、省略します。

      mongod --enableEncryption --kmipRotateMasterKey \
      --kmipServerName <KMIP Server HostName> \
      --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem

      構成ファイルを使用する場合は、 security.kmip.rotateMasterKeyを含めます。

    2. データベース キーストアのマスターキーのローテーションと再暗号化が正常に完了すると、 mongodは終了します。

    3. --kmipRotateMasterKeyオプションを選択せずにステップダウンしたメンバーを再起動します。 構成に固有のその他のオプション--bind_ipなど)を含めます。

      mongod --enableEncryption --kmipServerName <KMIP Server HostName> \
      --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem

      構成ファイルを使用している場合は、 security.kmip.rotateMasterKey設定を削除します。

戻る

構成する