AWS Security HubのFindingをSlackに通知する

こんにちは、ひろかずです。

GuardDutyやMacieなどの通知をSlack通知する需要はあると思います。
それぞれ、Cloudwatch Eventsを設定して、Slack通知するLambdaを書いたりしていることでしょう。

re:Invent2018で発表されたAWS Security Hubは、GuardDutyやMacie、Inspectorの通知を統合するダッシュボードとして提供されています。
Security Hubに通知されたFindigsをSlack通知することで、通知設定をまとめることができそうなので、一筆書きます。

注意

AWS Security Hubは、2019/4/11現在、プレビュー中です。

参考ドキュメント

How to Enable Custom Actions in AWS Security Hub
AWS Security Hub - User Guide

ざっくり構成

工程

  1. AWS Security Hubを有効にする
  2. Cloud Formationテンプレートから、Slack通知Lambdaを構成する
  3. AWS Security Hubでカスタムアクションを作成する
  4. Cloudwatch Event Ruleを編集する
  5. 動作確認

前提条件

  • SlackのIncoming Webhookを設定できる権限を有していること
  • こちらの手順 を基に、Slack側の通知先チャンネルにIncoming Webhookを用意しておくこと
  • Security Hubを設定するリージョンで、AWS Configを有効にしていること

1. AWS Security Hubを有効にする

AWSマネジメントコンソールから、Security Hubの管理画面を表示

  • [Enable Security Hub]を選択

サービスロールを作成するよという注意書きが表示されます

  • [Enable AWS Security Hub]を選択

2. Cloud Formationテンプレートから、Slack通知Lambdaを構成する

AWSマネジメントコンソールから、CloudFormationの管理画面を表示

  • [Create Stack]を選択
  • 表示は、新しいCloudFormationのコンソールです

AWSのGitリポジトリから、CloudFormationテンプレートをダウンロード

  • [Template is ready]を選択
  • [Upload a template file]を選択
  • ダウンロードしたテンプレートをアップロード
  • [Next]を選択

スタック名を入力して、事前に用意したSlackのIncoming WebhookのURLと通知先チャンネル名、最低通知レベル(LOW,MED,HIGH)を入力

  • 今回はLOWレベル以上を通知するように設定

必要に応じて、タグを設定して[Next]を選択

IAM Roleが作成される旨の表示に同意のチェックを入れて、[Create stack]を選択

処理が完了するのを待ちます。

3. AWS Security Hubでカスタムアクションを作成する

(2019/7/8編集)このセクションは実施しなくても、通知はできます

AWSマネジメントコンソールから、Security Hubの管理画面を表示

  • [Settings] > [Custom actions] > [Create custom action]を選択

Name欄とDescription欄、Custom action ID欄にそれぞれ入力して[Ok]を選択

できました

4. Cloudwatch Event Ruleを編集する

AWSマネジメントコンソールから、Cloudwatchの管理画面を表示

  • [Rules] > [SecurityHubFindingsToSlack] > [Actions - Edit]を選択

Event Patternを以下のように編集して、[Configure details]を選択

  • (2019/7/8編集)GA後にイベントパターンが変わったようなので修正しました
{
  "source": [
    "aws.securityhub"
  ],
  "detail-type": [
    "Security Hub Findings - Imported"
  ]
}

[Update rule]を選択

5. 動作確認

Guard DutyのサンプルFindingsを作成してみます

  • Guard Duty管理画面の[Settings]を選択
  • Detector IDを控えておく

以下コマンドを実行

$ aws guardduty create-sample-findings --detector-id <Detector ID> --finding-types "Recon:IAMUser/ResourcePermissions" --region <Your Region>

しばらくすると、Slackに通知が来ました

しばらくすると、CISベンチマークの通知も来ましたね

Macieのカスタムアラートは、Security Hubへの通知はありませんでした。
プレビューなので、何かあるかもしれません。

完全とは言えませんが、FindingsをSlackに通知することができました。

今日はここまでです。
お疲れ様でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です