

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

# のシングルユーザーローテーションを設定する AWS Secrets Manager
<a name="tutorials_rotation-single"></a>

このチュートリアルでは、データベース認証情報を含むシークレットの単一ユーザーローテーションを設定する方法を学習します。シングルユーザーローテーションは、Secrets Manager がシークレットとデータベースの両方でユーザーの認証情報を更新するローテーション戦略です。詳細については、「[ローテーション戦略: シングルユーザー](rotation-strategy.md#rotating-secrets-one-user-one-password)」を参照してください。

チュートリアルを終了したら、チュートリアルからリソースをクリーンアップすることをお勧めします。本番環境では使用しないでください。

Secrets Manager のローテーションでは、 AWS Lambda 関数を使用してシークレットとデータベースを更新します。Lambda 関数を使用する場合のコストについては、「[料金](intro.md#asm_pricing)」を参照してください。

**Contents**
+ [アクセス許可](#tutorials_rotation-single_permissions)
+ [前提条件](#tutorials_rotation-single_step-setup)
+ [ステップ 1: Amazon RDS データベースユーザーを作成する](#tutorials_rotation-single_step-dbuser)
+ [ステップ 2: データベースユーザー認証情報のシークレットを作成する](#tutorials_rotation-single_step-rotate)
+ [ステップ 3: ローテーションされたパスワードをテストする](#tutorials_rotation-single_step-connect-again)
+ [ステップ 4: リソースをクリーンアップする](#tutorials_rotation-single_step-cleanup)
+ [次の手順](#tutorials_rotation-single_step-next)

## アクセス許可
<a name="tutorials_rotation-single_permissions"></a>

このチュートリアルの前提条件として、 AWS アカウントの管理者権限が必要となります。本番稼働環境では、各ステップで異なるロールを使用するのがベストプラクティスとなります。例えば、Amazon RDS データベースの作成にはデータベース管理者権限を持つロールを使用し、VPC とセキュリティグループの設定にはネットワーク管理者権限を持つロールを使用します。チュートリアルの各ステップでは同じアイデンティティを使用することが推奨されます。

本番稼働環境で許可を設定する方法については、「[の認証とアクセスコントロール AWS Secrets Manager](auth-and-access.md)」を参照してください。

## 前提条件
<a name="tutorials_rotation-single_step-setup"></a>

このチュートリアルの前提条件は [の交代ユーザーローテーションを設定する AWS Secrets Manager](tutorials_rotation-alternating.md) です。最初のチュートリアルが完了した時点で、リソースのクリーンアップを実行しないでください。このチュートリアルの後、Amazon RDS データベースと、データベースの管理者認証情報を含む Secrets Manager シークレットを備えた現実的な環境ができました。データベースユーザーの認証情報を含む 2 番目のシークレットもありますが、このチュートリアルではそのシークレットを使用しません。

また、管理者認証情報を使用してデータベースに接続するための接続が、MySQL Workbench に設定されます。

## ステップ 1: Amazon RDS データベースユーザーを作成する
<a name="tutorials_rotation-single_step-dbuser"></a>

まず、シークレットにその認証情報を保存するユーザーが必要になります。ユーザーを作成するには、シークレットに保存されている管理者認証情報を使用して Amazon RDS データベースにログインします。簡単にするために、このチュートリアルでは、データベースへの完全なアクセス許可を持つユーザーを作成します。運用環境では、これは一般的ではないため、最小権限の原則に従うことをお勧めします。

**管理者パスワードを取得するには**

1. Amazon RDS コンソールで、データベースに移動します。

1. **[Configuration]** (設定) タブの **[Master Credentials ARN]** (マスター認証情報 ARN)で、**[Manage in Secrets Manager]** (Secrets Managerの管理) を選択します。

   Secrets Manager コンソールが開きます。

1. シークレットの詳細ページで、**[Retrieve secret value]** (シークレット値の取得) を選択します。

1. パスワードは **[Secret value]** (シークレット値) セクションに表示されます。

**データベースユーザーを作成するには**

1. MySQL ワークベンチで、接続 **[SecretsManagerTutorial]** を右クリックし、**[Edit Connection]** (接続を編集) を選択します。

1. **[Manage Server Connections]** (サーバー接続を管理) ダイアログボックスで、**[Username]** (ユーザーネーム) に **admin** と入力し、**[Close]** (閉じる) を選択します。

1. MySQL Workbench に戻り、接続 **[SecretsManagerTutorial]** を選択します。

1. シークレットから取得した管理者パスワードを入力します。

1.  MySQL Workbenchの**[Query]** (クエリ) ウィンドウで、次のコマンド (強力なパスワードを含む) を入力し、**[Execute]** (実行) を選択します。ローテーション関数は SELECT を使用して更新されたシークレットをテストするため、**dbuser** には少なくともその権限が必要です。

   ```
   CREATE USER 'dbuser'@'%' IDENTIFIED BY 'EXAMPLE-PASSWORD';
   GRANT SELECT ON myDB . * TO 'dbuser'@'%';
   ```

   **[Output]** (出力) ウィンドウに、コマンドが実行されたことが表示されます。

## ステップ 2: データベースユーザー認証情報のシークレットを作成する
<a name="tutorials_rotation-single_step-rotate"></a>

次に、作成したばかりのユーザーの認証情報を格納するためのシークレットを作成し、即時ローテーションを含む自動ローテーションをオンにします。Secrets Manager はシークレットをローテーションします。これは、パスワードがプログラムによって生成されることを意味します - 誰もこの新しいパスワードを見たことはありません。ローテーションをすぐに開始すると、ローテーションが正しく設定されているかどうかを判断するのにも役立ちます。

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から Secrets Manager コンソールを開きます。

1. **[Store a new secret]** (新しいシークレットを保存する) を選択します｡

1. [**Choose secret type**] (シークレットタイプを選択する) ページで、次の操作を行います。

   1. **[Secret type]** (シークレットタイプ) で、**[Credentials for Amazon RDS database]** (Amazon RDS データベースの認証情報) を選択します。

   1. **[Credentials]** (認証情報) で、ユーザーネーム **dbuser** と、MySQL Workbench を使って作成したデータベースユーザー向けに入力したパスワードを入力します。

   1. **[Database]** (データベース) で、**secretsmanagertutorialdb** を選択します。

   1. [**次へ**] を選択します。

1. **[Configure secret]** (シークレットを設定する) ページで、**[Secret name]** (シークレット名) に **SecretsManagerTutorialDbuser** と入力し、**[Next]** (次) を選択します。

1. **[Configure Routing**] (ローテーションを設定する) ページで、以下を実行します。

   1. **[Automatic rotation]** (自動ローテーション) を有効化します。

   1. **[Rotation schedule]** (ローテーションスケジュール) で、**[Days]** (日数) のスケジュールを設定します: **[Duration]** (期間) の **2** 日間: **2h**。**[Rotate immediately]** (すぐにローテーションする) は選択したままにしておきます。

   1. **[Rotation function]** (ローテーション関数) で **[Create a rotation function]** (ローテーション関数を作成) を選択し、[Function Name] (関数名) に **tutorial-single-user-rotation** と入力します。

   1. **[ローテーション戦略]** で、**[単一ユーザー]** を選択します。

   1. [**次へ**] を選択します。

1. **[Review]** (確認) ページで **[Store]** (保存) を選択します。

   Secrets Manager はシークレットの詳細ページに戻ります。ローテーション設定のステータスは、ページの上部で確認できます。Secrets Manager では、Lambda ローテーション関数や Lambda 関数を実行する実行ロールなどのリソースを作成するときは CloudFormation を使用します。CloudFormation が終了すると、バナーが**ローテーションが予定されているシークレット**に切り替わります。これで、最初のローテーションは完了です。

## ステップ 3: ローテーションされたパスワードをテストする
<a name="tutorials_rotation-single_step-connect-again"></a>

最初のシークレットローテーションが完了すると (所要時間は数秒)、シークレットに有効な認証情報が残っているかどうかを確認できます。シークレット内のパスワードが、元の認証情報から変更されました。

**シークレットから新しいパスワードを取得するには**

1. Secrets Manager のコンソール ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)) を開きます。

1. **[Secrets]** (シークレット) を選択し、シークレット **SecretsManagerTutorialDbuser** を選択します。

1. **[Secret details]** (シークレットの詳細) ページで、下へスクロールし、**[Retrieve secret value]** (シークレットの値を取得する) を選択します。

1. **[Key/value]** (キー/バリュー) テーブルで、**password** の**シークレットの値**をコピーします。

**認証情報をテストするには**

1. MySQL ワークベンチで、接続 **[SecretsManagerTutorial]** を右クリックし、**[Edit Connection]** (接続を編集) を選択します。

1. **[Manage Server Connections]** (サーバー接続を管理) ダイアログボックスで、**[Username]** (ユーザーネーム) に **dbuser** と入力し、**[Close]** (閉じる) を選択します。

1. MySQL Workbench に戻り、接続 **[SecretsManagerTutorial]** を選択します。

1. **[Open SSH Connection]** (SSH 接続を開く) ダイアログボックスで、シークレットから取得したパスワードを **[Password]** (パスワード) に貼り付けて、**[OK]** をクリックします。

   認証情報が有効であれば、MySQL Workbench でデータベースの設計ページが開きます。

## ステップ 4: リソースをクリーンアップする
<a name="tutorials_rotation-single_step-cleanup"></a>

料金を発生させないために、このチュートリアルで作成したシークレットは削除します。手順については、「[AWS Secrets Manager シークレットを削除する](manage_delete-secret.md)」を参照してください。

前のチュートリアルで作成したリソースをクリーンアップするには、[ステップ 4: リソースをクリーンアップする](tutorials_rotation-alternating.md#tutorials_rotation-alternating_step-cleanup) を参照してください。

## 次の手順
<a name="tutorials_rotation-single_step-next"></a>
+ アプリケーションでシークレットを取得する方法について説明します。「[からシークレットを取得する AWS Secrets Manager](retrieving-secrets.md)」を参照してください。
+ その他のローテーションスケジュールについて説明します。「[ローテーションスケジュール](rotate-secrets_schedule.md)」を参照してください。