s3.tf 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 var.responsible_accounts[var.environment] : "arn:${var.aws_partition}:iam::${a}:root"])
  34. }
  35. }
  36. }