Amazon GuardDutyをはじめてみた

# はじめに

　`Amazon GuardDuty`はAWSのリージョン別脅威検出サービスです。
　CloudTrailログ、VPCフローログ、DNSログなど複数のAWSデータソースにより何百億件ものイベントを分析します。
　今回はGuard Dutyがどのようなものかコンソールにより有効化してみて、最後に`CloudFormation`でも作成してみます。

# GuardDuty有効化（コンソール）

![スクリーンショット 2021-01-24 16.35.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/fc4647c0-c28b-f296-d202-ef1eb7a2097e.png)

　サービスロールのアクセス権限を見てみます。

![スクリーンショット 2021-01-24 16.39.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/80dd524e-0078-2e7a-98db-dc34fc8fa9b1.png)
![スクリーンショット 2021-01-24 16.40.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/d7eac6b2-a51e-9d80-6387-be7b6fc2962f.png)

　分析するのに、権限がこれだけでいいのでしょうか？
　とりあえず有効化してみます。

![スクリーンショット 2021-01-24 16.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/a45e73f6-edfd-79db-680b-f3496792bb64.png)

　最初の画面です。
　GuardDutyは有効化されると、分析をすぐに開始するようです。
　時間を置いても何も検出されていないので、潜在的に悪意のあるアクティビティは検出されていないことがわかりました。
　また、抑制ルールを作成して対処する必要のない脅威検出結果を自動的にアーカイブでき、影響を与える脅威検出結果を簡単に認識できるようにできます。

![スクリーンショット 2021-01-24 16.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/83cedd3a-42d6-f532-5e7e-478cedfa63b9.png)

　コストが可視化されているようです。
　私が有効化しているデータソースは`CloudTrail`とVPCフローログですが、両方とも保留中となっています。
　使用日数が7日未満の新しく有効になった`GuardDuty`,データソースの場合はコストは保留中と表示されるからです。
　なお、この画面に表示されている見積もりは、過去7から30日間の使用料に基づく1日の平均コストになります。

　ところで、`S3データイベント`とは何でしょうか？
　他のデータソースはイメージできますが、これがよくわからなかったので調べてみました。
　簡単に言うと、S3に対するデータアクセスイベントのようで、S3に対する悪意あるアクティビティを検出できるようです。
　GetObject、ListObjects、DeleteObject、およびPutObjectAPI操作がS3データイベントの例です。

![スクリーンショット 2021-01-24 16.46.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/984db6bd-11ce-2329-c2d0-f4353bb6ddf8.png)
![スクリーンショット 2021-01-24 16.47.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/88c81985-b098-65e0-9df5-d9fc0fada6ea.png)

　なぜかサービルロールの権限がパワーアップしています。
　また、結果のサンプルを生成をクリックすることで、検出結果のサンプルが見られます。

![スクリーンショット 2021-01-24 18.49.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/43b06043-abf3-110c-35a8-2a5f72622e3c.png)

　`GuardDuty`は検出結果に重大度が付されており、青が低、黄が中、赤が高です。
　数字で表すと0.1から８．９の範囲で、大きいほどセキュリティリスクが高いことを示します。

![スクリーンショット 2021-01-24 16.47.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/2343a1f9-ba4a-0063-b8dd-e4e6ddd88115.png)

　信頼しているIPリストと悪意あるIPリストを作成できるみたいです。
　DNSログやVPCフローログの分析の際に活用できそうです。

![スクリーンショット 2021-01-24 16.47.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/77e3daac-eb70-6269-024b-a1624e0ecf87.png)

　S3保護はデフォルトで有効になっています。
　S3保護により、オブジェクトレベルのAPIオペレーションを監視して、S3バケット内のデータの潜在的なセキュリティリスクを特定するようです。

![スクリーンショット 2021-01-24 16.47.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/fcaf9a33-1431-546f-a187-7a34370f7168.png)

　こちらは、複数アカウントを管理するための画面です。
　GuardDutyの管理者アカウントになり、メンバーアカウントを管理することができます。
　管理者アカウントは、メンバーアカウントのGuardDutyの有効化・一時停止や、抑制ルール・IPリストなどを作成管理できます。
　メンバーアカウントは、これらの機能にアクセスできなくなります。

# S3バケットのブロックパブリックアクセスをオフにして検出するか試してみる

　空のS3バケットを新規作成して検出されるか試してみます。
　結果は検出されましたが、15分かかりました。

![スクリーンショット 2021-01-24 17.49.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/e6fea17f-9595-3ce6-b238-197b73debd2a.png)

![スクリーンショット 2021-01-24 17.49.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/caed8b93-34e0-9b78-b1b5-9fde6d2524d9.png)

# GuardDuty有効化（CloudFormation）

　めちゃくちゃ短いです。

```yaml:
AWSTemplateFormatVersion: 2010-09-09
Description: Enable Amazon GuardDuty

Resources:
  GuardDuty:
    Type: AWS::GuardDuty::Detector
    Properties:
      Enable: true
```

　`EventBridge`と`SNS`を組み合わせて検出された重要度によって通知をすることもできますが、今回はしません。
　`GuardDuty`を有効化していない場合は作成に成功しますが、`GuardDuty`を停止している場合に作成すると、既に`Detector`が存在すると言われてエラーになります。

# おわりに

　簡単に全リージョンに有効化できそうです。
　それにしても途中からサービスロールのアクセス権限が増えたのはどうしてでしょうか。