チュートリアル: のシークレットをローテーションする AWS データベース - AWS Secrets Manager

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

チュートリアル: のシークレットをローテーションする AWS データベース

このチュートリアルでは、AWS データベースのシークレットを作成し、スケジュールに従ってローテーションするよう設定します。1 つのローテーションを手動でトリガーし、新しいバージョンのシークレットが引き続きアクセスを提供していることを確認します。

テストの設定 MySQL データベース

このステップでは、Amazon Relational Database Service (Amazon RDS) でテストデータベースを作成します。このチュートリアルでは、テスト・データベースが MySQL.

ステップ2: シークレットの作成

次に、 Secrets Manager のコンソールでシークレットを作成し、そのシークレットに MySQL データベース。返された認証情報を使用してデータベースにサインインすることで、シークレットをテストします。

ステップ3: 最初のシークレットの検証

ステップ 3 では、新しいシークレットを使用して認証情報をテストし、データベースに接続するために使用できることを確認します。

ステップ4: シークレットのローテーションを構成する

ステップ 4 では、シークレットのローテーションを有効にして最初のローテーションを実行します。

ステップ5: 正常なローテーションの確認

このステップでは、最初のローテーションが完了した後、ローテーション中に生成された新しい認証情報で引き続きデータベースにアクセスできることを示すために検証ステップを繰り返します。

ステップ6: クリーンアップ

最後のステップでは、不要なコストの発生を避けるため、Amazon RDS データベースインスタンスとシークレットを削除します。

Prerequisites

チュートリアルでは、AWS アカウントにアクセスでき、さらにコンソールを使用するか、または AWS CLI の同等のコマンドで AWS Secrets Manager と Amazon RDS を設定するための完全なアクセス許可を持つユーザーとして AWS にサインインできることを前提としています。

チュートリアルでは、 MySQL クライアントツール、 MySQLWorkbenchを使用して、データベースと対話し、ユーザーを構成し、ステータスを確認します。このチュートリアルには、次のステップの適切なポイントにおけるインストール手順が含まれています。

このチュートリアルで設定したデータベースでは、ポート 3306 のパブリックインターネットへのアクセスを許可します (もう一度チュートリアルをシンプルなセットアップにするため)。このチュートリアルを完了するには、 MySQL インターネットに接続されたコンピュータから、 MySQL クライアントツール、 MySQLWorkbench. 次のガイドに従って操作することをお勧めします。 Lambda および Amazon EC2 本番サーバを安全に構成するためのVPCドキュメント。

重要

ローテーションを有効にするには、ネットワーク環境で Lambda ローテーション関数がお客様のデータベースと Secrets Manager サービスと通信できるように許可する必要があります。このチュートリアルでは、パブリックインターネットアクセスを使用してデータベースを設定し、Lambda がパブリック IP アドレスを使用してデータベースにアクセスするローテーション関数を自動的に設定します。データベースインスタンスへのパブリックインターネットアクセスをブロックする場合、Lambda 関数をデータベースインスタンスと同じ VPC 内で実行できるように設定する必要があります。次に、プライベート Secrets Manager エンドポイントで VPC を設定するか、NAT ゲートウェイを使用してパブリックインターネットアクセスを持つ VPC を設定して、Lambda ローテーション関数がパブリック Secrets Manager エンドポイントにアクセスできるようにする必要があります。

必要な アクセス許可

このチュートリアルを正常に実行するには、 SecretsManagerReadWrite AWS 管理対象ポリシー. IAM ロールを作成してアクセス許可ポリシーをアタッチするアクセス許可も必要です。次のいずれかの IAMFullAccess AWS 管理対象ポリシーまたは明示的に割り当て iam:CreateRole および iam:AttachRolePolicy.

警告

iam:CreateRoleiam:AttachRolePolicy を使用すると、ユーザーが自分にどのようなアクセス許可も付与できるため、これらのポリシーはアカウントで信頼されたユーザーのみ付与してください。

