AWS re:Invent 2023で発表されたこちらの機能をTerraformで有効可する方法です。
TerraformのGitHubの数日に一回くらいIssue検索しながら緩く待っていたのですが、Issueに上がってこないということはドキュメントに無いだけで設定できるのではということでやってみました。
APIに渡すFeature Nameはこちらの公式から RUNTIME_MONITORING.additionalConfiguration.ECS_FARGATE_AGENT_MANAGEMENT
だということがわかりました。
ということで、そのままTerraformに埋め込んでみました。ECS Fargateだけ対象としたい場合は以下の通りです。
resource "aws_guardduty_detector" "this" {
enable = true
}
resource "aws_guardduty_detector_feature" "ecs_fargate_agent_runtime" {
detector_id = aws_guardduty_detector.this.id
name = "RUNTIME_MONITORING"
status = "ENABLED"
additional_configuration {
name = "EKS_ADDON_MANAGEMENT"
status = "DISABLED"
}
additional_configuration {
name = "ECS_FARGATE_AGENT_MANAGEMENT"
status = "ENABLED"
}
}
これでGuardDuty側は有効化できました。
上記に追加で対応したのは以下の3点です。
- GuardDutyのVPC Endpoint(
com.amazonaws.ap-northeast-1.guardduty-data
)作成 - SubnetやSecurity Groupの確認
- IAM権限の確認(
AmazonECSTaskExecutionRolePolicy
使っていれば問題無し)
特に1は恐らく画面から操作すれば自動で作成されるらしいですが、Terraformから作成した場合は自分で作成する必要がありそうでした。また、ここまでやっても以下のエラーが出ていてUnhealtyの状態でした。
Unidentified issue, for tasks in TaskDefinition - 'TASK_DEFINITION'
権限もVPCEndPointへの疎通確認しても問題無さそうだしということで諦めて一晩寝て起きて見てみたらHealtyになっていました。時間かかるのかもしれません。