irsa.tf 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. data "aws_iam_policy_document" "assume-policy" {
  2. statement {
  3. actions = ["sts:AssumeRoleWithWebIdentity"]
  4. condition {
  5. test = "StringEquals"
  6. variable = "${trimprefix(module.eks.cluster_oidc_issuer_url, "https://")}:sub"
  7. values = [
  8. "system:serviceaccount:${local.serviceaccount_namespace}:${local.serviceaccount_name}"
  9. ]
  10. }
  11. principals {
  12. type = "Federated"
  13. identifiers = [module.eks.oidc_provider_arn]
  14. }
  15. }
  16. }
  17. # Create the IAM policy document for SSM Parameter Store access
  18. data "aws_iam_policy_document" "ssm_parameterstore" {
  19. statement {
  20. actions = [
  21. "ssm:GetParameter*",
  22. "ssm:PutParameter",
  23. "ssm:DescribeParameters",
  24. "ssm:DeleteParameter*",
  25. "ssm:AddTagsToResource",
  26. "ssm:ListTagsForResource",
  27. "ssm:RemoveTagsFromResource",
  28. "tag:GetResources"
  29. ]
  30. effect = "Allow"
  31. resources = ["*"]
  32. }
  33. }
  34. # Create the IAM policy document for ACM access
  35. data "aws_iam_policy_document" "acm" {
  36. statement {
  37. actions = [
  38. "acm:GetCertificate",
  39. "acm:ImportCertificate",
  40. "acm:DeleteCertificate",
  41. "acm:DescribeCertificate",
  42. "acm:ListTagsForCertificate",
  43. "acm:AddTagsToCertificate",
  44. "acm:RemoveTagsFromCertificate",
  45. "tag:GetResources"
  46. ]
  47. effect = "Allow"
  48. resources = ["*"]
  49. }
  50. }
  51. resource "aws_iam_role" "eso-e2e-irsa" {
  52. name = "eso-e2e-irsa"
  53. path = "/"
  54. assume_role_policy = data.aws_iam_policy_document.assume-policy.json
  55. }
  56. # Attach the AWS managed policy for Secrets Manager
  57. resource "aws_iam_role_policy_attachment" "secrets_manager" {
  58. role = aws_iam_role.eso-e2e-irsa.name
  59. policy_arn = "arn:aws:iam::aws:policy/SecretsManagerReadWrite"
  60. }
  61. # Create and attach the inline policy for SSM Parameter Store
  62. resource "aws_iam_role_policy" "ssm_parameterstore" {
  63. name = "aws_ssm_parameterstore"
  64. role = aws_iam_role.eso-e2e-irsa.id
  65. policy = data.aws_iam_policy_document.ssm_parameterstore.json
  66. }
  67. # Create and attach the inline policy for ACM
  68. resource "aws_iam_role_policy" "acm" {
  69. name = "aws_acm"
  70. role = aws_iam_role.eso-e2e-irsa.id
  71. policy = data.aws_iam_policy_document.acm.json
  72. }