Ops Manager は、 MongoDBプロセスを再起動せずに、管理対象の配置全体で TLS 証明書をローテーションできます。オートメーション構成でcertificatesVersion フィールドを増加させると、 MongoDB Agent は適格なプロセスごとにdb.adminCommand({ rotateCertificates: 1 }) を実行するため、クライアント接続は操作全体で中断されません。
適格性
MongoDB Agent は、次の要件をすべて満たすプロセスにのみゼロダウンタイム ローテーションを適用します。
MongoDBバージョンは 5.0 以降です。
TLS は プロセスで構成されています。
配置のすべてのノードが上記の要件を満たしています。
MongoDB Agent は、次のいずれかのカテゴリのプロセスにゼロダウンタイム ローテーションを適用することはできません。 Ops Manager UIでは、資格のない配置のチェックボックスが無効になっています。オートメーションAPIを通じて、Ops Manager はHTTP 400 エラーを出して適格でない配置の構成更新を拒否します。その理由は次のとおりです。
条件 | 動作 |
|---|---|
MongoDBバージョン 5.0 より前 | Ops Manager UIでは選択できません。 Automation API はHTTP 400 エラーで構成の更新を拒否します。 |
TLS が構成されていない | Ops Manager UIでは選択できません。 Automation API はHTTP 400 エラーで構成の更新を拒否します。 |
BI Connector または | Ops Manager UIでは選択できません。 Automation API はHTTP 400 エラーで構成の更新を拒否します。 |
TLS パスの変更はローテーションと同期します | ローリング再起動により、パスの変更が処理されます。 Ops Manager はローテーションを完了として記録します。 |
重要
ゼロダウンタイムローテーションには、配置内のすべてのプロセスが適格要件を満たしている必要があります。いずれかのプロセスが対象とならない場合は、代わりに既存の方法を使用します。Deployment、Security、Settings、TLS Settings に移動し、証明書パスを更新して、Review and Deploy からローリング再起動をトリガーします。
前提条件
証明書をローテーションする前に、以下の点を確認してください。
配置は Ops Manager Automation によって管理されます。
配置では TLS が有効になっています。
新しい TLS 証明書は有効であり、元に設定されたパスで正しく上書きされます。
TLS 証明書のローテーション
証明書ローテーションをトリガーするには、 Automation APIまたは Ops Manager UIを使用します。
重要
UIまたはAPIを使用して、certificatesVersion を以前の値に戻すことはできません。 MongoDB Ops Manager では、この値の増加のみが許可されます。
Automation API の使用
Automation APIを使用して証明書をローテーションするには、現在のオートメーション構成を取得し、certificatesVersion を増やして、更新された構成をアップロードします。
現在のオートメーション構成を取得します。
Automation Configuration エンドポイントに GETリクエストを送信します。
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \ --digest \ --header "Accept: application/json" \ --request GET \ "https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
レスポンス本体を ローカルファイル(automation-config.json など)に保存します。
certificatesVersionフィールドを増やします。
processes 配列で、ローテーションするプロセスごとのオブジェクトを見つけます。 certificatesVersion 整数を 1 ずつ増やします。フィールドが存在しない場合は、追加し、1 に設定します。
インプレース ローテーションをトリガーするには、現在公開されている値より大きい値を設定します。等価値では、ローテーションはトリガーされません。 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"
Ops Manager UI の使用
Ops Manager UIを使用して証明書をローテーションするには、プロジェクトの TLS 設定に移動し、ローテーションする配置を選択します。
ローテーション状態と耐久性
MongoDB Agent は各ローテーションの結果を保持するため、エージェントの再起動に耐えられ、中断された場所から再開できます。
MongoDB Ops Manager は、オートメーション構成の更新により 1 つ以上のプロセスで証明書がローテーションされるたびに、プロジェクトのアクティビティフィードに TLS_CERTIFICATES_ROTATEDイベントを記録します。このイベントを使用して、証明書ローテーション履歴を監査する。
再試行動作
rotateCertificates コマンドが失敗した場合、 MongoDB Agent はエラー コード 128(TlsCertificatesRotationErr)を返します。 Ops Manager に「TLS 証明書ローテーション エラー」が表示されるオートメーション ステータス パネルに表示され、次のコンフィギュレーション チェックでステップが再スケジュールされます。エラーを解決するには、ディスク上の証明書ファイルを修正します。
コマンドが成功しても、 MongoDB Agent が結果を保持できない場合は、自動的に再試行されます。
エージェントによるローテーションの適用方法
MongoDB Agent は、オートメーション構成で増加した certificatesVersion を検出すると、適格な各プロセスを資格要件に対してチェックし、db.adminCommand({ rotateCertificates: 1 }) を実行します。