IAM Identity Center自定义策略与权限集失效问题排查
解决IAM Identity Center权限集Outdated及Pulumi关联自定义策略404问题
问题核心原因
- 自定义策略的存储位置错误:IAM Identity Center权限集关联的自定义IAM策略,必须存在于你要授权的目标成员账户中,而非管理IAM Identity Center的主账户。你报错的策略ARN属于目标账户,但大概率是策略被误删,或是Pulumi未先在目标账户创建策略就直接尝试关联,导致AWS找不到资源报404。
- Pulumi资源类型用错:关联SSO权限集的自定义策略,不能用普通的
CustomerManagedPolicyAttachment(这个是给IAM用户/组/角色用的),必须用SSO专属的关联资源。
Pulumi 分步解决代码示例
1. 先在目标账户创建自定义IAM策略
首先配置目标账户的Provider(通过组织默认的OrganizationAccountAccessRole跨账户操作),然后在目标账户内创建策略:
// 配置目标账户的Provider const targetAccountProvider = new aws.Provider("target-account-provider", { assumeRole: { roleArn: "arn:aws:iam::838965223641:role/OrganizationAccountAccessRole", }, }); // 在目标账户创建S3自定义策略 const s3ListPolicy = new aws.iam.Policy("cloud-devs-s3-list-policy", { name: "cloud_devs_s3_list_all_buckets_policy", policy: JSON.stringify({ Version: "2012-10-17", Statement: [ { Effect: "Allow", Action: "s3:ListAllMyBuckets", Resource: "*", }, ], }), }, { provider: targetAccountProvider }); // 指定用目标账户的Provider创建
2. 关联策略到SSO权限集
使用SSO专属的PermissionSetCustomerManagedPolicyAttachment资源关联:
// 假设已存在的权限集资源 const devPermissionSet = new aws.ssoadmin.PermissionSet("dev-s3-permission-set", { name: "DevS3Access", instanceArn: "arn:aws:sso:::instance/ssoins-xxxxxxxxx", // 替换为你的IAM Identity Center实例ARN }); // 关联自定义策略到权限集 new aws.ssoadmin.PermissionSetCustomerManagedPolicyAttachment("s3-policy-attach", { instanceArn: devPermissionSet.instanceArn, permissionSetArn: devPermissionSet.arn, customerManagedPolicyReference: { name: s3ListPolicy.name, path: "/", }, });
3. 修复权限集Outdated状态
控制台更新失败时,用CLI强制同步权限集:
aws sso-admin provision-permission-set \ --instance-arn arn:aws:sso:::instance/ssoins-xxxxxxxxx \ --permission-set-arn arn:aws:sso:::permissionSet/ssoins-xxxxxxxxx/ps-xxxxxxxxx \ --target-id 838965223641 \ --target-type AWS_ACCOUNT
或者重新部署Pulumi的AccountAssignment资源,触发自动同步。
关键注意点
- 自定义策略必须在目标成员账户创建,不能放在管理IAM Identity Center的主账户
- 关联SSO权限集一定要用
aws.ssoadmin.PermissionSetCustomerManagedPolicyAttachment,别用普通IAM的策略附件资源 - 权限集显示Outdated后,控制台更新失效时,优先用CLI或重新部署账户关联来触发同步
内容的提问来源于stack exchange,提问作者Oliver Dain
相关产品推荐
相关产品推荐

