|
@@ -1,45 +1,18 @@
|
|
|
-# TODO: This could probably be centralized?
|
|
|
-resource "aws_sns_topic" "alarms" {
|
|
|
- name = var.sns_topic_name
|
|
|
-}
|
|
|
-
|
|
|
-resource "aws_sqs_queue" "alarms_sqs" {
|
|
|
- name = var.sqs_queue_name
|
|
|
-}
|
|
|
-
|
|
|
-resource "aws_sns_topic_subscription" "dps_alarm_target" {
|
|
|
- topic_arn = aws_sns_topic.alarms.arn
|
|
|
- protocol = "sqs"
|
|
|
- endpoint = aws_sqs_queue.alarms_sqs.arn
|
|
|
-}
|
|
|
-
|
|
|
-resource "aws_iam_role" "cloudtrail_cloudwatchlogs_role" {
|
|
|
- name = "cloudtrail_cloudwatchlogs_role"
|
|
|
- path = "/aws_services/"
|
|
|
- assume_role_policy = file("${path.module}/templates/${lookup(local.workspace-dps-cloudtrail-cloudwatch-logs-role,var.environment,"")}")
|
|
|
-}
|
|
|
-
|
|
|
-resource "aws_iam_role_policy" "cloudtrail_cloudwatch_policy" {
|
|
|
- name = "cloudtrail_cloudwatch_policy"
|
|
|
- role = aws_iam_role.cloudtrail_cloudwatchlogs_role.id
|
|
|
- policy = file("${path.module}/templates/${lookup(local.workspace-dps-cloudtrail-cloudwatch-logs-policy,var.environment,"")}")
|
|
|
-}
|
|
|
-
|
|
|
-resource "aws_cloudwatch_log_group" "aws-cis-logs" {
|
|
|
- name = var.cloudtrail_log_group_name
|
|
|
+locals {
|
|
|
+ alarm_namespace = "cis"
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "unauthorized_api_calls" {
|
|
|
name = "UnauthorizedAPICalls"
|
|
|
pattern = "{ ($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode = \"AccessDenied*\") }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "UnauthorizedAPICalls"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "unauthorized_api_calls" {
|
|
@@ -47,27 +20,27 @@ resource "aws_cloudwatch_metric_alarm" "unauthorized_api_calls" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.unauthorized_api_calls.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "50"
|
|
|
alarm_description = "Monitoring unauthorized API calls will help reveal application errors and may reduce time to detect malicious activity."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "no_mfa_console_signin" {
|
|
|
name = "NoMFAConsoleSignin"
|
|
|
pattern = "{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "NoMFAConsoleSignin"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "no_mfa_console_signin" {
|
|
@@ -75,26 +48,26 @@ resource "aws_cloudwatch_metric_alarm" "no_mfa_console_signin" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.no_mfa_console_signin.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring for single-factor console logins will increase visibility into accounts that are not protected by MFA."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "root_usage" {
|
|
|
name = "RootUsage"
|
|
|
pattern = "{ $.userIdentity.type = \"Root\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != \"AwsServiceEvent\" }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "RootUsage"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "root_usage" {
|
|
@@ -102,26 +75,26 @@ resource "aws_cloudwatch_metric_alarm" "root_usage" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.root_usage.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring for root account logins will provide visibility into the use of a fully privileged account and an opportunity to reduce the use of it."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "iam_changes" {
|
|
|
name = "IAMChanges"
|
|
|
pattern = "{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "IAMChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "iam_changes" {
|
|
@@ -129,27 +102,27 @@ resource "aws_cloudwatch_metric_alarm" "iam_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.iam_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to IAM policies will help ensure authentication and authorization controls remain intact."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "cloudtrail_cfg_changes" {
|
|
|
name = "CloudTrailCfgChanges"
|
|
|
pattern = "{ ($.eventName = CreateTrail) || ($.eventName = UpdateTrail) || ($.eventName = DeleteTrail) || ($.eventName = StartLogging) || ($.eventName = StopLogging) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "CloudTrailCfgChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "cloudtrail_cfg_changes" {
|
|
@@ -157,26 +130,26 @@ resource "aws_cloudwatch_metric_alarm" "cloudtrail_cfg_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.cloudtrail_cfg_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to CloudTrail's configuration will help ensure sustained visibility to activities performed in the AWS account."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "console_signin_failures" {
|
|
|
name = "ConsoleSigninFailures"
|
|
|
pattern = "{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failed authentication\") }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "ConsoleSigninFailures"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "console_signin_failures" {
|
|
@@ -184,26 +157,26 @@ resource "aws_cloudwatch_metric_alarm" "console_signin_failures" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.console_signin_failures.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring failed console logins may decrease lead time to detect an attempt to brute force a credential, which may provide an indicator, such as source IP, that can be used in other event correlation."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "disable_or_delete_cmk" {
|
|
|
name = "DisableOrDeleteCMK"
|
|
|
pattern = "{ ($.eventSource = kms.amazonaws.com) && (($.eventName = DisableKey) || ($.eventName = ScheduleKeyDeletion)) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "DisableOrDeleteCMK"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "disable_or_delete_cmk" {
|
|
@@ -211,26 +184,26 @@ resource "aws_cloudwatch_metric_alarm" "disable_or_delete_cmk" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.disable_or_delete_cmk.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring failed console logins may decrease lead time to detect an attempt to brute force a credential, which may provide an indicator, such as source IP, that can be used in other event correlation."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "s3_bucket_policy_changes" {
|
|
|
name = "S3BucketPolicyChanges"
|
|
|
pattern = "{ ($.eventSource = s3.amazonaws.com) && (($.eventName = PutBucketAcl) || ($.eventName = PutBucketPolicy) || ($.eventName = PutBucketCors) || ($.eventName = PutBucketLifecycle) || ($.eventName = PutBucketReplication) || ($.eventName = DeleteBucketPolicy) || ($.eventName = DeleteBucketCors) || ($.eventName = DeleteBucketLifecycle) || ($.eventName = DeleteBucketReplication)) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "S3BucketPolicyChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "s3_bucket_policy_changes" {
|
|
@@ -238,26 +211,26 @@ resource "aws_cloudwatch_metric_alarm" "s3_bucket_policy_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.s3_bucket_policy_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to S3 bucket policies may reduce time to detect and correct permissive policies on sensitive S3 buckets."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "aws_config_changes" {
|
|
|
name = "AWSConfigChanges"
|
|
|
pattern = "{ ($.eventSource = config.amazonaws.com) && (($.eventName=StopConfigurationRecorder)||($.eventName=DeleteDeliveryChannel)||($.eventName=PutDeliveryChannel)||($.eventName=PutConfigurationRecorder)) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "AWSConfigChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "aws_config_changes" {
|
|
@@ -265,26 +238,26 @@ resource "aws_cloudwatch_metric_alarm" "aws_config_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.aws_config_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to AWS Config configuration will help ensure sustained visibility of configuration items within the AWS account."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "security_group_changes" {
|
|
|
name = "SecurityGroupChanges"
|
|
|
pattern = "{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup)}"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "SecurityGroupChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "security_group_changes" {
|
|
@@ -292,26 +265,26 @@ resource "aws_cloudwatch_metric_alarm" "security_group_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.security_group_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to security group will help ensure that resources and services are not unintentionally exposed."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "nacl_changes" {
|
|
|
name = "NACLChanges"
|
|
|
pattern = "{ ($.eventName = CreateNetworkAcl) || ($.eventName = CreateNetworkAclEntry) || ($.eventName = DeleteNetworkAcl) || ($.eventName = DeleteNetworkAclEntry) || ($.eventName = ReplaceNetworkAclEntry) || ($.eventName = ReplaceNetworkAclAssociation) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "NACLChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "nacl_changes" {
|
|
@@ -319,26 +292,26 @@ resource "aws_cloudwatch_metric_alarm" "nacl_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.nacl_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to NACLs will help ensure that AWS resources and services are not unintentionally exposed."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "network_gw_changes" {
|
|
|
name = "NetworkGWChanges"
|
|
|
pattern = "{ ($.eventName = CreateCustomerGateway) || ($.eventName = DeleteCustomerGateway) || ($.eventName = AttachInternetGateway) || ($.eventName = CreateInternetGateway) || ($.eventName = DeleteInternetGateway) || ($.eventName = DetachInternetGateway) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "NetworkGWChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "network_gw_changes" {
|
|
@@ -346,26 +319,26 @@ resource "aws_cloudwatch_metric_alarm" "network_gw_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.network_gw_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to network gateways will help ensure that all ingress/egress traffic traverses the VPC border via a controlled path."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "route_table_changes" {
|
|
|
name = "RouteTableChanges"
|
|
|
pattern = "{ ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation) || ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "RouteTableChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "route_table_changes" {
|
|
@@ -373,26 +346,26 @@ resource "aws_cloudwatch_metric_alarm" "route_table_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.route_table_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to route tables will help ensure that all VPC traffic flows through an expected path."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_log_metric_filter" "vpc_changes" {
|
|
|
name = "VPCChanges"
|
|
|
pattern = "{ ($.eventName = CreateVpc) || ($.eventName = DeleteVpc) || ($.eventName = ModifyVpcAttribute) || ($.eventName = AcceptVpcPeeringConnection) || ($.eventName = CreateVpcPeeringConnection) || ($.eventName = DeleteVpcPeeringConnection) || ($.eventName = RejectVpcPeeringConnection) || ($.eventName = AttachClassicLinkVpc) || ($.eventName = DetachClassicLinkVpc) || ($.eventName = DisableVpcClassicLink) || ($.eventName = EnableVpcClassicLink) }"
|
|
|
- log_group_name = var.cloudtrail_log_group_name
|
|
|
+ log_group_name = var.log_group_name
|
|
|
|
|
|
metric_transformation {
|
|
|
name = "VPCChanges"
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
value = "1"
|
|
|
}
|
|
|
- depends_on = [ aws_cloudwatch_log_group.aws-cis-logs ]
|
|
|
+ depends_on = [ module.cloudtrail-logging ]
|
|
|
}
|
|
|
|
|
|
resource "aws_cloudwatch_metric_alarm" "vpc_changes" {
|
|
@@ -400,11 +373,11 @@ resource "aws_cloudwatch_metric_alarm" "vpc_changes" {
|
|
|
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
|
evaluation_periods = "1"
|
|
|
metric_name = aws_cloudwatch_log_metric_filter.vpc_changes.id
|
|
|
- namespace = var.alarm_namespace
|
|
|
+ namespace = local.alarm_namespace
|
|
|
period = "300"
|
|
|
statistic = "Sum"
|
|
|
threshold = "1"
|
|
|
alarm_description = "Monitoring changes to VPC will help ensure that all VPC traffic flows through an expected path."
|
|
|
- alarm_actions = [aws_sns_topic.alarms.arn]
|
|
|
+ alarm_actions = ["arn:${var.aws_partition}:sns:${var.aws_region}:${local.c2_account}:account-alerts"]
|
|
|
insufficient_data_actions = []
|
|
|
}
|