タダです.
タイトルの通り 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", ] }
関連情報
まとめ
自分の備忘録となりますが,Terraform で IAM Identity Center を扱ったので記事にしました.