Amazon GuardDutyをTerraformで有効化してみた
こんにちは!コンサルティング部のくろすけです!
入社後 Amazon GuardDuty を有効化したので、そちらを記事にしてみます。
自分は基本はTerraformでAWS環境を構築したいので、GuardDutyもTerraformやってみました。
Amazon GuardDutyとは
Amazon GuardDuty は、 AWS 環境内の AWS データソースとログを継続的にモニタリング、分析、処理する脅威検出サービスです。 は、悪意のある IP アドレスとドメインのリスト、ファイルハッシュ、機械学習 (ML) モデルなどの脅威インテリジェンスフィード GuardDuty を使用して、 AWS 環境内の疑わしいアクティビティや潜在的に悪意のあるアクティビティを特定します。次のリストは、検出 GuardDuty に役立つ潜在的な脅威シナリオの概要を示しています。
機械学習などを用いて自動で威検出をしてくれるサービスですね。
少し注意すべきは、あくまで検出までなので通知などは別途構築してあげる必要があるようです。
主な機能
GuardDutyにはいくつか機能があります。
規模感はそれぞれ違いますが思ったより機能がありますね。
- 特定のデータソースとイベントログのモニタリング
- マルチアカウント環境下でのGuardDuty一元管理
- 検出した脅威に関するセキュリティ検出結果の生成
- セキュリティ検出結果の評価および管理
- 関連するAWSセキュリティサービスとの統合
今回は有効化までなので、上記1の有効化にフォーカスします。
特定のデータソースとイベントログのモニタリング
こちらの機能中にもさらにいくつか機能があり、各概要は以下のようなところかなと思います。
機能 | データソース | 検出対象 |
---|---|---|
基本的な脅威の検出 | AWS CloudTrailの管理イベント、VPCフローログ、DNSログ | 単一の異常なアクティビティやイベント |
拡張脅威検出 | 基本的なデータソースに加え、複数のAWSリソース | 複数の関連イベントやマルチステージ攻撃 |
保護プラン | EKS監査ログ、RDSログインアクティビティ、CloudTrailのS3データイベント、EBSボリューム、EKS、ECS-Fargate、EC2、Lambdaのネットワークアクティビティログ | 各保護プランに特化した脅威シナリオ |
やってみた
いざTerraformで!と息巻いていましたが、有効化したいだけであれば下記くらいです。
resource "aws_guardduty_detector" "guardduty" {
enable = var.guardduty_enable
finding_publishing_frequency = var.guardduty_finding_publishing_frequency
}
variable "guardduty_enable" {
type = bool
description = "Enable GuardDuty"
default = true
}
variable "guardduty_finding_publishing_frequency" {
type = string
description = "The frequency of findings publishing"
default = "SIX_HOURS"
}
下記のリソースを追加使用することで、個別に機能を制御することも可能なようです。
上記リソースの、name
パラメータがどの保護プランと対応しているかは下記に記載がありました。
で、上記のリソースを追加しない(デフォルト的な)場合に具体的に何が有効化されるか気になって確認したところ下記の通りでした。
機能 | ステータス |
---|---|
基本的な脅威の検出 | 有効 |
拡張脅威検出 | 有効 |
保護プラン(S3 Protection) | 有効 |
保護プラン(EKS Protection) | 有効 |
保護プラン(Runtime Monitoring) | 無効 |
保護プラン(Malware Protection for EC2) | 無効 |
保護プラン(Malware Protection for S3) | 無効 |
保護プラン(RDS Protection) | 有効 |
保護プラン(Lambda Protection) | 有効 |
確認したところ、GuardDuty 30 日間の無料トライアルに含まれる
保護プランについては、初回有効化時に自動的に有効化されるようです。
あとがき
有効化するのみであればとても簡単でしたが、ちょっとわかりにくい記述があったなという所感でした。
前回Lambda APIをやっていくと言いつつもう脱線してしまいました...
色々書きたいこともあるので、脱線回を織り交ぜつつやっていこうと思います。