テストの設定 MySQL データベース

  1. チュートリアルのこの部分では、アカウントにサインインし、 MySQL データベース Amazon RDS.

  2. 以下のステップを実行します。

    1. AWS マネジメントコンソールにサインインして、Amazon RDS コンソールの https://console.aws.amazon.com/rds/ を開きます。

    2. [ダッシュボード] から、[データベースの作成] セクションまでスクロールダウンし、[データベースの作成] を選択します。

    3. 詳細は、 Amazon RDS チュートリアル、 作成 MySQL DBインスタンス」を参照してください。

      データベースを作成するときは、次の情報を使用します。

      • [DB インスタンス識別子]: MyTestDatabaseInstance.

      • マスターユーザー名: adminuser.

      • マスターパスワード: 安全な初期パスワードを入力し、 パスワードの確認ボックス。このパスワードは忘れないようにしてください。 ステップ 2 でシークレットを作成するときに必要になります。

      注記

      データベースの作成には、DB インスタンスが利用可能になるまでに最大 20 分かかる場合があります。

    4. [RDS > データベース] の使用可能なデータベースの一覧からデータベースを選択し、[変更] を選択します。

    5. [ ネットワークとセキュリティ 」セクションで、 公共のアクセシビリティYes.

    6. [バックアップ] セクションで [バックアップ保持期間] を [0 days (0 日間)] に設定して、バックアップを無効にします。

    7. 残りの設定はデフォルト値のままにしておきます。

    8. [Continue] を選択します。

    9. [ 変更のスケジューリング セクション、選択 Apply immediately そして DB インスタンスの変更.

    10. [ まとめ セクションの表示 利用可能 以下 情報ページをリフレッシュし、 接続性とセキュリティ セクション。

    11. [ セキュリティ 」セクションで、 デフォルト 以下 VPCセキュリティグループ. Amazon EC2 のコンソールが開き、設定された [セキュリティグループ] が表示されます。

    12. [インバウンドルール] を選択し、[インバウンドルールの編集] を選択します。

    13. [ソースの種類] で、[すべて] を選択し、[ルールの保存] を選択します。

注記

チュートリアルを正しく設定するためには、少なくともこれらの設定を使用します。プライベート VPC が必要な場合は、Lambda 関数を VPC で実行するように設定する必要があります。次に、プライベート Secrets Manager エンドポイントで VPC を設定するか、NAT ゲートウェイを使用してパブリックインターネットアクセスを持つ VPC を設定します。これらの設定により、Lambda ローテーション機能がパブリック Secrets Manager エンドポイントにアクセスできるようになります。

ステップ2: シークレットの作成

このステップでは、Secrets Manager でシークレットを作成して、そのシークレットにテストの詳細 (マスターユーザーのデータベースや認証情報が含まれる) を追加します。

シークレットを作成するには

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

  2. コンソールを Amazon RDS MySQL 前のステップのデータベース。

  3. [新しいシークレットの保存] を選択します。

  4. [新しいシークレットを保存する] ページで、[シークレットの種類を選択] セクションの [RDS データベースの認証情報] を選択します。

  5. [ユーザー名] に、前にステップ 1.3 で提供したマスターユーザーの名前と一致するように「adminuser」と入力します。

  6. [パスワード] に、データベースの作成時に [adminuser] に指定したパスワードと同じパスワードを入力します。

  7. 対象 暗号化キーを選択します。、これを に設定したままにします。 DefaultEncryptionKey. AWS は、デフォルトの CMK ではなく、カスタムマスターキー (CMK) を使用する場合にアカウントに請求します。

  8. 対象 このシークレットがアクセスするRDSデータベースを選択を選択し、インスタンスを選択します。 MyTestDatabaseInstance ステップ1で作成した。[] を選択します。

  9. [ 秘密の名前と説明 セクション、 秘密名、タイプ MyTestDatabaseMasterSecret. 選択 次へ.

  10. [Configure automatic rotation (自動ローテーションの設定)] セクションで、今のところローテーションを無効のままにしておきます。[] を選択します。

  11. [確認] セクションで詳細を確認し、[Store (保存)] を選択します。

    Secrets Manager は、新しいシークレットが含まれるようになったシークレットの一覧に戻ります。

ステップ3: 最初のシークレットの検証

シークレットを自動的にローテーションするように設定する前に、シークレットに正しい情報があり、データベースに接続できることを確認する必要があります。このチュートリアルでは、GUIベースのアプリケーションのインストール方法について説明します。 MySQL ワークベンチ 接続をテストします。使用しているオペレーティングシステムに適したクライアントをダウンロードします。

少なくとも、AWS CLI または Secrets Manager コンソールを使用してシークレットを取得することができます。次に、ユーザー名とパスワードを MySQL データベース クライアント。

データベース接続をテストするには

  1. のインストール後、 MySQLWorkBench クライアント ソフトウェアで、 MySQLWorkbench クライアントで へようこそ MySQLWorkbench インターフェース。

  2. [ MySQL 接続+ 表示するアイコン 新しい接続の設定.

  3. 接続名に「MyTestDatabaseInstance」と入力します。

  4. [ホスト名] に、データベースのエンドポイント (MyTestDatabase.hostname.region.rds.amazonaws.com など) を入力します。

    エンドポイントは、データベースの詳細ページで確認できます。[ Amazon RDS コンソール、選択 データベース 」セクション RDS > データベース > MyTestDatabaseInstance.

  5. [ポート] は、デフォルト値の 3306 のままにします。

  6. [ユーザー名] フィールドに、データベース用に作成したユーザー名を入力します (adminuser)。

  7. 選択 Test Connection データベースのパスワードを パスワード フィールド。

  8. 正しく構成されている場合、 MySQLWorkbench 接続成功のメッセージが表示されます。

  9. 選択 OK.

    トラブルシューティングのヒント

    [ MySQLWorkbench クライアントがデータベースに接続できない場合、そのデータベースとVPCに接続されているセキュリティ グループを確認する必要があります。セキュリティグループのデフォルトルールでは、すべてのアウトバウンドトラフィックを有効にしますが、ルールを定義することで明示的に許可したトラフィック以外のすべてのインバウンドトラフィックをブロックします。コンピュータをパブリックインターネットで実行している場合、セキュリティグループはデータベース通信を構成したインターネットから TCP ポートへのインバウンドトラフィックを有効にする必要があります (通常は 3306)。構成する場合 MySQL 別の TCP ポートを使用するには、セキュリティ ルールを一致させるように更新してください。

ステップ4: シークレットのローテーションを構成する

シークレットの初期認証情報が検証された後、最初のローテーションを設定し開始できます。

シークレットローテーションを設定するには

  1. [ Secrets Manager コンソール、シークレットを選択 MyTestDatabaseMasterSecret.

  2. シークレットの詳細ページで、[Rotation configuration (ローテーション設定)] セクションの [Edit rotation (ローテーションの編集)] を選択します。

  3. [Edit rotation configuration] (ローテーション設定の編集) ページで、[Enable automatic rotation] (自動ローテーションを有効化) を選択します。

  4. [Select rotation interval] (ローテーションの間隔の選択) に、[30 days] (30 日) を選択します。

  5. [ローテーションを実行するために使用されるシークレットを選択] で、[このシークレットを使用] を選択します。

  6. [保存] を選択します。Secrets Manager は、Lambda ローテーション関数の作成や Secrets Manager が関数を呼び出すことができるようにするロールのアタッチなど、シークレットのローテーションの設定を開始します。

  7. コンソール・ページで、 回転が構成されています メッセージが変更されるまで、 あなたの秘密 MyTestDatabaseMasterSecret は正常に保存され、シークレットローテーションが有効になります。

ステップ5: 正常なローテーションの確認

シークレットのローテーション後、シークレットの新しい認証情報がデータベースに接続できることが確認できます。

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

  2. 秘密を選ぶ MyTestDatabaseMasterSecret.

  3. [シークレット値の取得] を選択します。

  4. [パスワード] フィールドを見つけます。

    シークレットを正常にローテーションした場合、パスワードは元のシークレットではなく E4%I)rj)vmpRg)U}++=}GHAnNDD1v0cJ と同様のものに変更されます。

  5. データベースにアクセスするには、 MySQLWorkbench 接続を選択します。 MyTestDatabase.

  6. パスワードの入力を求められたら、Secrets Manager からパスワードをコピーして [パスワード] フィールドに貼り付けます。[OK] を選択します。

    新しいパスワードを使用してデータベースに正常にアクセスし、ローテーションシークレットが機能することを検証できます。

ステップ6: クリーンアップ

重要

チュートリアル チュートリアル: マスター シークレットを使用したユーザー シークレットのローテーション も実行する場合は、そのチュートリアルも完了するまではこれらのステップを実行しないでください。

データベースとシークレットにより AWS 請求書の料金が発生する可能性があるため、チュートリアルの実験が完了したら、このチュートリアルで作成したデータベースインスタンスとシークレットを削除する必要があります。

シークレットの削除

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

  2. シークレットのリストで、 MyTestDatabaseSecret このチュートリアル用に作成したシークレット。

  3. [Actions] (アクション) を選択してから、[Delete secret] (シークレットの削除) を選択します。

  4. [Schedule secret deletion (シークレットの削除をスケジュールする)] ダイアログボックスで、[Enter a waiting period (待機期間の入力)] に可能な最小値、7 を入力します。

  5. [Schedule deletion] を選択します。

    復旧期間の日数が経過すると、Secrets Manager はシークレットを完全に削除します。

データベースインスタンスを削除するには

  1. https://console.aws.amazon.com/rds/ にある Amazon RDS コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. 使用可能なインスタンスのリストで、 MyTestDatabaseInstance このチュートリアル用に作成したインスタンス。

  4. [Instance actions] を選択し、[Delete] を選択します。

  5. [Delete DB Instance (DB インスタンスの削除)] ページの、[Options (オプション)] セクションで、[Create final snapshot (最終スナップショットの作成)] に [No (いいえ)] を選択します。

  6. すべてのデータが失われることの確認を選択し、[削除] を選択します。