我们已成功使用 Google 设置外部 IDP 并将其连接到 AWS。我们的用户现在已与 AWS 建立联合 SSO,并且可以使用我们创建的 SAML 2.0 联合角色轻松登录 Web 控制台。此角色还允许编程访问,但我找不到任何有关如何实现此操作的文档。执行此操作的正常方法是创建一个 IAM 用户,该用户使用 CLI 中的自己的访问密钥,但在这种情况下,我们没有任何 IAM 用户……他们在 AWS 之外进行身份验证。有人知道如何设置吗?
答案1
这是可行的,但不太方便。通过 SAML 登录 AWS 控制台后,可以使用 Chrome 插件提取访问密钥、密钥和安全令牌值(通过 CLI 进行 STS 登录所需)。这处理身份提供者和 AWS 的 SAML 端点之间的来回通信。
对于纯 CLI 解决方案,恐怕您必须编写一些脚本。路线在 AWS 文档中有描述,但涉及:
- 客户端向您组织的 IdP 发送请求。
- IdP 服务器发回 SAML 断言。
- 客户端访问 AWS
AssumeRoleWithSAML
API 端点 (aws sts assume-role-with-saml
) - AWS 返回身份验证所需的访问密钥、密钥和安全令牌。
此时,您已拥有凭据。一旦将它们应用到您的环境中,CLI 命令就会像往常一样工作。对于无人值守的脚本,您是否能够使用此路由完全取决于您的 IdP 是否能够允许该工作流程。
答案2
我使用 PowerShell 创建了一个 CLI 解决方案,它会弹出一个浏览器窗口进行身份验证,并提取 SAML 断言并将其交换为令牌。请在此处查看:如果您正在寻找一种使用 Google 在 CLI 中进行身份验证的方法,请查看以下内容:https://github.com/beyondcomputing-org/AWS.SAML