s3.tf 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #S3 bucket for codebuild output
  2. #tfsec:ignore:aws-s3-block-public-acls tfsec:ignore:aws-s3-block-public-policy tfsec:ignore:aws-s3-ignore-public-acls
  3. #tfsec:ignore:aws-s3-no-public-buckets Certificate CRLs need to be publicly accessible
  4. resource "aws_s3_bucket" "artifacts" {
  5. bucket = "xdr-codebuild-artifacts"
  6. force_destroy = true
  7. }
  8. resource "aws_s3_bucket_acl" "s3_acl_artifacts" {
  9. bucket = aws_s3_bucket.artifacts.id
  10. acl = "private"
  11. }
  12. resource "aws_s3_bucket_server_side_encryption_configuration" "s3_sse_artifacts" {
  13. bucket = aws_s3_bucket.artifacts.id
  14. rule {
  15. apply_server_side_encryption_by_default {
  16. kms_master_key_id = aws_kms_key.s3_codebuild_artifacts.arn
  17. sse_algorithm = "aws:kms"
  18. }
  19. }
  20. }
  21. resource "aws_s3_bucket_policy" "artifacts" {
  22. bucket = aws_s3_bucket.artifacts.id
  23. policy = data.aws_iam_policy_document.artifacts.json
  24. }
  25. data "aws_iam_policy_document" "artifacts" {
  26. statement {
  27. sid = "AllowS3Access"
  28. actions = ["s3:GetObject", "s3:GetObjectVersion"]
  29. effect = "Allow"
  30. resources = ["${aws_s3_bucket.artifacts.arn}/*"]
  31. principals {
  32. type = "AWS"
  33. identifiers = sort([for a in local.responsible_accounts[var.environment] : "arn:${var.aws_partition}:iam::${a}:root"])
  34. }
  35. }
  36. }
  37. resource "aws_s3_bucket_public_access_block" "artifacts" {
  38. bucket = aws_s3_bucket.artifacts.id
  39. block_public_acls = true
  40. block_public_policy = true
  41. ignore_public_acls = true
  42. restrict_public_buckets = true
  43. }
  44. resource "aws_s3_bucket_versioning" "artifacts" {
  45. bucket = aws_s3_bucket.artifacts.id
  46. versioning_configuration {
  47. status = "Enabled"
  48. }
  49. }