crl.tf 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. resource "aws_s3_bucket" "crl" {
  2. provider = aws.common # COMMON SERVICES
  3. bucket = "xdr-subordinate-crl"
  4. tags = merge(var.standard_tags, var.tags)
  5. }
  6. # CRLs are small, but regenerated every expiration/2 days, (every 3.5 days by default), so there will be a good number of versions
  7. resource "aws_s3_bucket_versioning" "s3_version_subordinate_crl" {
  8. provider = aws.common
  9. bucket = aws_s3_bucket.crl.id
  10. versioning_configuration {
  11. status = "Enabled"
  12. }
  13. }
  14. # TODO: Enable S3 logging... everywhere. We don't have a C2 bucket for this.
  15. #resource "aws_s3_bucket_logging" "log_bucket_audit_reports" {
  16. # target_bucket = module.xdr_config_logging_bucket.s3_bucket_name
  17. # target_prefix = "${var.aws_account_id}-${var.aws_region}-awsconfig/"
  18. #}
  19. resource "aws_s3_bucket_lifecycle_configuration" "s3_lifecyle_subordinate_crl" {
  20. provider = aws.common
  21. bucket = aws_s3_bucket.crl.id
  22. rule {
  23. id = "CleanUp"
  24. status = "Enabled"
  25. abort_incomplete_multipart_upload {
  26. days_after_initiation = 7
  27. }
  28. # Clean up old versions after a year
  29. noncurrent_version_expiration {
  30. noncurrent_days = 365
  31. }
  32. }
  33. }
  34. resource "aws_s3_bucket_server_side_encryption_configuration" "s3_sse_subordinate_crl" {
  35. provider = aws.common
  36. bucket = aws_s3_bucket.crl.id
  37. rule {
  38. apply_server_side_encryption_by_default {
  39. sse_algorithm = "AES256" # Default keys are fine. We don't really need encryption here.
  40. }
  41. }
  42. }
  43. data "aws_iam_policy_document" "acmpca_bucket_access" {
  44. statement {
  45. actions = [
  46. "s3:GetBucketAcl",
  47. "s3:GetBucketLocation",
  48. "s3:PutObject",
  49. "s3:PutObjectAcl",
  50. ]
  51. resources = [
  52. aws_s3_bucket.crl.arn,
  53. "${aws_s3_bucket.crl.arn}/*",
  54. ]
  55. principals {
  56. identifiers = ["acm-pca.amazonaws.com"]
  57. type = "Service"
  58. }
  59. }
  60. }
  61. resource "aws_s3_bucket_policy" "crl" {
  62. provider = aws.common # COMMON SERVICES
  63. bucket = aws_s3_bucket.crl.id
  64. policy = data.aws_iam_policy_document.acmpca_bucket_access.json
  65. }
  66. # Publicly available CRL so clients can validate
  67. #resource "aws_s3_bucket_public_access_block" "crl_bucket_block_public_access" {
  68. # provider = aws.common # COMMON SERVICES
  69. # bucket = aws_s3_bucket.crl.id
  70. # block_public_acls = false # Not supported for CRLs, see https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-error-crl-acm-ca/
  71. # block_public_policy = true
  72. # ignore_public_acls = true
  73. # restrict_public_buckets = true
  74. # depends_on = [ aws_s3_bucket.crl ]
  75. #}
  76. //AWS Provider outdated arguments <4.4.0
  77. /*resource "aws_s3_bucket" "crl" {
  78. provider = aws.common # COMMON SERVICES
  79. bucket = "xdr-subordinate-crl"
  80. # CRLs are small, but regenerated every expiration/2 days, (every 3.5 days by default), so there will be a good number of versions
  81. versioning {
  82. enabled = true
  83. }
  84. # TODO: Enable S3 logging... everywhere. We don't have a C2 bucket for this.
  85. #logging {
  86. # target_bucket = module.xdr_config_logging_bucket.s3_bucket_name
  87. # target_prefix = "${var.aws_account_id}-${var.aws_region}-awsconfig/"
  88. #}
  89. lifecycle_rule {
  90. id = "CleanUp"
  91. enabled = true
  92. abort_incomplete_multipart_upload_days = 7
  93. # Clean up old versions after a year
  94. noncurrent_version_expiration {
  95. days = 365
  96. }
  97. }
  98. server_side_encryption_configuration {
  99. rule {
  100. apply_server_side_encryption_by_default {
  101. sse_algorithm = "AES256" # Default keys are fine. We don't really need encryption here.
  102. }
  103. }
  104. }
  105. tags = merge(var.standard_tags, var.tags)
  106. }
  107. */