はじめに
こんにちは。なじむです。
今回もクラスメソッドさんのブログ記事、AWSアカウントを作ったら最初にやるべきこと ~令和元年版~を参考にさせていただき、AWSでの初期設定をCloudFormationで実施していこうという記事を書いていこうと思います。
今回は「Security Hubの有効化」です。
前提
サンプルコードで実行しているのは以下です。
- SecurityHubを有効にする
- SNSを設定する(今回はメール通知)
- SecurityHubでイベントを検知した際にCloudwatchイベントを通じてSNSに通知する。
ここまで記事を書いていて思ったのですが、SecurityHubで通知を有効にしておけば、GuardDuryで通知しなくてもよくなるのですねきっと。。。
これはConfigやMacieでも同じことが言えるので、GuardDutyやConfig、Macieを有効化にし、通知はSecurityHubからというのが良いのですね。きっと。
サンプルコード
---
AWSTemplateFormatVersion: 2010-09-09
Description: Security Hub
#------------------------------
# Parameters: Your resource list
#------------------------------
Parameters:
EMailAddress: # スタック作成時に任意のメールアドレスを指定してください。
Type: String
Description: Specifies your E-Mail for notify SecurityHubAlert.
#------------------------------
# Resources: Your resource list
#------------------------------
Resources:
# IAM
## Service Role
ServiceLinkedRoleForSecurityHub:
Type: AWS::IAM::ServiceLinkedRole
Properties:
AWSServiceName: securityhub.amazonaws.com
Description: A service-linked role required for AWS Security Hub to access your resources.
# SecurityHub
SecurityHub:
Type: AWS::SecurityHub::Hub
# SNSを作成する(今回はメール通知)
## Topic
SNSTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: SwcurityHubTopic #任意の名前に変更してください
Subscription:
- Endpoint: !Ref EMailAddress
Protocol: email
## Topic Policy
SNSTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Id: default_policy_ID
Version: 2012-10-17
Statement:
- Sid: default_statement_ID
Effect: Allow
Principal:
AWS: "*"
Action:
- SNS:GetTopicAttributes
- SNS:SetTopicAttributes
- SNS:AddPermission
- SNS:RemovePermission
- SNS:DeleteTopic
- SNS:Subscribe
- SNS:ListSubscriptionsByTopic
- SNS:Publish
- SNS:Receive
Resource: !Ref SNSTopic
Condition:
StringEquals:
AWS:SourceOwner: !Ref AWS::AccountId
- Sid: AWSEvents_AlertSecurityHubFindings_Id123
Effect: Allow
Principal:
Service:
- events.amazonaws.com
Action: sns:Publish
Resource: !Ref SNSTopic
Topics:
- !Ref SNSTopic
# CloudWatch Events for SecurityHub
SecurityHubCWERule:
Type: AWS::Events::Rule
Properties:
Name: AlertSecurityHubFindings
Description: Alert to SNS topic when find threats by SecurityHub
EventPattern: {
"source": [
"aws.securityhub"
],
"detail-type": [
"Security Hub Findings - Imported"
]
}
Targets:
- Arn: !Ref SNSTopic
Id: Id123
実行結果
GuardDuryの時と同じため省略します。
まとめ
SecurityHubはあくまでもGuardDutyやCondigなどの結果をまとめて表示してれる機能のため、有効にしたからと言って特別何かが起きるわけではありません。情報をまとめて見れるだけです。
次回以降はSecurityHubと連携しているConfig、Inspector、Macieについて記載していこうと思います。