s3.tf 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. # tfsec:ignore:aws-s3-enable-bucket-logging TODO: enable everywhere at a later date if required
  5. resource "aws_s3_bucket" "artifacts" {
  6. # checkov:skip=CKV_AWS_18: see tfsec S3 logging above
  7. # checkov:skip=CKV_AWS_144: TODO: cross replication
  8. bucket = "xdr-codebuild-artifacts"
  9. force_destroy = true
  10. }
  11. resource "aws_s3_bucket_acl" "s3_acl_artifacts" {
  12. bucket = aws_s3_bucket.artifacts.id
  13. acl = "private"
  14. }
  15. resource "aws_s3_bucket_server_side_encryption_configuration" "s3_sse_artifacts" {
  16. bucket = aws_s3_bucket.artifacts.id
  17. rule {
  18. apply_server_side_encryption_by_default {
  19. kms_master_key_id = aws_kms_key.s3_codebuild_artifacts.arn
  20. sse_algorithm = "aws:kms"
  21. }
  22. }
  23. }
  24. resource "aws_s3_bucket_policy" "artifacts" {
  25. bucket = aws_s3_bucket.artifacts.id
  26. policy = data.aws_iam_policy_document.artifacts.json
  27. }
  28. data "aws_iam_policy_document" "artifacts" {
  29. statement {
  30. sid = "AllowS3Access"
  31. actions = ["s3:GetObject", "s3:GetObjectVersion"]
  32. effect = "Allow"
  33. resources = ["${aws_s3_bucket.artifacts.arn}/*"]
  34. principals {
  35. type = "AWS"
  36. identifiers = sort([for a in local.responsible_accounts[var.environment] : "arn:${var.aws_partition}:iam::${a}:root"])
  37. }
  38. }
  39. }
  40. resource "aws_s3_bucket_public_access_block" "artifacts" {
  41. bucket = aws_s3_bucket.artifacts.id
  42. block_public_acls = true
  43. block_public_policy = true
  44. ignore_public_acls = true
  45. restrict_public_buckets = true
  46. }
  47. resource "aws_s3_bucket_versioning" "artifacts" {
  48. bucket = aws_s3_bucket.artifacts.id
  49. versioning_configuration {
  50. status = "Enabled"
  51. }
  52. }