Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 47 additions & 40 deletions README.md

Large diffs are not rendered by default.

62 changes: 0 additions & 62 deletions aws_s3_bucket.access_log_bucket.tf

This file was deleted.

60 changes: 60 additions & 0 deletions aws_s3_bucket.access_logs_bucket.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
resource "aws_s3_bucket" "access_logs_bucket" {
# checkov:skip=CKV_AWS_144: Cross region replication is overkill
# checkov:skip=CKV_AWS_18:
# checkov:skip=CKV_AWS_52:
# checkov:skip=CKV_AWS_145:v4 provider legacy
count = var.enable_log_to_s3 ? 1 : 0
bucket_prefix = "${var.access_logs_bucket_name}-"
force_destroy = true
tags = var.tags
}

resource "aws_s3_bucket_acl" "access_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.access_logs_bucket[0].id
acl = "log-delivery-write"
}

resource "aws_s3_bucket_versioning" "access_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.access_logs_bucket[0].id

versioning_configuration {
status = "Enabled"
}
}

resource "aws_s3_bucket_server_side_encryption_configuration" "access_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.access_logs_bucket[0].id

rule {
apply_server_side_encryption_by_default {
kms_master_key_id = aws_kms_key.ssmkey.arn
sse_algorithm = "aws:kms"
}
}
}

resource "aws_s3_bucket_lifecycle_configuration" "access_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.access_logs_bucket[0].id

rule {
id = "delete_after_X_days"
status = "Enabled"

expiration {
days = var.access_log_expire_days
}
}
}

resource "aws_s3_bucket_public_access_block" "access_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.access_logs_bucket[0].id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
31 changes: 16 additions & 15 deletions aws_s3_bucket.session_logs_bucket.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,31 @@ resource "aws_s3_bucket" "session_logs_bucket" {
# checkov:skip=CKV_AWS_144: Cross region replication overkill
# checkov:skip=CKV_AWS_52:
# checkov:skip=CKV_AWS_145:v4 provider legacy
count = var.enable_log_to_s3 ? 1 : 0
bucket_prefix = "${var.bucket_name}-"
force_destroy = true
tags = var.tags

}

resource "aws_s3_bucket_acl" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id

acl = "private"
resource "aws_s3_bucket_acl" "session_logs_bucket" {
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id
acl = "private"
}


resource "aws_s3_bucket_versioning" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id

versioning_configuration {
status = "Enabled"
}
}


resource "aws_s3_bucket_server_side_encryption_configuration" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id

rule {
apply_server_side_encryption_by_default {
Expand All @@ -35,9 +36,9 @@ resource "aws_s3_bucket_server_side_encryption_configuration" "session_logs_buck
}
}


resource "aws_s3_bucket_lifecycle_configuration" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id

rule {
id = "archive_after_X_days"
Expand All @@ -54,17 +55,17 @@ resource "aws_s3_bucket_lifecycle_configuration" "session_logs_bucket" {
}
}


resource "aws_s3_bucket_logging" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id

target_bucket = aws_s3_bucket.session_logs_bucket.id
target_bucket = aws_s3_bucket.access_logs_bucket[0].id
target_prefix = "log/"
}


resource "aws_s3_bucket_public_access_block" "session_logs_bucket" {
bucket = aws_s3_bucket.session_logs_bucket.id
count = var.enable_log_to_s3 ? 1 : 0
bucket = aws_s3_bucket.session_logs_bucket[0].id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
Expand Down
25 changes: 25 additions & 0 deletions data.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,29 @@
locals {
region = var.vpc_endpoints_enabled && var.vpc_id != null ? split(":", data.aws_vpc.selected[0].arn)[3] : data.aws_region.current.name
subnets = var.vpc_endpoints_enabled ? length(var.subnet_ids) > 0 ? var.subnet_ids : data.aws_subnets.selected[0].ids : []
}

data "aws_caller_identity" "current" {}

data "aws_region" "current" {}

data "aws_partition" "current" {}

data "aws_vpc" "selected" {
count = var.vpc_endpoints_enabled ? 1 : 0
id = var.vpc_id
}

data "aws_subnets" "selected" {
count = var.vpc_endpoints_enabled ? 1 : 0
filter {
name = "vpc-id"
values = [var.vpc_id]
}
}

data "aws_route_table" "selected" {
count = var.vpc_endpoints_enabled ? length(local.subnets) : 0
subnet_id = sort(local.subnets)[count.index]
}

2 changes: 1 addition & 1 deletion example/examplea/module.ssm.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module "ssm" {
source = "../../"
bucket_name = "my-session-logs"
access_log_bucket_name = "my-session-access-logs"
access_logs_bucket_name = "my-session-access-logs"
enable_log_to_s3 = true
enable_log_to_cloudwatch = true
linux_shell_profile = "date"
Expand Down
4 changes: 2 additions & 2 deletions example/examplea/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ output "session_logs_bucket_name" {
value = module.ssm.session_logs_bucket_name
}

output "access_log_bucket_name" {
value = module.ssm.access_log_bucket_name
output "access_logs_bucket_name" {
value = module.ssm.access_logs_bucket_name
}

output "cloudwatch_log_group_arn" {
Expand Down
Loading