スキップしてコンテンツを表示

AWS アカウントのルートユーザーログインアラート用の EventBridge ルールを作成する方法を教えてください。

所要時間3分
0

アカウントのセキュリティの一環として、誰かが AWS マネジメントコンソールを使用して AWS アカウントのルートユーザーにアクセスしたときに E メール通知を受け取りたいです。

解決策

アカウントルートユーザーのログインアクティビティをモニタリングするには、AWS CloudTrail ログの UserIdentity 要素をモニタリングする Amazon EventBridge ルールを作成します。EventBridge ルールは Amazon Simple Notification Service (Amazon SNS) を使用して、ルートユーザーが AWS マネジメントコンソールにサインインしたときに通知を送信します。

CloudTrail が API コールを EventBridge に送信するには、EventBridge ルールと同じ AWS リージョンに証跡を作成する必要があります。証跡の管理イベントを設定して、[読み取りと書き込み] または [書き込み] のみにします。

EventBridge ルールと SNS トピックを作成するには、Amazon SNS と EventBridge を使用できます。または、AWS CloudFormation を使用します。

Amazon SNS と EventBridge を使用する

Amazon SNS トピックとサブスクリプションを作成する

次の手順を実行します。

  1. Amazon SNS トピックを作成します。
  2. トピックにエンドポイントをサブスクライブします。
  3. E メールの受信ボックスに AWS の確認メールが届いているか確認します。
  4. E メールで [サブスクリプションの確認] を選択して SNS サブスクリプションリクエストを確認します。「サブスクリプションが確認されました」というメッセージが送信されます。

EventBridge ルールを作成する

次の手順を実行します。

  1. 米国東部 (バージニア北部) リージョンで EventBridge コンソールを開きます。

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

  3. [名前][説明] に、ルールの名前と説明をそれぞれ入力します。

  4. [ルールタイプ][イベントパターンを含むルール] を選択し、[次へ] を選択します。

  5. [イベントソース][AWS イベントまたは EventBridge パートナーイベント] を選択します。

  6. [イベントパターン][カスタムパターン (JSON エディタ)] を選択します。

  7. [イベントパターン] JSON エディタで、次のルートユーザーログインパターンを入力します。

    {
    
    "detail-type": ["AWS Console Sign In via CloudTrail"],
    
    "detail": {
    
    "userIdentity": {
    
    "type": ["Root"]
    
    }
    
    }
    
    }
  8. [次へ] を選択します。

  9. ターゲットに次の設定を行います。
    [ターゲットタイプ] には、[AWS サービス] を選択します。
    [ターゲットを選択] で、[SNS トピック] を選択します。
    [トピック] で作成したトピックを選択します。

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

  11. (オプション) ロールにタグを追加します。

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

  13. ルールの詳細を確認し、**[ルールを作成]**を選択します。

CloudFormation を使用する

CloudFormation テンプレートを作成する

EventBridge ルールと SNS トピックを作成するには、次の YAML テンプレートをテキストエディタに入力し、ファイルを保存します。

# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

AWSTemplateFormatVersion: '2010-09-09'
Description: ROOT-AWS-Console-Sign-In-via-CloudTrail
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
    - Label:
        default: Amazon SNS parameters
      Parameters:
      - Email Address
Parameters:
  EmailAddress:
    Type: String
    ConstraintDescription: Email address required.
    Description: Enter an email address you want to subscribe to the Amazon SNS topic
      that will send notifications if your account's AWS root user logs in.
Resources:
  RootActivitySNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      DisplayName: ROOT-AWS-Console-Sign-In-via-CloudTrail
      Subscription:
      - Endpoint:
          Ref: EmailAddress
        Protocol: email
      TopicName: ROOT-AWS-Console-Sign-In-via-CloudTrail
  EventsRule:
    Type: AWS::Events::Rule
    Properties:
      Description: Events rule for monitoring root AWS Console Sign In activity
      EventPattern:
        detail-type:
        - AWS Console Sign In via CloudTrail
        detail:
          userIdentity:
            type:
            - Root
      Name:
        Fn::Sub: "${AWS::StackName}-RootActivityRule"
      State: ENABLED
      Targets:
      - Arn:
          Ref: RootActivitySNSTopic
        Id: RootActivitySNSTopic
    DependsOn:
    - RootActivitySNSTopic
  RootPolicyDocument:
    Type: AWS::SNS::TopicPolicy
    Properties:
      PolicyDocument:
        Id: RootPolicyDocument
        Version: '2012-10-17'
        Statement:
        - Sid: RootPolicyDocument
          Effect: Allow
          Principal:
            Service: events.amazonaws.com
          Action: sns:Publish
          Resource:
          - Ref: RootActivitySNSTopic
      Topics:
      - Ref: RootActivitySNSTopic
Outputs:
  EventsRule:
    Value:
      Ref: EventsRule
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-RootAPIMonitorEventsRule"
    Description: Event Rule ID.

CloudFormation スタックを作成する

CloudFormation コンソールを使用して、CloudFormation スタックを作成します。[スタックの作成] ページで [テンプレートファイルをアップロード] を選択して作成したテンプレートをアップロードします。[スタックオプションの設定] ページの [通知オプション] に、AWS からの通知を受信させたい E メールアドレスを入力します。

SNS の設定をテストする

次の手順を実行します。

  1. AWS マネジメントコンソールからサインアウトして、アカウントルートユーザーとして AWS マネジメントコンソールにサインインします。
  2. E メールの受信トレイで AWS の通知メッセージを確認します。
  3. ログインイベントの詳細を含む CloudTrail レコードユーザーアイデンティティsourceIPAddressMFAUsed に注意してください。

**注:**通知を受け取らないようにするには、作成した CloudFormation スタックを削除します。

関連情報

How to Receive Notifications When Your AWS Account’s Root Access Keys Are Used

Monitor and Notify on AWS Account Root User Activity

AWS::CloudWatch::Alarm

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