このページでは、統合を通じてプロビジョニングされたリソースのデータベースユーザーの認証情報のローテーションについて説明します。 OAuth のローテーションとは無関係です。詳しくは、「client_secret アプリを Atlas App 接続と統合 」の「 トークンとシークレット ストレージ 」を参照してください。
Atlas が統合を通じてプロビジョニングされたリソースに関連付けられているデータベースユーザーの認証情報をローテーションすると、Atlas は更新された認証情報を事前登録された HTTPSコールバックエンドポイントに送信します。 Atlas は、通常はセキュリティ インシデントに応じて、独立して認証情報のローテーションを開始します。このエンドポイントの実装は任意ですが、推奨されています。これにより、プロビジョニングされたデータベースユーザーに依存するエンドユーザーのアプリケーションが、更新された認証情報を自動的に受け取れるようになります。エンドポイントは、統合と Atlas 間の OAuth 接続を更新または置換しません。
エンドポイントを実装しない場合、これらのエンドユーザー アプリケーションはローテーションされたデータベースユーザーの認証情報を自動的に受信しません。アプリケーションがデータベースに対して引き続き認証できるようにするには、別のメカニズムを介して認証情報を更新する必要があります。
エンドポイントの要件
次の構造を使用してエンドポイントを公開します。
PUT https://<your-registered-base-url>/v1/organizations/{organizationId}/projects/{projectId}/secrets
オンボード時に Atlas にベースURLを登録します。 organizationId と projectId のパスパラメータは、統合に関連付けられた Atlas組織とプロジェクトを識別します。オンボード時に Atlas と同意した場合は、別のURL構造を使用できますが、登録されたベースURLと必須識別子は明確なままである必要があります。
Atlas は、プロビジョニング中に確立されたインストールスコープの Bearer トークンを使用して各リクエストを認証します。
Authorization: Bearer <installation-access-token> Content-Type: application/json
エンドポイントは、次の条件を満たす必要があります。
すべてのリクエストでベアラー トークンを検証し、無効または期限切れのトークンは
401 Unauthorizedで拒否します。トークンを機密情報として扱い、適切なアクセス制御を使用して保存します。
信頼できる認証局からの TLS 証明書とともに HTTPS を使用します。 Atlas はプレーンHTTP経由でエンドポイントを呼び出しません。自己署名証明書は本番環境ではサポートされていません。
リクエスト本文
リクエスト本文には、更新する認証情報のキーと値のペアが含まれています。
{ "secrets": [ { "name": "ATLAS_CONNECTION_STRING", "value": "mongodb+srv://user:pass@cluster.mongodb.net/" }, { "name": "ATLAS_DB_USERNAME", "value": "app_user" }, { "name": "ATLAS_DB_PASSWORD", "value": "rotated_password" } ], "partial": true }
フィールド | 必須 | 説明 |
|---|---|---|
| 必須 | 更新対象の認証情報のキーと値のペアの配列。 |
| 必須 | オンボード時に Atlas と一致した標準認証情報名。同意した各名前を、安定したバージョン管理された契約として扱います。 |
| 必須 | 更新された認証情報の値。値には特殊文字が含まれる場合があります。 |
| 任意 |
|
応答
ステータス | 意味 | 期待される動作 |
|---|---|---|
| 認証情報は受け入れられ、正常に保存されました。 | レスポンス本体は必要ありません。 |
| リクエスト本文の形式が正しくありませんでした。 | 認証情報を公開しないエラーメッセージを返します。 |
| トークンの検証に失敗しました。 | リクエストを拒否します。 |
| 組織またはプロジェクトの識別子は認識されません。 | リクエストを拒否します。 |
| 一時的なサーバー側エラーが発生しました。 | Atlas がリクエストを再試行できるようにエラーを返します。 |
再試行と冪等性
Atlas は失敗したリクエスト(5xx 応答またはネットワーク タイムアウト)を指数バックオフと限られた再試行回数で再試行します。
エンドポイントは冪等である必要があります。同じ ローテーションイベントに対して重複するリクエストを受け取る場合、同じ認証情報値を複数回適用してもエラーのない結果が得られます。
セキュリティ要件
上記の認証要件に加えて、エンドポイントは次の条件を満たす必要があります。
保管中の認証情報を暗号化する。
アプリケーションログ、リクエストログ、エラー メッセージ、テレメトリ、またはプレーンテキスト構成ファイルに認証情報が表示されないようにします。
保存された認証情報へのアクセスは、それを必要とするシステムと担当者に制限します。
10 秒以内に応答します。新しい認証情報の保持にバックグラウンド処理が必要な場合は、リクエストを同期的に確認し、処理を非同期に完了します。
インストール アクセス トークンが侵害されたと思われる場合は、同意された Atlas サポート プロセスに従ってください。
オンボード チェックリスト
Atlas がローテーションされた認証情報を統合に送信する前に、次の手順を実行する必要があります。
オンボード時にコールバックベースURLを登録します。
インストール アクセス トークンを確立して安全に保存します。
ドキュメント認証情報名と更新セマンティクスが一致します。
エンドポイントを HTTPS 経由でアクセスできるようにデプロイします。
エンドポイントが期待されるステータス コードを返すことを確認します。
非本番環境でのエンドツーエンドのローテーションを非本番インストールで手動でテストします。
重複配信と再試行の動作をテストします。