GuardDuty のマルチアカウント運用で使うべきアカウント管理機能

AWS運用自動化サービス「Cloud Automator」

技術2課の多田です.

Amazon GuardDuty(以下, GuardDuty)をマルチアカウントで有効化している場合, 各アカウントの GuardDuty のイベントを管理・運用のためにアカウント管理機能を試す機会があったので今回はその内容をまとめていきます.

GuardDuty のサービス概要

そもそも GuardDuty とは機械学習を用いたフルマネージドのセキュリティ脅威検知のためのサービスです.様々な機能がありますが,資料の37ページ以降で今回の機能が紹介されています.

アカウント管理機能の概要

本機能は GuardDuty を有効化しているアカウントのイベントを統合管理するための機能です.マスターアカウントという管理アカウントと,被管理アカウントのメンバーアカウントで構成されます.

Amazon GuardDuty の AWS アカウントの管理

本機能のメリット

本機能のメリットは, 各メンバーアカウントのイベントをマスターアカウントで一元管理可能です.なお,メンバーアカウント上ではメンバーアカウントのイベントのみ表示されます.マスターアカウントの管理イメージとしては下の画像のような表示がされます.

マスターアカウントのイベント管理

また,各メンバーアカウントで発生したセキュリティ脅威イベントをマスターアカウントの CloudWatch Events に統合して通知も可能なため Lambda などと組み合わせてアカウントごとに検知イベントを管理するのも個々でイベント管理するより管理負担が少ないです.

Amazon CloudWatch Events を使用した Amazon GuardDuty 結果のモニタリング

 

設定方法

GUI での設定方法

マルチアカウントでの GuardDuty の管理にメリットしかない本機能ですが,設定もマネジメントコンソール間で2ステップで簡単に設定可能です.

1. マスターアカウントでメンバーアカウントに対して関連付けの有効化を行うための招待を送る
2. メンバーアカウントでマスターアカウントからの招待を承認する.

複数のアカウントで同時に GuardDuty を有効にする

AWS 提供されているソリューションでの設定方法

ただ,多数のメンバーアカウントの設定がある場合は以下の2つの方法があります.

1.Python スクリプトによる有効化

スクリプトの詳細は下記リンク先にあります.
aws-samples/amazon-guardduty-multiaccount-scripts

2.CloudFormation の StackSets 機能を使って有効化

StackSets 機能を使うためにはあらかじめ準備が必要ですが,CloudFormation テンプレートを用意する必要なく標準機能として提供されているため, Python に慣れていない方はこちらの選択肢を使うのがオススメです.ただ,StackSets 機能がないリージョンでは個別の設定が必要な点は注意です.2019年8月30日時点ではストックホルムリージョンの GuardDuty は StackSets による有効化ができないため個別に マスターアカウント機能をする必要があります.

 まとめ

GuardDuty のアカウント管理機能の概要と設定方法および運用上の注意点をまとめました.マスターアカウントでの操作が中心になる動作仕様を理解できていれば,メリットが多い機能なのでマルチアカウントでの運用を行う場合は有効化するのがオススメです.

AWS運用自動化サービス「Cloud Automator」