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

ローテーション戦略

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

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

シングルユーザー戦略は、1 つのシークレット内で 1 人のユーザーの認証情報を更新します。「チュートリアル: AWS データベースのシークレットをローテーションする」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

交代ユーザー戦略は、1 つのシークレット内で 2 人のユーザーの認証情報を更新します。最初のユーザーを作成した後に、そのローテーションクローンを作成して 2 番目のユーザーを作成します。

シークレットの後続の各バージョンでは、ユーザーが交代で更新されます。例えば、最初のバージョンが user1/password1 持つ場合、2 番目のバージョンではそれが user2/password2 となります。3 番目のバージョンでは user1/password3 となり、4 番目は user2/password4 となります。任意の時点で、2 つの有効な認証情報セット (現在の認証情報と以前の認証情報) が存在することになります。「チュートリアル: マスターシークレットでユーザーのシークレットをローテーションする」を参照してください。

ローテーションによって新しいバージョンが作成されている間、アプリケーションは引き続き既存バージョンを使用します。新しいバージョンの準備ができたら、ローテーションによってステージングラベルが切り替えられ、アプリケーションが新しいバージョンを使用できるようになります。

それぞれのシークレットが、管理者またはスーパーユーザー用の認証情報を持っており、これにより、2 番目のユーザーを作成したり、両方のユーザーの認証情報を更新したりできます。

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

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

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

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

この戦略を使用するには、もう 1 つのユーザーの作成と、両方のユーザーに対するパスワードの変更が許可された、管理者またはスーパーユーザーの認証情報を持つ別のシークレットが必要です。最初のローテーションでは、このユーザーをクローンして交代ユーザーを作成することで、両方のユーザーが同じ権限を持つようにします。

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

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

  2. 昇格されたユーザーの認証情報用に、シークレットを作成します。

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

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

  5. ユーザーのシークレットにおいて、自動ローテーションを有効化します。その上で、[Select which secret will be used to perform the rotation] (ローテーションの実行に使用するシークレットを選択してください) で、[Use a secret I previously stored / Multi-user rotation] (以前に保存したシークレットを使用する/マルチユーザーローテーション) をクリックし、ユーザーの昇格されたシークレットを選択します。