module "security-hub" {
  source = "../../modules/aws-so-security-hub"
}

module "guardduty" {
  source             = "../../modules/aws-guardduty"
  client_name        = var.client_name
  stage              = var.stage
  access_logs_bucket = var.access_logs_bucket
}

module "config" {
  source                        = "../../modules/aws-so-config"
  is_enabled                    = true
  config_name                   = "${var.client_name}-${var.stage}-config"
  stage                         = var.stage
  config_logs_prefix            = "config"
  config_delivery_frequency     = "Six_Hours"
  include_global_resource_types = true
  access_logs_bucket            = var.access_logs_bucket
}

module "cloudtrail" {
  source                        = "../../modules/aws-cloudtrail"
  name                          = "${var.client_name}-${var.stage}-cloudtrail-logs"
  stage                         = var.stage
  enable_logging                = true
  enable_log_file_validation    = true
  is_multi_region_trail         = true
  include_global_service_events = true
  access_logs_bucket            = var.access_logs_bucket
}

module "account_settings" {
  source = "../../modules/aws-account-settings"

  name                       = "${var.client_name}-${var.stage}"
  stage                      = var.stage
  cloudwatch_alarm_log_group = module.cloudtrail.cloudtrail_log_group_name

  budget_name  = "${var.client_name}-${var.stage}-budget"
  limit_amount = var.monthly_budget_limit_amount

  minimum_password_length     = "32"
  subscriber_email_addresses  = var.budget_alerts_subscriber_emails
  sns_subscriber_email        = var.sns_technical_alerts_emails
  escalations_email_addresses = var.budgets_escalations_emails
  monitor_email_addresses     = var.budgets_monitor_emails
  security_contact            = var.security_contact_info
  operations_contact          = var.operations_contact_info
  billing_contact             = var.billing_contact_info
}
