iam.tf 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. "arn:${var.aws_partition}:iam::*:role/service/splunk-apps-s3-writer",
  54. ]
  55. }
  56. }
  57. resource "aws_iam_policy" "salt_master_policy" {
  58. name = "salt_master_sm"
  59. path = "/"
  60. policy = data.aws_iam_policy_document.salt_master_policy_doc.json
  61. }
  62. resource "aws_iam_role_policy_attachment" "salt_master_sm_attach" {
  63. role = aws_iam_role.salt_master_instance_role.name
  64. policy_arn = aws_iam_policy.salt_master_policy.arn
  65. }
  66. resource "aws_iam_role_policy_attachment" "salt_master_AmazonEC2RoleforSSM" {
  67. role = aws_iam_role.salt_master_instance_role.name
  68. policy_arn = "arn:${var.aws_partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM"
  69. }
  70. #This policy needs to be create prior to creating the Salt Master
  71. resource "aws_iam_role_policy_attachment" "salt_master_policy_attach_tag_read" {
  72. role = aws_iam_role.salt_master_instance_role.name
  73. policy_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:policy/launchroles/default_instance_tag_read"
  74. }
  75. #This policy needs to be create prior to creating the Salt Master
  76. resource "aws_iam_role_policy_attachment" "salt_master_policy_attach_binaries" {
  77. role = aws_iam_role.salt_master_instance_role.name
  78. policy_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:policy/launchroles/default_instance_s3_binaries"
  79. }