config.tf 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # Approve the aggregator in C2
  2. resource "aws_config_aggregate_authorization" "authorization" {
  3. account_id = local.c2_account
  4. region = var.aws_region
  5. tags = merge(var.standard_tags, var.tags)
  6. }
  7. output authorizations {
  8. value = aws_config_aggregate_authorization.authorization
  9. }
  10. ########### IAM Role for AWS Config
  11. data "aws_iam_policy_document" "awsconfig" {
  12. statement {
  13. effect = "Allow"
  14. actions = ["s3:PutObject"]
  15. resources = [
  16. "arn:${var.aws_partition}:s3:::xdr-config-${local.logging_environment}/*",
  17. ]
  18. condition {
  19. test = "StringEquals"
  20. variable = "s3:x-amz-acl"
  21. values = ["bucket-owner-full-control"]
  22. }
  23. }
  24. statement {
  25. effect = "Allow"
  26. actions = ["s3:GetBucketAcl"]
  27. resources = [
  28. "arn:${var.aws_partition}:s3:::xdr-config-${local.logging_environment}/*",
  29. ]
  30. }
  31. statement {
  32. effect = "Allow"
  33. actions = [ "sns:Publish" ]
  34. resources = [ "arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts" ]
  35. }
  36. }
  37. resource "aws_iam_policy" "awsconfig" {
  38. name_prefix = "awsconfig-"
  39. policy = data.aws_iam_policy_document.awsconfig.json
  40. }
  41. data "aws_iam_policy_document" "assume" {
  42. statement {
  43. effect = "Allow"
  44. actions = ["sts:AssumeRole"]
  45. principals {
  46. type = "Service"
  47. identifiers = ["config.amazonaws.com"]
  48. }
  49. }
  50. }
  51. resource "aws_iam_role" "awsconfig" {
  52. name_prefix = "aws-config-role"
  53. path = "/aws_services/"
  54. assume_role_policy = data.aws_iam_policy_document.assume.json
  55. }
  56. resource "aws_iam_role_policy_attachment" "awsconfig_managed_policy" {
  57. role = aws_iam_role.awsconfig.name
  58. policy_arn = "arn:${var.aws_partition}:iam::aws:policy/service-role/AWSConfigRole"
  59. }
  60. resource "aws_iam_role_policy_attachment" "awsconfig_local_policy" {
  61. role = aws_iam_role.awsconfig.name
  62. policy_arn = aws_iam_policy.awsconfig.arn
  63. }
  64. ################ Config Recorder
  65. resource "aws_config_configuration_recorder" "awsconfig_recorder" {
  66. name = "xdr-config-recorder"
  67. role_arn = aws_iam_role.awsconfig.arn
  68. recording_group {
  69. all_supported = true
  70. include_global_resource_types = true
  71. }
  72. }
  73. resource "aws_config_delivery_channel" "awsconfig_delivery_channel" {
  74. name = "xdr-config-delivery-channel"
  75. s3_bucket_name = "xdr-config-${local.logging_environment}"
  76. sns_topic_arn = "arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"
  77. snapshot_delivery_properties {
  78. delivery_frequency = "One_Hour"
  79. }
  80. depends_on = [aws_config_configuration_recorder.awsconfig_recorder]
  81. }
  82. resource "aws_config_configuration_recorder_status" "awsconfig_recorder_status" {
  83. name = "xdr-config-recorder"
  84. is_enabled = true
  85. depends_on = [aws_config_delivery_channel.awsconfig_delivery_channel]
  86. }