使用OneLogin SAML和MFA获取AWS API凭据

9
我们希望允许用户通过输入密码和多重身份验证来从OneLogin检索给定AWS角色的一组临时CLI凭据。我们有一个可行的解决方案,但它要求用户每60分钟完全重新验证OneLogin(包括MFA),因为AWS临时凭据会过期。我认为这不可行 - 我们的用户习惯于与真实IAM用户相关联的永久API凭据。
理想情况下,我们希望允许用户每天只需进行一次身份验证,安全地缓存生成的SAML断言,并使用该断言在需要更新AWS API凭证时自动刷新。我想到了类似于aws-keychain的东西,它将使用本地操作系统凭据存储库来记住SAML断言,并仅在用户的OneLogin会话超时时提示用户输入。
这几乎可以正常工作。问题在于OneLogin的saml_assertionverify_factor端点返回的SAML断言在SubjectConditions字段上设置了三分钟的截止期限。
我们是否有办法实现我们想要的功能,还是我们正在绕过核心SAML原则?

你解决了这个问题吗? - Pavel Nikolov
@PavelNikolov,不,我们没有。我上面提到的方法可能是错误的;我们希望MFA验证与建立用户会话相关联,而不是与发出SAML断言相关联。然后,只要我的用户会话有效,我就可以自动生成匹配的SAML断言,并将其转换为AWS中的会话令牌。我认为我们无法通过现有的OneLogin API设计来实现这一点。 - Jack Foy
我不知道这是否能够帮助到您的使用情况,但是STS会话现在可以有效期长达36小时。 - Evan
@Evan,我看这个扩展似乎适用于GetSessionToken和GetFederationToken下的会话,但不适用于AssumeRoleWithSAML。不过还是谢谢你提供的指引。 - Jack Foy
好消息是,由于AWS(终于)允许CLI会话超过一小时,我们实际上不必实现这一点:https://aws.amazon.com/es/blogs/security/enable-federated-api-access-to-your-aws-resources-for-up-to-12-hours-using-iam-roles/ - John Offenhartz
2个回答

1
我们正在正式添加一个选项,在我们的官方CLI工具中重复使用用户凭证,类似于您所描述的内容。
实质上,我们的CLI工具有一个选项,可以在后台重复使用用户/密码,以连续刷新用户配置文件中的访问信息,因此,用户只需提供一次凭证,访问信息将在过期之前得到更新。
但不幸的是,至少目前为止,如果应用程序策略需要MFA,就无法避免MFA部分。它将需要MFA来刷新凭证。
如果您必须使用MFA,您始终可以使用OneLogin MFA API将MFA流程嵌入工具中……
点击此处查看: https://github.com/onelogin/onelogin-aws-cli-assume-role/pull/5

好消息是,由于AWS(终于)允许CLI会话超过一小时,我们实际上不必实现这一点:https://aws.amazon.com/es/blogs/security/enable-federated-api-access-to-your-aws-resources-for-up-to-12-hours-using-iam-roles/ - John Offenhartz
我将IAM角色更新为最多12小时,但似乎会话仍每小时过期。是否有办法通过onelogin cli将会话设置为12小时? - Ebrahim Moshaya
CLI工具是否可以配置为每小时刷新令牌?如果是这样的话,它会刷新您的会话并使其看起来像您的会话已过期,即使它实际上没有过期。 - John Offenhartz

1
这里接受的答案已经不再正确。现在可以在会话开始时对用户进行身份验证和MFA验证,然后每小时刷新会话而无需再输入MFA令牌。
要做到这一点,您必须使用CLI工具的--loop参数,并在OneLogin中拥有相应的应用策略,以启用“如果在最后X分钟内收到OTP,则跳过”设置。

https://developers.onelogin.com/api-docs/1/samples/aws-cli


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接