irsa.tf 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. resource "aws_iam_role" "eso-e2e-irsa" {
  35. name = "eso-e2e-irsa"
  36. path = "/"
  37. assume_role_policy = data.aws_iam_policy_document.assume-policy.json
  38. }
  39. # Attach the AWS managed policy for Secrets Manager
  40. resource "aws_iam_role_policy_attachment" "secrets_manager" {
  41. role = aws_iam_role.eso-e2e-irsa.name
  42. policy_arn = "arn:aws:iam::aws:policy/SecretsManagerReadWrite"
  43. }
  44. # Create and attach the inline policy for SSM Parameter Store
  45. resource "aws_iam_role_policy" "ssm_parameterstore" {
  46. name = "aws_ssm_parameterstore"
  47. role = aws_iam_role.eso-e2e-irsa.id
  48. policy = data.aws_iam_policy_document.ssm_parameterstore.json
  49. }