AWS Security Hubの検知対象を絞り、検知内容をメールで通知させてみた

AWS
この記事は約7分で読めます。

こんにちは!大崎です!
みなさんはAWSのセキュリティ確認として、AWS Security Hubの導入を考えたことはないでしょうか?
「AWS Security Hubで検知した結果を運用担当者などにメール通知したいが方法がわからない…より重要な検知対象のみにアラートメール対象を絞りたいが方法がわからない…」
今回はそんな疑問にお答えします。

本記事でわかること

  • AWS Security Hubとは
  • AWS Security Hubの検知結果を絞り込んだうえでメール通知する方法
  • 動作検証

AWS Security Hubとは

★AWS Security Hubの概要
 AWS Security Hubは、セキュリティベストプラクティスに基づく自動チェックサービスで、潜在的なセキュリティ脅威をリアルタイムで検出します。

★主な機能
・セキュリティ状況が「見える化」されます。
複数のAWSセキュリティサービスの結果を一元管理し、問題点を自動で見つけるダッシュボードとして利用可能です。

・セキュリティ状況の一元管理が可能です。
以下のようなAWSサービスの検知結果を1か所に集約します。
 - Amazon GuardDuty(脅威検知)
 - AWS Inspector(脆弱性検査)
 - Amazon Macie(機密データ検出)
 - IAM Access Analyzer
 - Firewall Manager など
➡ 各サービスを個別に確認する必要がなくなります。

・統合と通知
 Amazon EventBridgeやSNSと連携して通知を送信することが可能です。

★ 利用の前提条件
AWS Configが有効である必要があります。

AWS Security Hubの検知結果を絞り込んだうえでメール通知する方法

 AWS Security Hub単独では通知機能は実装できないため、検知結果を連携するEventBridgeと実際に通知するSNSを用意します。今回は両サービスを簡単に実装できるようcloudformationのコードを共有します。重要な検知内容のみを通知するため、重要度が「CRITICAL」か「HIGH」の場合にのみ通知するようにしています。(コードの50~51行目で指定しています。)


AWSTemplateFormatVersion: '2010-09-09'
Description: EventBridge rule for AWS Security Hub findings with email notification

Resources:
  SecurityhubFindingSNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: SecurityhubFindingTopic

  SecurityhubFindingEmailSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Protocol: email
      Endpoint: test@test.com # 担当者のメールアドレス入力
      TopicArn: !Ref SecurityhubFindingSNSTopic

  EventBridgeToSNSRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: EventBridgeToSNSPublishRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: events.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: AllowSNSPublish
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - sns:Publish
                Resource: !Ref SecurityhubFindingSNSTopic

  SecurityhubFindingRule:
    Type: AWS::Events::Rule
    Properties:
      Name: SecurityhubFindingRule
      Description: Trigger on HIGH or CRITICAL SecurityHub findings
      EventPattern: >-
        {
          "source": ["aws.securityhub"],
          "detail-type": ["Security Hub Findings - Imported"],
          "detail": {
            "findings": {
              "Severity": {
                "Label": ["CRITICAL", "HIGH"]
              }
            }
          }
        }
      Targets:
        - Arn: !Ref SecurityhubFindingSNSTopic
          Id: SecurityhubFindingSNSTarget
          RoleArn: !GetAtt EventBridgeToSNSRole.Arn
          InputTransformer:
            InputPathsMap:
              account: $.detail.findings[0].AwsAccountId
              description: $.detail.findings[0].Description
              productName: $.detail.findings[0].ProductArn
              region: $.detail.findings[0].Region
              severityLabel: $.detail.findings[0].Severity.Label
              time: $.detail.findings[0].FirstObservedAt
              title: $.detail.findings[0].Title
            InputTemplate: |
              "Security Hubの重要度 <severityLabel> の検出がありました"

              "アカウントID: <account>"
              "タイトル: <title>"
              "検出時刻: <time>"
              "リージョン: <region>"
              "詳細:<description>"

上記設定の上でAWS Security Hub検知すると以下のようなメール通知がされます。通知文や通知対象はカスタマイズが可能ですのでお好みの内容に変更してみてください。

まとめ

今回は、AWS SecurityHubの検知対象を絞り、検知内容をメール通知する方法についてご紹介しました。
上記の対応を行うことで、重要な検知内容を運用担当者へメール通知を行うことができます。
運用やシステム構成に合わせて、ぜひこの仕組みを活用してみてください。

コメント

タイトルとURLをコピーしました