main.tf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Permission sets ============================================================

resource "aws_ssoadmin_permission_set" "this" {
  for_each = var.permission_sets

  name             = each.value.name
  description      = each.value.description
  instance_arn     = var.sso_instance_arn
  session_duration = each.value.session_duration
  relay_state      = each.value.relay_state

  tags = local.tags
}

# Inline policies ------------------------------------------------------------

resource "aws_ssoadmin_permission_set_inline_policy" "this" {
  for_each = {
    for k, v in var.permission_sets : k => v
    if v.inline_policy != null
  }

  instance_arn       = var.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.this[each.key].arn
  inline_policy      = each.value.inline_policy
}

# AWS managed policy attachments ---------------------------------------------

resource "aws_ssoadmin_managed_policy_attachment" "this" {
  for_each = local.managed_policy_map

  instance_arn       = var.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.this[each.value.ps_key].arn
  managed_policy_arn = each.value.policy_arn
}

# Customer managed policy attachments ----------------------------------------

resource "aws_ssoadmin_customer_managed_policy_attachment" "this" {
  for_each = local.customer_policy_map

  instance_arn       = var.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.this[each.value.ps_key].arn

  customer_managed_policy_reference {
    name = each.value.name
    path = each.value.path
  }
}

# Assignments ================================================================

resource "aws_ssoadmin_account_assignment" "this" {
  for_each = local.assignment_map

  instance_arn       = var.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.this[each.value.permission_set_key].arn
  target_id          = each.value.account_id
  target_type        = "AWS_ACCOUNT"
  principal_id       = each.value.principal_id
  principal_type     = each.value.principal_type
}