为联合 IAM 用户创建临时访问密钥

为联合 IAM 用户创建临时访问密钥

我们已经设置了 IAM 角色,允许通过 Okta 身份验证的联合用户访问 AWS 控制台。

一些用户需要临时的 AWS 访问密钥才能在本地使用 AWS 命令​​行工具。

这些用户有没有办法在 AWS 控制台或 Shell 脚本中创建临时访问密钥?

答案1

在最近的一个项目中,我需要让用户利用 Okta 访问 AWS 控制台并使用 AWS CLI。因此,我编写了一个工具,该工具将使用可与 CLI 一起使用的 Okta 登录生成的 SAML 断言生成临时 AWS 凭证(来自 STS)。

这允许所有 AWS 访问都通过 Okta 进行代理,并允许控制台和 CLI 访问都需要 MFA 登录。

该工具 okta_aws_login.py 可在以下位置找到:GitHub在我写的关于设置的系列博文中可以找到更多详细信息Okta 与 AWS 的用户联合

答案2

如果我正确理解了你的用例,那么这是不可能的,因为由此产生的临时凭证来自支持获取联邦令牌API 操作本身不能用来调用这些船用运输系统API,见表格比较 AWS STS API 的功能了解详情。

此功能需要由负责长期 AWS 凭证 (Okta) 的实体提供,该实体可以提供生成的临时凭证三元组以供复制/粘贴到 AWS CLI 场景中。

答案3

我最终创造了一个小型网络应用程序我们内部运行的,它将使用 AssumeRole 为我们的用户颁发临时 AWS 凭证。它有两种操作模式:

  • 使用 SSO:用户访问一个 URL 并查看他可以复制的凭据。

  • 命令行客户端:向 webapp 发出 https 请求(使用 Okta 用户名和密码)。如果 Okta 身份验证成功,客户端会将凭证写入 ~/.aws/credentials。

答案4

我有一个解决方案;https://github.com/nathan-v/aws_okta_keyman

它支持大多数 MFA 因素,并且易于使用,可部署在开发人员工作站上,无需任何额外服务或繁琐的依赖关系。您只需使用 Python 和 pip 即可立即开始使用它。

~/.aws/credentials 该工具允许开发人员在其 AWS 访问权限与 Okta 联合的情况下通过 STS 提取密钥,这些密钥将以他们选择的配置文件名称(可选)写出,以便您可以轻松地管理来自多个帐户或角色的密钥。

相关内容