main.tf 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. locals {
  2. bucket_name = "xdr-${var.splunk_prefix}-${var.environment}-splunk-apps"
  3. accounts = [var.aws_account_id]
  4. account_arns = [for a in local.accounts : "arn:${var.aws_partition}:iam::${a}:root"]
  5. }
  6. resource "aws_s3_bucket" "bucket" {
  7. bucket = local.bucket_name
  8. acl = "private"
  9. versioning {
  10. enabled = false
  11. }
  12. tags = merge(var.standard_tags, var.tags)
  13. #logging {
  14. # target_bucket = "dps-s3-logs"
  15. # target_prefix = "aws_terraform_s3_state_access_logs/"
  16. #}
  17. lifecycle_rule {
  18. id = "APPS_POLICY"
  19. enabled = true
  20. abort_incomplete_multipart_upload_days = 2
  21. transition {
  22. days = 30
  23. storage_class = "INTELLIGENT_TIERING"
  24. }
  25. # expiration {
  26. # days = 365
  27. # }
  28. }
  29. server_side_encryption_configuration {
  30. rule {
  31. apply_server_side_encryption_by_default {
  32. kms_master_key_id = aws_kms_key.bucketkey.arn
  33. sse_algorithm = "aws:kms"
  34. }
  35. }
  36. }
  37. }
  38. resource "aws_s3_bucket_public_access_block" "public_access_block" {
  39. bucket = aws_s3_bucket.bucket.id
  40. block_public_acls = true
  41. block_public_policy = true
  42. ignore_public_acls = true
  43. restrict_public_buckets = true
  44. # Not technically dependent, but prevents a "Conflicting conditional operation" conflict.
  45. # See https://github.com/hashicorp/terraform-provider-aws/issues/7628
  46. depends_on = [aws_s3_bucket_policy.policy]
  47. }
  48. resource "aws_s3_bucket_policy" "policy" {
  49. bucket = aws_s3_bucket.bucket.id
  50. policy = <<POLICY
  51. {
  52. "Version": "2012-10-17",
  53. "Id": "AllowThisAccount",
  54. "Statement": [
  55. {
  56. "Sid": "AccountAllow",
  57. "Effect": "Allow",
  58. "Principal": {
  59. "AWS": ${jsonencode(local.account_arns)}
  60. },
  61. "Action": [
  62. "s3:GetObject",
  63. "s3:ListBucket"
  64. ],
  65. "Resource": [
  66. "${aws_s3_bucket.bucket.arn}",
  67. "${aws_s3_bucket.bucket.arn}/*"
  68. ]
  69. }
  70. ]
  71. }
  72. POLICY
  73. }