amazon-web-services - AWS IAM 请求
问题描述
委托人(个人或应用程序)使用实体(用户或角色)向 AWS API 发送请求。现在,当您使用 AWS 控制台与 AWS 生态系统交互时,我知道这些请求是自动签名的,以便 AWS 可以识别谁发送了它们(而您需要手动签署 HTTP API 调用)。
对 AWS API 发出的每个请求是否都已签名?无论请求是否来自 Console/CLI/SDK/HTTP API。我知道很少有 STS 和 S3 操作是例外,但我的问题是找出签署请求是否取决于请求的来源,即控制台/CLI/SDK/HTTP API?或者如果这适用于所有自动或手动?
在 IAM 用户指南文档中,提到 -
当您使用 AWS 命令行界面 (AWS CLI) 或 AWS 开发工具包之一向 AWS 发出请求时,这些工具会使用您在配置工具时指定的访问密钥自动为您签署请求
那么,当通过 AWS 控制台发出请求时,这些请求是如何签名的呢?作为控制台用户没有访问密钥?
- 担任角色时,用户会发送 STS:Assumerole 请求,请求中指定的角色。返回的临时凭证是否适用于担任该角色的用户或临时凭证是否适用于该角色?基本上,我想了解的是,如果 STS:Assumerole 是对角色或承担该角色的用户进行身份验证?
解决方案
CLI 使用 Python SDK (boto3),它使用 HTTP API。它们都以相同的方式签署 HTTP API 请求。如果不先配置访问密钥,您将无法使用 CLI。
sts:AssumeRole
为您提供该角色的临时访问密钥,而不是用户。
推荐阅读
- java - Spring WebFlux:如何从数据库中将文件作为字节数组返回
- javascript - 提交表单后删除 Formik 错误消息
- python - 关于python的w3w字典练习题的问题
- python - Pygame 没有移动我的矩形,我不知道为什么?
- grpc - grpc-java 定义没有proto文件的服务和方法
- javascript - 如何从 JS 文件调用 Odoo 控制器函数
- oracle - 我的 PL/SQL 代码中存在编译错误
- mysql - 避免更新唯一列时出现重复输入错误
- javascript - 谷歌地图与 React Js 项目的集成
- amazon-s3 - 预览私有 S3 文档的最佳方式