Skip to content

Commit

Permalink
nginx security group
Browse files Browse the repository at this point in the history
  • Loading branch information
carlssonk committed Sep 26, 2024
1 parent 3d8dcb4 commit a8322b7
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 4 deletions.
45 changes: 45 additions & 0 deletions common/security/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,22 @@ locals {
referenced_security_group_id = module.security_group_vpc_endpoints.id
}

allow_outbound_dns_traffic = {
description = "Allow outbound DNS traffic"
from_port = 53
to_port = 53
ip_protocol = "udp"
cidr_ipv4 = "0.0.0.0/0"
}

allow_http_to_anywhere_ipv4 = {
description = "Allow HTTPS to any destination"
from_port = 80
to_port = 80
ip_protocol = "tcp"
cidr_ipv4 = "0.0.0.0/0"
}

allow_https_to_anywhere_ipv4 = {
description = "Allow HTTPS to any destination"
from_port = 443
Expand Down Expand Up @@ -40,6 +56,12 @@ module "security_group_alb" {
vpc_id = var.networking_outputs.main_vpc_id
}

module "security_group_nginx" {
source = "../../modules/security-group/default"
name = "nginx"
vpc_id = var.networking_outputs.main_vpc_id
}

module "security_group_ecs_tasks" {
source = "../../modules/security-group/default"
name = "ecs-tasks"
Expand Down Expand Up @@ -84,6 +106,29 @@ module "security_group_alb_rules" {
])
}

module "security_group_nginx_rules" {
source = "../../modules/security-group-rules/default"
name = "nginx"
security_group_id = module.security_group_nginx.id
ingress_rules = flatten([
[for ip in module.globals.var.cloudflare_ipv4_ranges : {
description = "Allow inbound HTTPS from Cloudflare IP: ${ip}"
from_port = 443
to_port = 443
ip_protocol = "tcp"
cidr_ipv4 = ip
}],
[for ip in module.globals.var.cloudflare_ipv6_ranges : {
description = "Allow inbound HTTPS from Cloudflare IP: ${ip}"
from_port = 443
to_port = 443
ip_protocol = "tcp"
cidr_ipv6 = ip
}]
])
egress_rules = [local.allow_outbound_dns_traffic, local.allow_http_to_anywhere_ipv4, local.allow_https_to_anywhere_ipv4]
}

module "security_group_ecs_tasks_rules" {
source = "../../modules/security-group-rules/default"
name = "ecs_tasks"
Expand Down
6 changes: 6 additions & 0 deletions common/security/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
output "policy_documents" {
value = [
module.security_group_alb.policy_document,
module.security_group_nginx.policy_document,
module.security_group_ecs_tasks.policy_document,
module.security_group_vpc_endpoints.policy_document,
module.security_group_alb_rules.policy_document,
module.security_group_nginx_rules.policy_document,
module.security_group_ecs_tasks_rules.policy_document,
module.security_group_vpc_endpoints_rules.policy_document,
module.vpc_endpoints_gateway.policy_document
Expand All @@ -14,6 +16,10 @@ output "security_group_alb_id" {
value = module.security_group_alb.id
}

output "security_group_nginx_id" {
value = module.security_group_nginx.id
}

output "security_group_ecs_tasks_id" {
value = module.security_group_ecs_tasks.id
}
6 changes: 3 additions & 3 deletions common/services/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -103,14 +103,14 @@ data "cloudinit_config" "this" {
}
}

module "ec2_instance_nginx_proxy" {
module "ec2_instance_nginx" {
count = var.reverse_proxy_type == "nginx" ? 1 : 0
name = "nginx-reverse-proxy"
source = "../../modules/ec2-instance/default"
ami = local.AmazonLinux2023AMI[module.globals.var.aws_region]
instance_type = "t3.micro"
subnet_ids = var.networking_outputs.main_vpc_public_subnet_ids
security_group_id = var.security_outputs.security_group_alb_id # Should have the same security group rules as alb
security_group_id = var.security_outputs.security_group_nginx_id

user_data = data.cloudinit_config.this.rendered
# user_data = templatefile("${path.module}/nginx_reverse_proxy.tpl", {
Expand Down Expand Up @@ -140,7 +140,7 @@ module "ec2_instance_nginx_proxy" {
module "ec2_instance_nginx_eip" {
count = var.reverse_proxy_type == "nginx" ? 1 : 0
source = "../../modules/elastic-ip/default"
instance_id = module.ec2_instance_nginx_proxy[0].id
instance_id = module.ec2_instance_nginx[0].id
}

module "main_alb_access_logs_bucket" {
Expand Down
2 changes: 1 addition & 1 deletion common/services/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
output "policy_documents" {
value = [
try(module.service_discovery_namespace[0].policy_document, null),
try(module.ec2_instance_nginx_proxy[0].policy_document, null),
try(module.ec2_instance_nginx[0].policy_document, null),
try(module.ec2_instance_nginx_eip[0].policy_document, null),
try(module.main_alb[0].policy_document, null),
try(module.main_alb_access_logs_bucket[0].policy_document, null),
Expand Down

0 comments on commit a8322b7

Please sign in to comment.