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

Terraform配置AWS IAM Identity Center同步AD用户组及权限集求助

通过Terraform配置AWS IAM Identity Center与AD同步全流程

1. 基础准备

  • 确保Terraform AWS Provider版本 ≥ 4.0(支持IAM Identity Center最新资源)
  • 确认AWS账户已启用IAM Identity Center(未启用则Terraform可自动创建实例)
  • 获取已部署的AD目录ID(可通过AWS控制台或aws ds describe-directories命令查询)

2. 配置AWS Provider

provider "aws" {
  region = "us-east-1" # 替换为你的区域,需与AD目录同区域
}

3. 启用/引用IAM Identity Center实例

若账户未启用IAM Identity Center,用以下代码创建实例:

resource "aws_ssoadmin_instance" "main" {
  # 自动关联当前账户的AWS Organization(需确保组织已启用)
}

output "sso_instance_arn" {
  value = aws_ssoadmin_instance.main.arn
}

若已启用实例,直接引用:

data "aws_ssoadmin_instance" "main" {
  # 自动获取当前区域的IAM Identity Center实例
}

4. 关联AD目录作为身份源

将AD目录配置为IAM Identity Center的身份源,实现用户/组自动同步:

resource "aws_ssoadmin_instance_access_control_configuration" "ad_identity_source" {
  instance_arn = data.aws_ssoadmin_instance.main.arn # 或aws_ssoadmin_instance.main.arn

  identity_store {
    identity_store_id = "d-9067abcdef" # 替换为你的AD目录ID
    type              = "DIRECTORY_SERVICE"
  }
}

关联后,IAM Identity Center会自动启动首次同步,后续每4小时自动同步一次;手动触发同步可使用CLI命令:aws sso-admin start-synchronization --instance-arn <你的实例ARN>

5. 创建权限集

权限集定义用户/组访问AWS账户的权限,示例如下:

示例1:关联AWS托管策略的权限集

resource "aws_ssoadmin_permission_set" "admin_access" {
  instance_arn = data.aws_ssoadmin_instance.main.arn
  name         = "AdminAccess"
  description  = "Full administrative access to AWS accounts"
  session_duration = "PT8H" # 会话时长8小时,最大支持12小时(PT12H)
}

resource "aws_ssoadmin_managed_policy_attachment" "admin_policy" {
  instance_arn       = data.aws_ssoadmin_instance.main.arn
  permission_set_arn = aws_ssoadmin_permission_set.admin_access.arn
  managed_policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
}

示例2:关联自定义IAM策略的权限集

resource "aws_ssoadmin_permission_set" "dev_team_access" {
  instance_arn = data.aws_ssoadmin_instance.main.arn
  name         = "DevTeamAccess"
  description  = "Limited access for development team"
  session_duration = "PT4H"
}

resource "aws_ssoadmin_customer_managed_policy_attachment" "dev_policy" {
  instance_arn       = data.aws_ssoadmin_instance.main.arn
  permission_set_arn = aws_ssoadmin_permission_set.dev_team_access.arn
  customer_managed_policy_reference {
    name = "DevTeamCustomPolicy" # 替换为你的自定义IAM策略名称
    path = "/"
  }
}

6. 分配权限集到AD用户/组与AWS账户

先通过CLI获取AD用户/组ID:

  • 查询用户:aws identity-store list-users --identity-store-id <你的AD目录ID>
  • 查询组:aws identity-store list-groups --identity-store-id <你的AD目录ID>

然后配置分配:

# 示例:将AdminAccess权限集分配给AD组DevOps,关联到AWS账户123456789012
resource "aws_ssoadmin_account_assignment" "devops_admin" {
  instance_arn       = data.aws_ssoadmin_instance.main.arn
  permission_set_arn = aws_ssoadmin_permission_set.admin_access.arn
  principal_id       = "g-12345678" # 替换为你的AD组ID
  principal_type     = "GROUP"
  target_id          = "123456789012" # 替换为目标AWS账户ID
  target_type        = "AWS_ACCOUNT"
}

# 示例:将DevTeamAccess权限集分配给AD用户john.doe@example.com
resource "aws_ssoadmin_account_assignment" "john_dev" {
  instance_arn       = data.aws_ssoadmin_instance.main.arn
  permission_set_arn = aws_ssoadmin_permission_set.dev_team_access.arn
  principal_id       = "u-87654321" # 替换为你的AD用户ID
  principal_type     = "USER"
  target_id          = "123456789012"
  target_type        = "AWS_ACCOUNT"
}

关键注意事项

  • AWS Organization必须已启用,IAM Identity Center依赖组织管理账户
  • AD目录与IAM Identity Center实例必须在同一AWS区域
  • 权限集分配后需等待1-2分钟生效,用户可通过IAM Identity Center门户登录目标账户
  • 若AD用户/组未同步到IAM Identity Center,检查AD与AWS的信任关系,或手动触发同步

内容的提问来源于stack exchange,提问作者Shinigami Sin of Wrath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:13:27