flowlogs.tf 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Flow logs need to be created per VPC, but we need a role
  2. resource "aws_cloudwatch_log_group" "vpc_flow_logs" {
  3. name = "vpc_flow_logs"
  4. retention_in_days = 7
  5. kms_key_id = var.cloudtrail_key_arn
  6. tags = merge(var.standard_tags, var.tags)
  7. }
  8. resource "aws_iam_role" "flowlogs" {
  9. name = "flowlogs"
  10. path = "/aws_services/"
  11. tags = merge(var.standard_tags, var.tags)
  12. assume_role_policy = <<EOF
  13. {
  14. "Version": "2012-10-17",
  15. "Statement": [
  16. {
  17. "Sid": "",
  18. "Effect": "Allow",
  19. "Principal": {
  20. "Service": "vpc-flow-logs.amazonaws.com"
  21. },
  22. "Action": "sts:AssumeRole"
  23. }
  24. ]
  25. }
  26. EOF
  27. }
  28. resource "aws_iam_role_policy" "flowlogs" {
  29. name = "flowlogs"
  30. role = aws_iam_role.flowlogs.id
  31. policy = <<EOF
  32. {
  33. "Version": "2012-10-17",
  34. "Statement": [
  35. {
  36. "Action": [
  37. "logs:CreateLogGroup",
  38. "logs:CreateLogStream",
  39. "logs:PutLogEvents",
  40. "logs:DescribeLogGroups",
  41. "logs:DescribeLogStreams"
  42. ],
  43. "Effect": "Allow",
  44. "Resource": "*"
  45. }
  46. ]
  47. }
  48. EOF
  49. }
  50. # Spit vpc flow logs to splunk
  51. module "kinesis_firehose" {
  52. source = "../../thirdparty/terraform-aws-kinesis-firehose-splunk"
  53. region = var.aws_region
  54. arn_cloudwatch_logs_to_ship = "arn:${var.aws_partition}:logs:${var.aws_region}::log-group:/vpc_flow_logs/*"
  55. name_cloudwatch_logs_to_ship = "vpc_flow_logs"
  56. hec_token = var.aws_flowlogs_hec_token
  57. hec_url = "https://${var.hec_pub_ack}:8088"
  58. firehose_name = "vpc_flow_logs_to_splunk"
  59. tags = merge(var.standard_tags, var.tags)
  60. cloudwatch_log_retention = 30 # keep kinesis logs this long
  61. log_stream_name = "SplunkDelivery_VPCFlowLogs"
  62. s3_bucket_name = "kinesis-flowlogs-${var.aws_account_id}-${var.aws_region}"
  63. s3_bucket_block_public_access_enabled = 1
  64. s3_backup_mode = "FailedEventsOnly"
  65. s3_expiration = 30
  66. }