instance_profile.tf 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #############################
  2. # GitHub Enterprise instance profile
  3. #
  4. # Includes policies for GitHub Enterprise:
  5. # * Same policies as the default instance profile
  6. module "instance_profile" {
  7. source = "../../submodules/iam/base_instance_profile"
  8. prefix = "xdr-github"
  9. aws_partition = var.aws_partition
  10. aws_account_id = var.aws_account_id
  11. }
  12. # GitHub Enterprise Specific Policy
  13. resource "aws_iam_policy" "github_instance_policy" {
  14. name = "github_instance_policy"
  15. path = "/launchroles/"
  16. description = "This policy allows github-specific functions"
  17. policy = data.aws_iam_policy_document.github_instance_policy_doc.json
  18. }
  19. data "aws_iam_policy_document" "github_instance_policy_doc" {
  20. # Allow using S3 for GH Actions
  21. statement {
  22. sid = "GeneralBucketAccess"
  23. effect = "Allow"
  24. actions = [
  25. "s3:ListAllMyBuckets",
  26. ]
  27. resources = ["*"]
  28. }
  29. statement {
  30. sid = "S3BucketAccess"
  31. effect = "Allow"
  32. actions = [
  33. "s3:PutObject",
  34. "s3:GetObject",
  35. "s3:ListBucketMultipartUploads",
  36. "s3:ListMultipartUploadParts",
  37. "s3:AbortMultipartUpload",
  38. "s3:DeleteObject",
  39. "s3:ListBucket",
  40. # "s3:GetLifecycleConfiguration",
  41. # "s3:DeleteObjectVersion",
  42. # "s3:ListBucketVersions",
  43. # "s3:GetBucketLogging",
  44. # "s3:RestoreObject",
  45. # "s3:GetBucketVersioning",
  46. # "s3:PutLifecycleConfiguration",
  47. # "s3:GetBucketCORS",
  48. # "s3:GetBucketLocation",
  49. # "s3:GetObjectVersion",
  50. ]
  51. resources = [
  52. "arn:${var.aws_partition}:s3:::xdr-github-enterprise-${var.environment}-github-actions",
  53. "arn:${var.aws_partition}:s3:::xdr-github-enterprise-${var.environment}-github-actions/*",
  54. ]
  55. }
  56. statement {
  57. sid = "KMSKeyAccess"
  58. effect = "Allow"
  59. actions = [
  60. "kms:Decrypt",
  61. "kms:GenerateDataKeyWithoutPlaintext",
  62. "kms:Verify",
  63. "kms:GenerateDataKeyPairWithoutPlaintext",
  64. "kms:GenerateDataKeyPair",
  65. "kms:ReEncryptFrom",
  66. "kms:Encrypt",
  67. "kms:GenerateDataKey",
  68. "kms:ReEncryptTo",
  69. "kms:Sign",
  70. ]
  71. resources = ["*"]
  72. }
  73. }
  74. resource "aws_iam_role_policy_attachment" "github_instance_policy_attach" {
  75. role = module.instance_profile.role_id
  76. policy_arn = aws_iam_policy.github_instance_policy.arn
  77. }