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



コメント