sns_alerts.tf 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. resource "aws_cloudwatch_log_group" "SubordinateCACloudTrailAnalysis" {
  2. provider = aws.common # COMMON SERVICES
  3. name = "SubordinateCACloudTrailAnalysis"
  4. }
  5. resource "aws_iam_role" "subordinate_ca_cloudtrail_role" {
  6. provider = aws.common # COMMON SERVICES
  7. name = "subordinate_ca_cloudtrail_role"
  8. assume_role_policy = <<EOF
  9. {
  10. "Version": "2012-10-17",
  11. "Statement": [
  12. {
  13. "Sid": "",
  14. "Effect": "Allow",
  15. "Principal": {
  16. "Service": "cloudtrail.amazonaws.com"
  17. },
  18. "Action": "sts:AssumeRole"
  19. }
  20. ]
  21. }
  22. EOF
  23. }
  24. resource "aws_iam_role_policy" "allow_stream_policy" {
  25. provider = aws.common # COMMON SERVICES
  26. name = "allow_stream_change"
  27. role = aws_iam_role.subordinate_ca_cloudtrail_role.id
  28. policy = <<EOF
  29. {
  30. "Version": "2012-10-17",
  31. "Statement": [
  32. {
  33. "Effect": "Allow",
  34. "Action": [
  35. "logs:CreateLogStream",
  36. "logs:PutLogEvents"
  37. ],
  38. "Resource": [
  39. "${aws_cloudwatch_log_group.SubordinateCACloudTrailAnalysis.arn}"
  40. ]
  41. }
  42. ]
  43. }
  44. EOF
  45. }
  46. resource "aws_sns_topic" "subordinate_ca_notification" {
  47. provider = aws.common # COMMON SERVICES
  48. name = "SubordinateCANotification"
  49. }
  50. resource "aws_sns_topic_subscription" "subordinate_ca_notification" {
  51. provider = aws.common # COMMON SERVICES
  52. for_each = local.recipients
  53. topic_arn = aws_sns_topic.subordinate_ca_notification.arn
  54. protocol = "email"
  55. endpoint = each.value
  56. }
  57. #resource "aws_cloudwatch_log_metric_filter" "rootEvent" {
  58. # name = "Root_Account_Login"
  59. # pattern = <<EOF
  60. #{ ($.eventSource = "signin.amazonaws.com" ) && ( $.userIdentity.type = "Root" ) }
  61. #EOF
  62. # log_group_name = "${aws_cloudwatch_log_group.SubordinateCACloudTrailAnalysis.name}"
  63. #
  64. # metric_transformation {
  65. # name = "${var.thiseventname}"
  66. # namespace = "${var.thisnamespace}"
  67. # value = "1"
  68. # }
  69. #}
  70. data "aws_caller_identity" "current" {}
  71. data "aws_iam_account_alias" "current" {}
  72. #resource "aws_cloudwatch_metric_alarm" "rootAlarm" {
  73. # alarm_name = "Root_Account_Login"
  74. # comparison_operator = "GreaterThanOrEqualToThreshold"
  75. # evaluation_periods = "1"
  76. # metric_name = "${var.thiseventname}"
  77. # namespace = "${var.thisnamespace}"
  78. # period = "300"
  79. # statistic = "Sum"
  80. # threshold = "1"
  81. # alarm_description = "in the AWS account with id = ${data.aws_caller_identity.current.account_id} and alias = ${data.aws_iam_account_alias.current.account_alias} the root user logged in"
  82. # alarm_actions = ["${aws_sns_topic.subordinate_ca_notification.arn}"]
  83. #}