ローテーション戦略 - AWS Secrets Manager

ローテーション戦略

Secrets Manager で利用できるローテーション戦略には 2 つの種類があります。

シングルユーザーのローテーション戦略

シングルユーザー戦略は、1 つのシークレット内で 1 人のユーザーの認証情報を更新します。

これは最も簡単なローテーション戦略であり、ほとんどのユースケースに使用することができます。シングルユーザーのローテーションが使用できるのは、以下のような場合です。

  • データベースへのアクセス。シークレットのローテーション時もデータベースへの接続はドロップされず、ローテーション後の新しい接続では新しい認証情報が使用されます。

  • 1 つのユーザーアカウントを作成することを、ユーザーに対し許可しているサービスへのアクセス。例えば、電子メールアドレスをユーザー名として使用している場合。このサービスでは、通常ユーザーは必要に応じて頻繁にパスワードを変更できますが、追加のユーザーを作成したり、ユーザー名を変更したりすることはできません。

  • 必要に応じて作成されたユーザー (アドホックユーザー)。

  • プログラム的に Secrets Manager からパスワードを取得するアプリケーションを使用するのではなく、対話的にパスワードを入力するユーザー。このタイプのユーザーは、ユーザー名とパスワードを変更する必要はないと考えられます。

詳細な手順については、「チュートリアル (アトリビュート): AWS Secrets Manager のシングルユーザーローテーション (ローテーション)を設定する」を参照してください。

このタイプのローテーション実行中、データベース内のパスワードが変更された後に、対応するシークレットが更新されるまでの間には、少しの間遅れが生じます。この遅延期間中も、ローテーションされた認証情報を使用する呼び出しが、データベースによって拒否されるリスクは高くありません。このリスクは、適切な再試行戦略を適用することで低減することが可能です。

この戦略を使用するには、シークレット内のユーザーにパスワードを更新するためのアクセス許可が必要です。

シングルユーザーのローテーション戦略を使用するには

  1. データベースまたはサービスの認証情報を使用してシークレットを作成します。

  2. 対象のシークレットで自動ローテーションを有効にします。さらに、[Select which secret will be used to perform the rotation] (ローテーションの実行に使用するシークレットを選択してください) で、[Use this secret / Single user rotation] (このシークレットを使用する/シングルユーザーローテーション) をクリックします。

交代ユーザーのローテーション戦略

交代ユーザー戦略は、1 つのシークレット内で 2 人のユーザーの認証情報を更新します。最初のユーザーを作成した後に、そのローテーションクローンを作成して 2 番目のユーザーを作成します。ローテーションは、元の認証情報とクローンの認証情報を交互に更新します。例えば、最初のバージョンが user/password1 持つ場合、2 番目のバージョンでは user_clone/password2 となります。3 番目のバージョンでは user/password3 となり、4 番目は user_clone/password4 となります。ローテーションによって新しいバージョンが作成されている間、Secrets Manager からシークレットを取得するアプリケーションは、既存のバージョンを取得します。新しいバージョンの準備ができたら、ローテーションによってステージングラベルが切り替えられ、アプリケーションが新しいバージョンを使用できるようになります。戦略と、与えられた2 つの有効な認証情報のセットがあります。user およびuser_clone両方の認証情報が有効です。

ほとんどのユーザーにはクローン作成権限がないため、Secrets Managerではsuperuserクローニングを行うのに使用する。もう一つの認証情報superuserの認証情報を与える。

詳細な手順については、「チュートリアル: AWS Secrets Manager に交代ユーザーのローテーションを設定する」を参照してください。

この戦略は、以下の場合に適しています。

  • 1 つのロールがデータベーステーブルを所有し、2 番目のロールにそのテーブルへのアクセス許可を付与するようなモデルにおける、アプリケーションおよびデータベース。

  • 高可用性を必要とするアプリケーション。このタイプのローテーション中にアプリケーションが拒否される可能性は、シングルユーザーのローテーション比較すると低くなります。

データベースまたはサービスをホストしているサーバーファームにおいて、パスワードの変更がメンバーサーバー全体に伝播するのに時間を要するような場合には、ローテーションが済んだ認証情報を使用する呼び出しが、データベースによって拒否される可能性があります。このリスクは、適切な再試行戦略を適用することで低減することが可能です。

交代ユーザー戦略を使用するには

  1. データベースまたはサービスの昇格済み認証情報を持つ superuserを作成します。このユーザーは、新しいユーザーを作成し、その認証情報を変更できる必要があります。

  2. ユーザーのsuperuser 認証情報用のシークレットを作成します。

  3. データベースまたはサービスにアクセスするuserを作成します。

  4. user認証情報用のシークレットを作成します。

  5. 以下の自動ローテーションを有効化します userシークレット用に。[Use separate credentials] (別の資格情報を使用) で [Yes] (はい) を選択し、[Secrets]で シークレットsuperuserを選択します。