You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tf-modules/security/cloudtrail/storage.tf

72 lines
1.8 KiB
HCL

resource "aws_s3_bucket" "cloudtrail_bucket" {
bucket_prefix = "${var.prefix}-cloudtrail-"
acl = "private"
force_destroy = var.force_destroy_bucket
tags = var.tags
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
lifecycle_rule {
id = "archive_glacier"
enabled = var.lifecycle_enabled
prefix = var.lifecycle_prefix
transition {
days = var.lifecycle_glacier_transition_days
storage_class = "GLACIER"
}
expiration {
days = var.lifecycle_object_expiration
}
}
}
resource "aws_s3_bucket_policy" "cloudtrail_bucket_policy" {
bucket = aws_s3_bucket.cloudtrail_bucket.id
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "${aws_s3_bucket.cloudtrail_bucket.arn}"
},
{
"Sid": "AWSCloudTrailWrite",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "${aws_s3_bucket.cloudtrail_bucket.arn}/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
POLICY
}
resource "aws_cloudwatch_log_group" "cloudtrail_log_group" {
name = aws_s3_bucket.cloudtrail_bucket.id
retention_in_days = var.cloudwatch_log_retention
tags = var.tags
}