You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform将AWS SSO权限集分配至多账户组?

解决Terraform自动化分配AWS SSO权限集到组的问题

你遇到的错误是因为旧文档中的aws_sso_permission_set_group_assignment等资源类型已被AWS Provider弃用,当前HashiCorp AWS Provider v4.0及以上版本使用aws_ssoadmin_account_assignment资源来实现权限集到身份(组/用户)在指定账户的分配。

核心步骤与代码示例

1. 确保使用兼容的AWS Provider版本

在Terraform配置中指定AWS Provider版本至少为v4.0:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 4.0.0"
    }
  }
}

2. 获取SCIM同步组的ID

通过aws_identitystore_group数据源自动获取SCIM同步到AWS SSO的组ID,无需手动查找:

data "aws_identitystore_group" "dev_team" {
  identity_store_id = aws_ssoadmin_instance.main.identity_store_id
  display_name      = "Dev-Team" # 替换为你的SCIM组名
}

3. 批量分配权限集到组与指定账户

使用for_each遍历选定的账户列表,批量创建分配:

# 定义需要分配的账户ID列表
variable "target_accounts" {
  type    = list(string)
  default = ["123456789012", "234567890123"] # 替换为你的目标账户ID
}

# 已创建的权限集示例(假设你已有此资源)
resource "aws_ssoadmin_permission_set" "dev_access" {
  name         = "Dev-Access"
  instance_arn = aws_ssoadmin_instance.main.arn
}

# 批量创建权限集到组的账户分配
resource "aws_ssoadmin_account_assignment" "dev_team_to_accounts" {
  for_each = toset(var.target_accounts)

  instance_arn       = aws_ssoadmin_instance.main.arn
  permission_set_arn = aws_ssoadmin_permission_set.dev_access.arn
  principal_type     = "GROUP"
  principal_id       = data.aws_identitystore_group.dev_team.group_id
  target_type        = "AWS_ACCOUNT"
  target_id          = each.value
}

关键注意事项

  • 权限验证:确保Terraform执行的IAM身份拥有ssoadmin:CreateAccountAssignment、identitystore:DescribeGroup等相关权限。
  • SSO实例关联:所有目标账户必须已关联到你的AWS SSO实例,否则分配会失败。
  • 重复分配处理:如果同一组+权限集+账户的分配已存在,Terraform会跳过创建,不会报错。

内容的提问来源于stack exchange,提问作者BobMonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:02:21