我有一个用例,其中我需要为每个经过身份验证的用户提供临时AWS STS令牌(使用公司IDP进行身份验证)。这些令牌将用于推送亚马逊网络服务S3中的某些数据。通过在IDP响应中使用SAML断言并作为SP (IDP initiated sign-on)与AWS集成,我能够获得此流,类似于此处所示的一个。
但由于STS允许令牌有效期最长为1小时,所以我希望在到期前刷新这些令牌,这样我就不必再次提示用户提供凭据(用户体验不佳)。此外,由于这些是公司登录凭据,我无法将它们存储在应用程序中。
我正在查看AWS IAM信任策略,其中一种方法是将'AssumeRole‘条目添加到现有的SAML信任策略中,如下所示(策略中的第二个条目)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::xxxxxxxxxxxx:saml-provider/myidp.com"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/testapp/testuser"
},
"Action": "sts:AssumeRole"
}
]
}
因此,当测试用户首次使用AssumeRoleWithSAML应用程序接口/命令行界面登录时,他将获得临时凭据。接下来,他可以对这些凭据使用'AssumeRole‘应用程序接口/命令行界面,这样他就可以继续刷新令牌,而不需要IDP凭据。
可以看出,这仅适用于具有"arn:aws:sts::xxxxxxxxxxxx:assumed-role/testapp/testuser“的ARN的STS用户,用于刷新令牌,因为他/她可以承担该角色。但是我需要一种通用的方式,对于任何登录的用户,他都可以生成STS令牌。
一种方法是在主体的信任策略中使用通配符,但看起来不支持。因此,每次令牌过期时,我都会遇到跟踪凭据的问题。有没有办法解决这个问题?
谢谢,罗翰。
发布于 2020-01-08 22:06:28
我已经能够通过在IAM信任策略中指定角色而不是假设角色来使其正常工作。现在,如果我的用户已经承担了testapp
角色,那么他们可以无限期地刷新他们的令牌。
"Principal": {
"AWS": "arn:aws:sts::xxxxxxxxxxxx:role/testapp"
},
发布于 2018-06-09 03:04:08
AWS STS支持AssumeRole* API的更长角色会话(最长12小时)。这是在3/28/18发布的,这是亚马逊网络服务的最新链接:https://aws.amazon.com/about-aws/whats-new/2018/03/longer-role-sessions/。这样你就不需要刷新了,因为我假设一个典型的工作日是< 12小时:-)
https://stackoverflow.com/questions/49316650
复制相似问题