

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lambda 関数のローテーション戦略
<a name="rotation-strategy"></a>

[Lambda 関数によるローテーション](rotate-secrets_lambda.md) では、Secrets Manager はデータベースシークレットに対して、2 つのローテーション戦略を提供します。

## ローテーション戦略: シングルユーザー
<a name="rotating-secrets-one-user-one-password"></a>

この戦略は、1 つのシークレット内で 1 人のユーザーの認証情報を更新します。Amazon RDS Db2 インスタンスの場合、ユーザーは自分のパスワードを変更できないため、管理者の認証情報を別のシークレットで提供する必要があります。**これは最も簡単なローテーション戦略であり、ほとんどのユースケースに使用することができます。**特に、1 回限りの (アドホック) ユーザーまたはインタラクティブユーザーの認証情報には、この方法を使用することを推奨します。

シークレットがローテーションしても、開いているデータベース接続は切断されません。ローテーションの実行中、データベース内のパスワードが変更されてからシークレットが更新されるまでには少し時間がかかります。その間に、ローテーションされた認証情報を使用する呼び出しがデータベースによって拒否されるリスクは低く抑えられています。このリスクは、[適切な再試行戦略](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)を適用することで低減することが可能です。ローテーション後、新しい接続は新しい認証情報を使用します。

## ローテーション戦略: 交代ユーザー
<a name="rotating-secrets-two-users"></a>

この戦略は、1 つのシークレット内で 2 人のユーザーの認証情報を更新します。最初のユーザーを作成し、その最初のローテーション中に、ローテーション関数がユーザーのクローンを作成して 2 人目のユーザーを作成します。シークレットがローテーションされるたびに、ローテーション関数はパスワードを更新するユーザーを切り替えます。ほとんどのユーザーにはクローン作成権限がないため、`superuser` の認証情報を別のシークレット内で用意する必要があります。データベース内のクローンユーザーがオリジナルユーザーと同じ権限を持っていない場合や、1 回限り (アドホック) またはインタラクティブなユーザーの認証情報には、シングルユーザーローテーション方法を使用することを推奨します。

この戦略は、1 つ目のロールがデータベーステーブルを所有し、2 つ目のロールにそのデータベーステーブルへのアクセス許可を付与するといった権限モデルのデータベースに適しています。また、高可用性を必要とするアプリケーションにも適しています。アプリケーションは、ローテーション中にシークレットを取得しても、引き続き有効な認証情報セットを取得します。ローテーション後、`user` と `user_clone` の両方の認証情報が有効になります。このタイプのローテーション中にアプリケーションが拒否される可能性は、シングルユーザーのローテーションを比較すると一段と低くなります。データベースをホストしているサーバーファームでパスワードの変更がサーバー全体に伝播するまでに時間がかかる場合には、新しい認証情報を使用する呼び出しがデータベースによって拒否されるおそれがあります。このリスクは、[適切な再試行戦略](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)を適用することで低減することが可能です。

Secrets Manager は、元のユーザーと同じアクセス許可を持つクローンユーザーを作成します。クローンユーザーが作成された後に元のユーザーの権限を変更する場合は、クローンユーザー側の権限も変更する必要があります。

例えば、データベースユーザーの認証情報を使用してシークレットを作成した場合、そのシークレットには、使用した認証情報によるバージョンが 1 つ含まれます。

 ![The secret contains one secret version labeled AWSCURRENT. The username for the AWSCURRENT version is MyUser.](http://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/images/AlternatingUsers1.png) 

**1 回目のローテーション** – ローテーション関数がパスワードを生成し、それを使用してユーザーのクローンを作成します。それらの認証情報は、現在のシークレットバージョンになります。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.](http://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/images/AlternatingUsers2.png) 

**2 回目のローテーション** – ローテーション関数は、元のユーザーのパスワードを更新します。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser.](http://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/images/AlternatingUsers3.png) 

**3 回目のローテーション** – ローテーション関数は、クローンされたユーザーのパスワードを更新します。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.](http://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/images/AlternatingUsers4.png) 