暗号化キーのローテーション
ほとんどの規制要件では、機密データの復号に使用されるマネージド キーを 1 年ごとにローテーションして新しいキーに置き換える必要があります。
注意
曖昧さ回避
ファイルシステムの復元後に AES 256 -GCM 暗号で構成されたデータベースキーをロールオーバーするには、代わりに --eseDatabaseKeyRollover
を参照してください。
MongoDB には、キー ローテーションの 2 つのオプションが用意されています。 新しいキーを使用する新しい インスタンスで、バイナリをローテーションできます。 または、キー管理に KMIP サーバーを使用している場合は、マスターキーをローテーションできます。
レプリカセット ノードのローテーション
注意
書き込みクォーラムが変更されないように、一度に複数のレプリカセット ノードをローテーションしないでください。
レプリカセットの場合、ノードをローテーションするには次のようにします。
新しいキーを使用するように構成された新しい
mongod
インスタンスを起動します。 レプリカセットの名前を含む--replSet
オプションと、--dbpath
や--bind_ip
など構成に固有のその他のオプションを含めます。mongod --replSet myReplSet --enableEncryption \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem mongosh
をレプリカセットのプライマリに接続します。レプリカセットにインスタンスを追加します。
rs.add( { host: <host:port> } ) 警告
MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。MongoDB バージョン 5.0 より前のバージョンを実行中で、
votes
とpriority
の設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0
とvotes :0
を使用して新しいセカンダリを追加することを検討してください。次に、rs.status()
を実行して、ノードがSECONDARY
状態に移行したことを確認します。最後に、rs.reconfig()
を使用して優先順位と投票をアップデートします。最初の同期プロセス中に、完全に新しいデータベースキーのセットと新しいシステムキーを使用してデータの再暗号化が行われます。
レプリカセットから古いノードを削除し、そのデータをすべて削除します。 手順については、「自己管理型レプリカセットからのノードの削除」を参照してください。
KMIP マスター キーのローテーション
キー管理に KMIP サーバーを使用している場合は、外部で管理される唯一のキーであるマスター キーをローテーションできます。 新しいマスターキーを使用すると、内部キーストアは再暗号化されますが、データベースキーは変更されません。 そのため、データセット全体を再暗号化する必要が不要になります。
レプリカセットのセカンダリノードのマスター キーを 1 つずつローテーションします。
--kmipRotateMasterKey
オプションを含めてセカンダリを再起動します。 構成に固有のその他のオプション--bind_ip
など)を含めます。 ノードにすでに--kmipKeyIdentifier
オプションが含まれている場合は、使用する新しいキーで--kmipKeyIdentifier
オプションをアップデートするか、省略して KMIP サーバーに新しいキーをリクエストします。mongod --enableEncryption --kmipRotateMasterKey \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 構成ファイルを使用する場合は、
security.kmip.rotateMasterKey
を含めます。データベース キーストアのマスターキーのローテーションと再暗号化が正常に完了すると、
mongod
は終了します。--kmipRotateMasterKey
パラメータなしでセカンダリを再起動します。 構成に固有のその他のオプション--bind_ip
など)を含めます。mongod --enableEncryption --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 構成ファイルを使用している場合は、
security.kmip.rotateMasterKey
設定を削除します。
レプリカセットのプライマリを降格します。
mongosh
をプライマリに接続し、rs.stepDown()
を使用してプライマリを降格し、新しいプライマリの選出を強制します。rs.stepDown() rs.status()
でプライマリが降格し、別のノードがPRIMARY
状態になったことが示されたら、降格したノードのマスターキーをローテーションします。--kmipRotateMasterKey
オプションを含めて、ステップダウンしたメンバーを再起動します。 構成に固有のその他のオプション--bind_ip
など)を含めます。 ノードにすでに--kmipKeyIdentifier
オプションが含まれている場合は、使用する新しいキーで--kmipKeyIdentifier
オプションを更新するか、省略します。mongod --enableEncryption --kmipRotateMasterKey \ --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 構成ファイルを使用する場合は、
security.kmip.rotateMasterKey
を含めます。データベース キーストアのマスターキーのローテーションと再暗号化が正常に完了すると、
mongod
は終了します。--kmipRotateMasterKey
オプションを選択せずにステップダウンしたメンバーを再起動します。 構成に固有のその他のオプション--bind_ip
など)を含めます。mongod --enableEncryption --kmipServerName <KMIP Server HostName> \ --kmipServerCAFile ca.pem --kmipClientCertificateFile client.pem 構成ファイルを使用している場合は、
security.kmip.rotateMasterKey
設定を削除します。