削除予定のシークレットのモニタリング - AWS Secrets Manager

削除予定のシークレットのモニタリング

AWS CloudTrail、Amazon CloudWatch Logs、Amazon Simple Notification Service (Amazon SNS) の組み合わせを使用すると、削除が保留されているシークレットョンにアクセスが試みられたときに、通知するアラームを作成できます。アラームから通知を受け取ると、削除が本当に必要かどうかを時間をかけて判断するために、シークレットの削除をキャンセルしなければならない場合があります。調査の結果、シークレットが実際にまだ必要であるため、シークレットが保存されたままになる可能性があります。または、使用する新しいシークレットの詳細を使用して、ユーザーを更新する必要がある場合があります。

次の手順は、特定のエラーメッセージを生成する GetSecretValue オペレーションのリクエストが CloudTrail ログ ファイルに書き込まれた場合に、通知を受け取る方法を説明します。他の API オペレーションは、アラームをトリガーせずにシークレットで実行できます。この CloudWatch アラームは、古い認証情報を使用しているユーザーまたはアプリケーションを示す可能性のある使用を検出します。

これらの手順を開始する前に、AWS リージョン と、AWS Secrets Manager API リクエストをモニタリングするアカウントで、CloudTrail をオンにする必要があります。手順については、AWS CloudTrail ユーザーガイドCreating a trail for the first time を参照してください。

ステップ 1: CloudTrail ログファイルの CloudWatch Logs への配信を設定します。

CloudTrail ログファイルの CloudWatch Logs への配信を設定します。これにより、CloudWatch Logs は削除が保留されているシークレットを取得する、Secrets Manager API リクエストをモニタリングできます。

CloudTrail ログファイルの CloudWatch Logs への配信を設定するには

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

  2. 上部のナビゲーションバーで、シークレットを監視する AWS リージョンを選択します。

  3. 左のナビゲーションペインで [Trails] (証跡) を選択し、CloudWatch 向けに設定する証跡の名前を選択します。

  4. [Trails Configuration] (証跡の設定) ページで、[CloudWatch Logs] のセクションまでスクロールダウンし、編集アイコン ( ) を選択します。

  5. [New or existing log group (新規または既存のロググループ)] にロググループの名前 (CloudTrail/MyCloudWatchLogGroup) を入力します。

  6. IAM ロールには、CloudTrail_CloudWatchLogs_Role というデフォルトのロールを使用できます。このロールには、CloudTrail イベントをロググループに配信するために必要なアクセス許可を持つ、デフォルトロールポリシーがあります。

  7. [続行] を選択して設定を保存します。

  8. [AWS CloudTrail will deliver CloudTrail events associated with API activity in your account to your CloudWatch Logs log group] ( がアカウントでの API アクティビティに関連する CloudTrail イベントを CloudWatch Logs のロググループに配信する) ページで、[Allow] (許可) を選択します。

ステップ 2: CloudWatch アラームを作成する

Secrets Manager の GetSecretValue API オペレーションリクエストが、削除保留中のシークレットにアクセスした場合に通知を受け取るには、CloudWatch アラームを作成し、通知を設定する必要があります。

CloudWatch アラームを作成するには

  1. 次の場所から CloudWatch コンソールにサインインします (https://console.aws.amazon.com/cloudwatch/)。

  2. 上部のナビゲーションバーで、シークレットを監視する AWS リージョンを選択します。

  3. 左のナビゲーションペインで [Logs] を選択します。

  4. [ロググループ] のリストで、以前の手順で作成したロググループ ([CloudTrail/MyCloudWatchLogGroup] など) の横にあるチェックボックスを選択します。その後、[Create Metric Filter] を選択します。

  5. [Filter Pattern] に、以下を入力するか貼り付けます。

    { $.eventName = "GetSecretValue" && $.errorMessage = "*secret because it was marked for deletion*" }

    [Assign Metric] を選択します。

  6. [Create Metric Filter and Assign a Metric] ページで、次の操作を実行します。

    1. [メトリクス名前空間] に「CloudTrailLogMetrics」と入力します。

    2. [メトリクス名] に「AttemptsToAccessDeletedSecrets」と入力します。

    3. [Show advanced metric settings (メトリクスの詳細設定の表示)] を選択した後、必要に応じて [Metric Value (メトリクス値)] に「1」と入力します。

    4. [フィルタの作成 ]を選択します。

  7. フィルタボックスで、[Create Alarm] を選択します。

  8. [Create Alarm] ウィンドウで、以下の操作を行います。

    1. [Name] (名前) に、「AttemptsToAccessDeletedSecretsAlarm」と入力します。

    2. [次の時:] の [] で [>=] を選択し、「1」と入力します。

    3. [Send notification to:] の横で、次のいずれかを実行します。

      • 新しい Amazon SNS トピックを作成し使用するには、[New list] (新しいリスト) を選択し、新しいトピック名を入力します。[Email list:] に、E メールアドレスを少なくとも 1 つ入力します。カンマで区切って、複数の E メールアドレスを入力できます。

      • 既存の Amazon SNS トピックを使用するには、使用するトピックの名前を選択します。リストが存在しない場合は、[リストを選択] を選択します。

    4. [Create Alarm] を選択します。

ステップ 3: CloudWatch アラームをテストする

アラームをテストするには、シークレットを作成し、それを削除用にスケジュールします。次に、シークレット値の取得を試みます。 あなたがアラームで設定したアドレスに間もなく E メールが届きます。これは、削除予定のシークレットの使用について警告します。