首页 > 解决方案 > AWS IAM 请求

问题描述

委托人(个人或应用程序)使用实体(用户或角色)向 AWS API 发送请求。现在,当您使用 AWS 控制台与 AWS 生态系统交互时,我知道这些请求是自动签名的,以便 AWS 可以识别谁发送了它们(而您需要手动签署 HTTP API 调用)。

  1. 对 AWS API 发出的每个请求是否都已签名?无论请求是否来自 Console/CLI/SDK/HTTP API。我知道很少有 STS 和 S3 操作是例外,但我的问题是找出签署请求是否取决于请求的来源,即控制台/CLI/SDK/HTTP API?或者如果这适用于所有自动或手动?

  2. 在 IAM 用户指南文档中,提到 -

当您使用 AWS 命令​​行界面 (AWS CLI) 或 AWS 开发工具包之一向 AWS 发出请求时,这些工具会使用您在配置工具时指定的访问密钥自动为您签署请求

那么,当通过 AWS 控制台发出请求时,这些请求是如何签名的呢?作为控制台用户没有访问密钥?

  1. 担任角色时,用户会发送 STS:Assumerole 请求,请求中指定的角色。返回的临时凭证是否适用于担任该角色的用户或临时凭证是否适用于该角色?基本上,我想了解的是,如果 STS:Assumerole 是对角色或承担该角色的用户进行身份验证?

标签: amazon-web-servicesamazon-iam

解决方案


CLI 使用 Python SDK (boto3),它使用 HTTP API。它们都以相同的方式签署 HTTP API 请求。如果不先配置访问密钥,您将无法使用 CLI。

sts:AssumeRole为您提供该角色的临时访问密钥,而不是用户。


推荐阅读