Dome9 の Audit イベントを Slack に通知してみた

CloudGuard Dome9のAudit LogsをSlackに通知してみました。
2021.04.08

こんにちは、岩城です。

CloudGuard Dome9(以下、Dome9)のAudit Logsには様々なログが出力されます。このログには、例えばDome9外からのセキュリティグループの変更や、新しいセキュリティグループの追加を検知したイベントが含まれます。

これらのイベントが出力された場合に通知する機能がDome9標準で用意されており、メール通知可能です。

さらにIntegrationsのSNSを利用すれば、Dome9 -> SNS -> Lambda -> Slackという感じでSlackに通知できます。

本エントリでは、上記構成を実際に設定してみたいと思います。

やってみた

SNS -> Lambda -> Slackの構成については、AWSのナレッジセンターに情報があります。本エントリではそのとおり設定していきます。

ウェブフックを使用して Amazon SNS メッセージを Amazon Chime、Slack、または Microsoft Teams に発行する方法を教えてください。

Slack

LambdaからSlackチャンネルへ通知するために、当該チャンネルへのIncoming Webhookの追加およびWebhook URLを控えておきます。このURLはこの後Lambdaのコード内で使用します。

テスト用にdome9-notificationというチャンネルを用意しておきました。これを指定して追加します。

細かい設定は不要です。そのまま設定を完了させます。Webhook URLが表示されますので控えておきます。

設定が完了するとSlackチャンネルで以下のようなメッセージが出力されます。

SNS

次にSNSトピックを設定します。

トピックを設定するにあたって、Dome9の情報が必要になるため、まずはDome9コンソールを確認します。SETTINGS > Integrations > SNSのENABLEを押します。

トピック名の例とアクセスポリシーに設定するAWSアカウントIDを控えておきます。

必要な情報が揃ったのでトピックを作成します。 タイプはスタンダードを選択し、名前は何でも良いですがDome9コンソールの例のとおりCloudGuard-feedとします。

アクセスポリシーの設定で、トピックにメッセージを発行できるユーザーを定義します。

指定されたAWSアカウントのみを選択し、Dome9コンソールに記載されているAWSアカウントIDをコピー&ペーストします。

トピックを作成して完了です。トピックのARNを控え、Dome9に設定しておきます

Lambda

次にLambdaファンクションを作成します。

関数名は適当で構いません。SNSトピックと同じ名前にしました。ランタイムはPython 3.6です。

実行ロールは基本的なLambdaアクセス権限で新しいロールを作成を選択します。

SNSトピックをトリガーにLambdaファンクションを実行するため、トリガーを追加します。

トリガーの設定で、SNSおよび先程作成したトピックを選択し追加します。

コードを設定します。urlに控えておいたWebhook URLを設定します。channelは通知先となるdome9-notificationを設定し、Deployします。

Dome9

最後にDome9から通知したいイベントを選択します。

本エントリでは、以下のNetwork Securityイベントを通知するように設定しました。

  • Tamper protection
    • Dome9外からセキュリティグループの変更を検知し、設定内容をDome9上の設定に巻き戻したことを示すイベント
  • Dynamic access leases
    • Dome9から一時的にインバウンドルールにSSHを許可するルールが追加されたことを示すイベント
  • Security group policy changes (in CloudGuard)
    • Dome9からセキュリティグループの変更があったことを示すイベント
  • Security group policy changes (not in CloudGuard)
    • Dome9外からセキュリティグループの変更があったことを示すイベント

これですべての設定が完了しました。

テスト

それではテストしてみましょう。

テストのシナリオは、Dome9コンソールから、あるセキュリティグループに対して一時的にSSHを許可するルールを追加し、それが通知されることを確認します。

NETWORK SECURITY > Access LeasesからセキュリティグループのGET ACCESSをクリックします。5分位待つとSlackチャンネルへ以下のような通知が行われます。

おわりに

設定するにあたり一番ハードルが高いと感じられたLambdaについては、AWSのナレッジセンターに情報があったため、比較的簡単に設定できるかと思います。

通知内容については加工していないため、CSV形式で可読性に欠けてそうです。運用を考えるとLambdaのコードを修正して、通知内容を加工した方が良さそうです。

本エントリが、どなたかのお役に立てれば幸いです。