iam.tf 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #############################
  2. # Salt Master instance profile
  3. #
  4. # Salt Master got needs for some sweet sweet passwords
  5. resource "aws_iam_instance_profile" "salt_master_instance_profile" {
  6. name = "salt-master-instance-profile"
  7. role = aws_iam_role.salt_master_instance_role.name
  8. }
  9. resource "aws_iam_role" "salt_master_instance_role" {
  10. name = "salt-master-instance-role"
  11. assume_role_policy = <<EOF
  12. {
  13. "Version": "2012-10-17",
  14. "Statement": [
  15. {
  16. "Sid": "",
  17. "Effect": "Allow",
  18. "Principal": {
  19. "Service": [
  20. "ec2.amazonaws.com",
  21. "ssm.amazonaws.com"
  22. ]
  23. },
  24. "Action": "sts:AssumeRole"
  25. }
  26. ]
  27. }
  28. EOF
  29. }
  30. data "aws_iam_policy_document" "salt_master_policy_doc" {
  31. statement {
  32. sid = "AllowSaltSecretsCommunication"
  33. effect = "Allow"
  34. actions = [
  35. "secretsmanager:GetResourcePolicy",
  36. "secretsmanager:GetSecretValue",
  37. "secretsmanager:DescribeSecret",
  38. "secretsmanager:ListSecretVersionIds"
  39. ]
  40. resources = [
  41. "arn:${var.aws_partition}:secretsmanager:*:*:secret:saltmaster/*"
  42. ]
  43. }
  44. statement {
  45. sid = "AllowAssumeRole"
  46. effect = "Allow"
  47. actions = [
  48. "sts:AssumeRole"
  49. ]
  50. resources = [
  51. "arn:${var.aws_partition}:iam::*:role/service/salt-master-inventory-role",
  52. "arn:${var.aws_partition}:iam::*:role/service/afsxdr-binaries_writers",
  53. ]
  54. }
  55. }
  56. resource "aws_iam_policy" "salt_master_policy" {
  57. name = "salt_master_sm"
  58. path = "/"
  59. policy = data.aws_iam_policy_document.salt_master_policy_doc.json
  60. }
  61. resource "aws_iam_role_policy_attachment" "salt_master_sm_attach" {
  62. role = aws_iam_role.salt_master_instance_role.name
  63. policy_arn = aws_iam_policy.salt_master_policy.arn
  64. }
  65. resource "aws_iam_role_policy_attachment" "salt_master_AmazonEC2RoleforSSM" {
  66. role = aws_iam_role.salt_master_instance_role.name
  67. policy_arn = "arn:${var.aws_partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM"
  68. }
  69. #This policy needs to be create prior to creating the Salt Master
  70. resource "aws_iam_role_policy_attachment" "salt_master_policy_attach_tag_read" {
  71. role = aws_iam_role.salt_master_instance_role.name
  72. policy_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:policy/launchroles/default_instance_tag_read"
  73. }
  74. #This policy needs to be create prior to creating the Salt Master
  75. resource "aws_iam_role_policy_attachment" "salt_master_policy_attach_binaries" {
  76. role = aws_iam_role.salt_master_instance_role.name
  77. policy_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:policy/launchroles/default_instance_s3_binaries"
  78. }