Amazon Inspectorの脆弱性検知対象を絞り、検知内容をメール通知させてみた

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

こんにちは!大崎です!
みなさんはEC2の脆弱性検知として、Amazon Inspectorの導入を考えたことはないでしょうか?
「検知対象をどのように絞るのか分からない…検知結果を運用担当者などにメール通知したいが方法がわからない…」今回はそんな疑問にお答えしていきたいと思います。

本記事でわかること

  • Amazon Inspectorとは
  • Amazon Inspectorの対象を絞る方法
  • 検知結果をメール通知する方法

Amazon Inspectorとは

★Amazon Inspectorの概要
 Amazon Inspectorは、EC2インスタンスやコンテナイメージ(ECR)に対して
 脆弱性スキャンやセキュリティベストプラクティスのチェックを自動で行うサービスです。

★主な機能
 ・脆弱性スキャン(Vulnerability Scanning)
  OSやアプリケーションに存在する既知の脆弱性(CVE)を検出。

 ・リスク評価と優先順位付け
  発見された脆弱性に対してCVSSスコアを用いてリスクを評価。
  重要度に応じて対応の優先順位を決定可能。

 ・統合と通知
  Amazon EventBridgeやSNSと連携して通知を送信。

★ 利用の前提条件
 EC2インスタンスには SSM Agent がインストール・有効化されていること。
 IAMロールに適切なポリシー(AWS管理ポリシーのAmazonSSMManagedInstanceCore)が付与されていること。

Amazon Inspectorの対象を絞る方法

基本的には上記「利用の前提条件」を満たしていると自動的に検知対象となります。

検知対象を絞りたい場合は、検知したくないEC2に「InspectorEC2Excludion」キーのタグを付与する必要があります。(タグの値は指定がないため、TRUEなど理解しやすい値を設定いただければと思います。)

検知結果をメール通知する方法

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

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

Resources:
  InspectorFindingSNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: InspectorFindingTopic

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

  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 InspectorFindingSNSTopic

  InspectorFindingRule:
    Type: AWS::Events::Rule
    Properties:
      Name: InspectorFindingRule
      Description: Trigger on HIGH or CRITICAL Inspector2 findings
      EventPattern:
        source:
          - aws.inspector2
        detail-type:
          - Inspector2 Finding
        detail:
          severity:
            - HIGH
            - CRITICAL
          status:
            - ACTIVE
      Targets:
        - Arn: !Ref InspectorFindingSNSTopic
          Id: "InspectorFindingSNSTarget"
          RoleArn: !GetAtt EventBridgeToSNSRole.Arn
          InputTransformer:
            InputPathsMap:
              description: "$.detail.description"
              region: "$.detail.resources[0].region"
              resource_id: "$.detail.resources[0].id"
              severity: "$.detail.severity"
              time: "$.time"
              title: "$.detail.title"
            InputTemplate: |
              {
                "重要度": "<severity>",
                "発生日時": "<time>",
                "検出タイプ": "<title>",
                "リージョン": "<region>",
                "タイプの説明": "<description>",
                "message": "詳細は Inspector コンソール( https://console.aws.amazon.com/inspector/v2/home?region=<region>#/findings/instances/<resource_id> )を確認してください。"
              }

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

まとめ

今回は、脆弱性検知対象の絞り方と検知した脆弱性のメール通知方法についてご紹介しました。

上記の対応を行うことで、任意のEC2への脆弱性検知を行いその結果を運用担当者へメール通知をすることができます。

運用やシステム構成に合わせて、ぜひこの仕組みを活用してみてください。

コメント

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