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

如何配置AWS SSO登录用户承担现有IAM角色?

问题描述

原本通过给IAM用户所属组附加角色承担策略,让用户能承担特定IAM角色。但用户改用SSO登录后,无法再使用IAM凭证登录控制台,也就无法承担目标角色。已在角色承担策略中添加sts:AssumeRole和sts:AssumeRoleWithSAML权限,但仍未生效,该如何配置SSO登录用户使其能承担现有IAM角色?

现有配置

角色承担策略

"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "sts:AssumeRole",
            "sts:AssumeRoleWithSAML"
        ],
        "Resource": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/KinesisFirehoseServiceRole--us-east-1-xxxxxxxxxxxxx"
    }
]

角色信任关系

"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "firehose.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }
]
解决方案

要让SSO用户能承担目标IAM角色,需要完成两个核心配置:更新目标角色的信任关系,以及在AWS SSO权限集中添加角色承担权限,具体操作如下:

  • 修改目标IAM角色的信任关系
    当前目标角色的信任关系仅允许firehose.amazonaws.com服务主体承担,必须添加AWS SSO的身份提供商(IdP)作为可信主体,才能让SSO用户通过SSO身份承担该角色。

    更新后的信任关系示例(替换占位符为你的实际信息):

    "Version": "2012-10-17",
    "Statement": [
        // 保留原有的Firehose服务信任规则
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "firehose.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        // 添加SSO身份提供商的信任规则
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::你的AWS账号ID:saml-provider/AWSSSO"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "SAML:aud": "https://signin.aws.amazon.com/saml"
                }
            }
        }
    ]
    

    注意:arn:aws:iam::你的AWS账号ID:saml-provider/AWSSSO中的AWSSSO是AWS SSO默认创建的SAML提供商名称,若你自定义了名称,需替换为实际名称。

  • 在AWS SSO权限集中添加角色承担权限
    SSO用户的权限由AWS SSO的权限集控制,此前给IAM用户组附加的策略对SSO用户无效,需在对应SSO权限集中添加允许承担目标角色的权限:

    1. 登录AWS SSO控制台,找到目标用户/用户组所属的权限集
    2. 编辑该权限集,添加自定义权限策略,内容如下:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/KinesisFirehoseServiceRole--us-east-1-xxxxxxxxxxxxx"
            }
        ]
    }
    

    无需添加sts:AssumeRoleWithSAML,因为SSO会自动处理SAML断言流程,用户在SSO控制台切换角色时,底层调用的是sts:AssumeRole。

  • 验证配置
    完成上述操作后,让用户重新登录AWS SSO控制台,在「应用程序」中选择「AWS账户」,找到目标账户后,即可看到并切换至该IAM角色。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:30:51