ControlTower⑧GuardDutyの有効化

## ControlTower関連リンクまとめ
[・ControlTower①マルチアカウント環境をセットアップする](https://qiita.com/tonkatsu_oishi/items/6890ecc24c3b3bf8ee32)
[・ControlTower②環境確認](https://qiita.com/tonkatsu_oishi/items/b6dc3d548461d21b440d)
[・ControlTower③SSOの確認・アカウントの追加・削除](https://qiita.com/tonkatsu_oishi/items/281ad127699115ff54c3)
[・ControlTower④ガードレールの設定](https://qiita.com/tonkatsu_oishi/items/4e7be29ffa6553322c65)
[・ControlTower⑤Auditアカウントに作成されるリソースについて](https://qiita.com/tonkatsu_oishi/private/82811c94ebdc6fe509f2)
[・ControlTower⑥LogArchiveアカウントに作成されるリソースについて ](https://qiita.com/tonkatsu_oishi/private/5bb4fea771ec2a5e075b)
[・ControlTower⑦SecurityHubの有効化](https://qiita.com/tonkatsu_oishi/private/6fd0e2c73718057adcc9)
・ControlTower⑧GuardDutyの有効化←今ここ
[・ControlTower⑨CloudWatchクロスアカウントダッシュボードの設定](https://qiita.com/tonkatsu_oishi/private/a9a7c1becb8bfa832573)
[・ControlTower⑩LogArchiveアカウント内バケットへのCloudWatchLogs集約](https://qiita.com/tonkatsu_oishi/items/e8d8efc681cdc2616273)

## 設定する内容の確認
[前回](https://qiita.com/tonkatsu_oishi/private/6fd0e2c73718057adcc9)の記事では、ControlTower環境でSecurityHubを有効化し、セキュリティチェック結果をAuditアカウントに集約する設定を確認しました。今回は、各アカウントでGuardDutyを有効化し、Auditアカウントに集約する手順を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/fba61c40-dffe-0c9a-dbc5-750bb40b8387.png)

## ControlTower環境でのGuardDutyの有効化手順
SecurityHub同様、GuardDutyもOrganizationsと統合されるサービスです。
Organizationsと統合されるサービスについては、[ユーザーズガイド](https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_integrate_services_list.html)をご参照ください。GuardDutyをAuditアカウントに集約する為に、まずは管理（root）アカウントでGuardDutyの有効化を行います。

### マスターアカウントでGuardDutyを有効化する
管理(root）アカウントにログインし、Organizationsのサービスページに移動します。
左メニューの「サービス」から、サービス一覧を表示します。
GuardDutyはサービス一覧の一番上に表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/64981e87-62b2-12bd-7707-628af29e6148.png)

サービス名のリンクを押下すると、信頼されたアクセスの設定画面に移動できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/00b720be-95ef-3394-250f-7a6cd06e98b2.png)
今回は順を追ってGuardDutyの設定を行う為、「追加のセットアップタスクを実行せずにAmazonGuardDutyの信頼されたアクセスを有効にするオプションを表示します」のチェックボックスにチェックを入れます。
テキストボックスに指定の文字列を入力し、「信頼されたアクセスを有効にする」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/38727e12-8111-e044-a7f5-1709406f1a56.png)

上部に「Amazon GuardDuty に対する信頼されたアクセスを正常に有効にしました」と表示されることを確認します。次はGuardDutyのサービスページからサービスの有効化、管理の委任設定を行いましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/dd965530-b7bb-4bdc-10dd-974c7df51ae9.png)

### マスターアカウントでGuardDutyの有効化・委任設定を行う
GuardDutyのサービスページに移動します。
トップページに表示されている「今すぐ始める」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/1ab4abe7-2a2f-cfee-bb40-1c2acd3abd43.png)

GuardDutyの設定画面が表示されます。
「委任された管理者」のテキストボックスに、AuditアカウントのアカウントIDを入力し「委任」を押下します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/ba6508ea-4070-70d4-34ca-18d14b96980d.png)
「委任」ボタンを押下ししばらくすると、「Organization の GuardDuty を代行管理するアカウントの権限が付与されました。」と表示されます。「GuardDutyの有効化」ボタンを押下します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/7b1426f8-9349-127e-9159-239f3bc062a2.png)

これで、GuardDutyの有効化が完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/8e14df90-a283-bdb3-f0de-9be79bc913fa.png)
GuardDutyサービスページの左メニューから、「設定」に移動します。
「委任された管理者」としてAuditアカウントが指定されていることが確認できます。
これで管理（root）アカウント側の作業が完了です。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/44efd454-dca1-c1fd-bf59-06fb37a55eec.png)

### AuditアカウントのGuardDuty画面確認
管理（root）アカウントでの作業が完了したら、AuditアカウントにログインしGuardDutyのサービス画面に移動します。
管理アカウントでGuardDutyの委任設定を行ったため、AuditアカウントのGuardDutyは既に有効化されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/a48be448-e00f-2f00-d973-b997628b2dcd.png)
左メニューから「アカウント」に移動します。
Organizationsに所属するアカウントが一覧表示されていますが、招待を送信していない為まだステータスが「メンバーではありません」となっています。
上部の「このリージョンで Organization の GuardDuty を有効にする」から、「有効化」を押下します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/8c43f980-b0ed-c509-74c8-04664e341712.png)

