クロスアカウント環境下にて、GuardDutyをONにしておき
集約するアカウントをGuardDutyのアカウント機能でMasterとして
それ以外のアカウントのGuardDutyをMemberと設定している場合。
上記のような環境は良くある構成だと思いますし、以下公式にもある通り
MasterのアカウントにおいてCloudWatchEvents(以下「CWE」)と
Lambdaで通知を実装しているかと存じます。
https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings_cloudwatch.html
その場合、CWEでハンドルできるのは集約アカウント上のGuardDutyが
検知したイベントのみです。Memberとしたアカウント上のGuardDutyイベントは
マネジメントコンソール上は参照可能ですが、CWEでハンドルできません。
GuardDutyでMaster-Memberの制御を入れればMaster側にイベントが集約できるかと
思っていましたが、各アカウントごとにCWEを設定する必要があります。
集約アカウントにおけるCWEのRule
{
"source": [
"aws.guardduty"
],
"detail-type": [
"GuardDuty Finding"
]
}
Masterアカウント側のCWEは上記サンプルイベントを検知できず・・・
先日、GuardDutyにS3へ書き込みする機能がリリースされました。クロスアカウント環境において
GuardDutyの通知も集約したい場合は集約アカウント上にバケットを作成し
各アカウントからそのバケットに対してイベントをPUTして、バケットのPUTイベントを
Lambdaでハンドルして読み込み/解析するのが一番単純な形かと存じます。
2020/03/06 追記しました
試したところメンバー側のイベントをマスター側のCWEで取得できるようになりました。
クロスアカウント環境下においてCWEでGuardDutyのイベントを取得しようとした場合
マスターアカウント分しか取得できない、使うべきでないと書きましたが
現時点ではメンバーアカウントのイベントも取得できるようになったようです。