継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Terraform で IAM Identity Center のカスタムロール追加とグループの関連付けを行う

タダです.

タイトルの通り Terraform で IAM Identity Center のカスタムロール作成とロールのグループ関連付けを行う機会があり,学びもあったので記事にしていきます.

Terraform のコード

具体的なコードは下記でカスタムロール作成とグループの紐づけを行っているのですが,カスタムロールというかポリシーの作成は aws_ssoadmin_permission_set_inline_policy で作り,グループの一覧は locals.tf に必要なグループ名を定義しておきそのグループを aws_identitystore_group で ID を取ります.そのグループ ID をaws_ssoadmin_account_assignment にセットして関連付けます.

iamidentitycenter.tf

data "aws_ssoadmin_instances" "hoge" {}
resource "aws_ssoadmin_permission_set" "hoge" {
  name             = "hoge"
  instance_arn     = tolist(data.aws_ssoadmin_instances.hoge.arns)[0]
  session_duration = "PT1H"
}
data "aws_iam_policy_document" "hoge" {
  statement {
    actions = [
      "s3:ListAllMyBuckets",
      "s3:GetBucketLocation",
      "s3:ListBucket",
    ]
    resources = [
      "*"
    ]
  }
}
resource "aws_ssoadmin_permission_set_inline_policy" "hoge" {
  instance_arn       = tolist(data.aws_ssoadmin_instances.hoge.arns)[0]
  inline_policy      = data.aws_iam_policy_document.hoge.json
  permission_set_arn = aws_ssoadmin_permission_set.hoge.arn
}
data "aws_identitystore_group" "hoge" {
  for_each = toset(local.groups)
  identity_store_id = tolist(data.aws_ssoadmin_instances.hoge.identity_store_ids)[0]
  alternate_identifier {
    unique_attribute {
      attribute_path = "DisplayName"
      attribute_value = each.key
    }
  }
}
resource "aws_ssoadmin_account_assignment" "hoge" {
  for_each = toset(["グループA", "グループB"])
  instance_arn       = tolist(data.aws_ssoadmin_instances.hoge.arns)[0]
  permission_set_arn = aws_ssoadmin_permission_set.hoge.arn
  principal_id   = data.aws_identitystore_group.hoge[each.key].id
  principal_type = "GROUP"
  target_id   = "123456789012 "
  target_type = "AWS_ACCOUNT"
}

locals.tf

locals {
  groups = [
    "グループA",
    "グループB",
    "グループC",
    "グループD",
  ]
}

関連情報

registry.terraform.io

registry.terraform.io

registry.terraform.io

まとめ

自分の備忘録となりますが,Terraform で IAM Identity Center を扱ったので記事にしました.