確認画面が表示されます。「有効化」を押下すると、組織全体でOrganizationsが有効化されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f756b275-24e5-7b8b-ca87-a9ee62248f8e.png)

上部に「アカウントに対してGuardDutyの有効化が正常に行えた」という旨の通知が表示されることを確認します。各アカウントのステータスは「有効化が進行中」となっています。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/7bdc3a64-873f-932b-1619-d4d6733fd49a.png)

ブラウザを更新すると、GuardDutyの有効化が完了しています。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c3d6265b-5240-5edb-b2c5-793cc3dabaf4.png)

現在は、Organizations配下のアカウントが全てメンバーアカウントとして設定されています。GuardDutyの関連付けを外したいアカウントがあれば対象アカウントのチェックボックスにチェックを入れ、左上の「Actions」から「アカウントの関連付けを解除する」を押下します。
また、[S3保護](https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/s3_detection.html)や[Kubernetesへの保護](https://aws.amazon.com/jp/about-aws/whats-new/2022/01/amazon-guardduty-elastic-kubernetes-service-clusters/)もここから有効化できます。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/351a1b72-4934-ea55-e4bb-6bb74a8219f3.png)


### メンバーアカウントでのGuardDuty画面確認
LogArchiveアカウントにログインし、GuardDutyのトップページを表示します。
先ほど組織全体でGuardDutyの有効化を行ったため、LogArchiveアカウントでもGuardDutyの有効化が完了しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/896d507a-2691-e90e-d670-5e01c5c86fa3.png)

左メニューから「アカウント」に移動します。
LogArchiveアカウントはメンバーアカウントとなるため、Auditアカウントにより管理されていることが確認できます。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/bb3b8c97-d999-800e-7553-b99186cf82b8.png)

### Security HubとGuardDutyの統合について
前回～今回の記事で、SecurityHub・GuardDutyの有効化設定が完了しました。
[GuarDutyの検出結果はSecurityHubに送信される](https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/securityhub-integration.html)為、AuditアカウントのSecurityHubコンソールからGuardDutyの検出結果も確認できるようになっています。

GuardDutyとSecurityHubを両方有効化することで、自動的にサービスの統合が完了します。AuditアカウントのSecurityHubから「統合」を確認すると、GuardDutyの検出結果をSecurityHubで受け入れるよう設定が完了していることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/8a96bf45-69e3-f331-a3bd-eaebdba4418d.png)

GuardDuty・Config・SecuryHubの連携は、下記の構成図のようなイメージです。
SecurityHubはConfigルールでセキュリティチェックを実施しています。
また、GuardDutyはSecurityHubに検出結果を連携します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/dbbb1167-3088-1e7c-702e-53d463553f73.png)

現在は、SecurityHub・GuardDuty個別に通知を設定していません。
SecurityHubのセキュリティチェックはConfigルールにて実施されるため、Configからの通知によりSecurityHubのルールに違反しているリソースも検出できるようになっています。

しかしGuardDutyの検出結果に対しては通知の設定がされていない為、ControlTower環境にGuardDutyを追加した場合はSecurityHub（GuardDutyと統合）・Configそれぞれに通知を設定する形をご検討ください。

また、GuardDutyのログはデフォルトではS3バケットに出力されません。
GuardDutyのログを出力する場合は、S3バケットを作成した上で結果のエクスポート設定を行う必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c603ea11-4b90-ae97-968a-67f2a24a92fc.png)

GuardDutyのログを別アカウントに集約する場合の設定方法については[こちら](https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_exportfindings.html)をご参照ください。
ここまでお読みくださりありがとうございました。
次回は、CloudWatchのクロスアカウントダッシュボードを用いて各アカウントの監視をAuditアカウントに集約させる手順を確認します。