Ops Manager can rotate TLS certificates across a managed deployment without restarting MongoDB processes. When you increment the certificatesVersion field in the Automation Configuration, the MongoDB Agent runs db.adminCommand({ rotateCertificates: 1 }) on each eligible process in place, so client connections remain uninterrupted throughout the operation.
注意
ゼロダウンタイム ローテーションは、mongod mongosプロセスと プロセスによって保持されている TLSサーバーとクライアント証明書にのみ適用されます。証明機関(CA)証明書はローテーションされません。
適格
MongoDB Agent は、次のすべての要件を満たすプロセスにのみ、ダウンタイムなしのローテーションを適用します。
MongoDB バージョン 76005.0 以降。
TLS は プロセスで構成されています。
配置のすべてのノードが上記の要件を満たしています。
MongoDB Agent は、次のカテゴリのプロセスにゼロダウンタイムローテーションを適用できません。MongoDB Ops Manager UI では、対象外の配置のチェックボックスは無効になります。Automation API を介して、MongoDB Ops Manager は対象外の配置の構成更新を拒否し、その理由を説明する HTTP 400 エラーを返します。
条件 | 動作 |
|---|---|
MongoDB 5.0 以前のバージョン | MongoDB Ops Manager UI では選択できません。オートメーション API は、HTTP 400 エラーで設定の更新を拒否します。 |
TLS が構成されていない | MongoDB Ops Manager UI では選択できません。オートメーション API は、HTTP 400 エラーで設定の更新を拒否します。 |
BI Connector または | MongoDB Ops Manager UI では選択できません。オートメーション API は、HTTP 400 エラーで設定の更新を拒否します。 |
TLS パスの変更はローテーションと同期します | ローリング再起動によりパスの変更が取り扱われます。Ops Manager はローテーションを完了として記録します。 |
重要
ダウンタイムなしのローテーションには、配置のすべてのプロセスが適格要件を満たす必要があります。プロセスが適格しない場合は、代わりに既存の方法を使用します。Deployment、Security、Settings、TLS Settingsに移動し、証明書パスを更新し、Review and Deployを介してローリング再起動をtriggerします。
前提条件
証明書をローテートする前に、次の点を確認してください。
配置は MongoDB Ops Manager オートメーションによってマネージドされます。
配置では TLS が有効になっています。
新しい TLS 証明書は有効であり、元の設定パスに正しく上書きされています。
TLS 証明書をローテートします
Automation API または Ops Manager UI を使用して証明書のローテーションをトリガーします。
重要
UI または API を使用して certificatesVersion を前の値に戻すことはできません。Ops Manager では、この値の増加のみが許可されます。
オートメーション API を使用する
オートメーション API を使用して証明書をローテートするには、現在のオートメーション設定を取得し、certificatesVersion を増加し、更新された設定をアップロードします。
certificatesVersionフィールドを増加させます。
processes配列で、ローテートする各プロセスのオブジェクトを探します。certificatesVersion整数を1増加します。フィールドがない場合は、追加して1に設定します。
インプレースローテーションをtriggerするには、現在公開されている値より大きい値を設定します。同じ値ではローテーションはtriggerされません。MongoDB Ops Manager はHTTP 400 INVALID_AUTOMATION_CONFIGでの減少を拒否します。フィールド検証ルールについては、「MongoDB プロセス」を参照してください。
更新されたオートメーション構成をアップロードします。
変更された構成で PUT リクエストを送信します。
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \ --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --request PUT \ --data @automation-config.json \ "https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
MongoDB Ops Manager UI を使用する
Ops Manager UI を使用して証明書をローテートするには、プロジェクトの TLS 設定に移動し、ローテートする配置を選択します。
ローテーション状態と耐久性
MongoDB Agent は、各ローテーションの結果を永続化し、エージェントの再起動後も続行し、中断した場所から再開します。
Ops Manager は、オートメーション構成の更新によって 1 つ以上のプロセスの証明書がローテートされるたびに、プロジェクトのアクティビティフィードに TLS_CERTIFICATES_ROTATED イベントを記録します。このイベントを使用して証明書ローテーション履歴を監査します。
再試行動作
rotateCertificates コマンドが失敗した場合、MongoDB Agent はエラーコード 128 (TlsCertificatesRotationErr) を返します。MongoDB Ops Manager はオートメーションステータスパネルに「TLS 証明書ローテーションエラー」を表示し、次の収束チックでステップを再スケジュールします。エラーを解決するには、ディスク上の証明書ファイルを修正します。
コマンドが成功しても MongoDB Agent が結果を持続できない場合は、自動的に再試行します。
エージェントがローテーションを適用する方法
MongoDB Agent がオートメーション構成で増加した certificatesVersion を検出すると、各適格プロセスを適格要件と照らし合わせてチェックし、db.adminCommand({ rotateCertificates: 1 }) を実行します。