iam.tf 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. ]
  53. }
  54. }
  55. resource "aws_iam_policy" "salt_master_policy" {
  56. name = "salt_master_sm"
  57. path = "/"
  58. policy = data.aws_iam_policy_document.salt_master_policy_doc.json
  59. }
  60. resource "aws_iam_role_policy_attachment" "salt_master_sm_attach" {
  61. role = aws_iam_role.salt_master_instance_role.name
  62. policy_arn = aws_iam_policy.salt_master_policy.arn
  63. }
  64. resource "aws_iam_role_policy_attachment" "salt_master_AmazonEC2RoleforSSM" {
  65. role = aws_iam_role.salt_master_instance_role.name
  66. policy_arn = "arn:${var.aws_partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM"
  67. }
  68. #This policy needs to be create prior to creating the Salt Master
  69. resource "aws_iam_role_policy_attachment" "salt_master_policy_attach" {
  70. role = aws_iam_role.salt_master_instance_role.name
  71. policy_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:policy/launchroles/default_instance_tag_read"
  72. }