X-Amz-Expires 是向 AWS 发出的请求所需的标头/参数吗?

2024-05-15

  1. Is X-Amz-Expires必需的标头/参数?官方文档不一致,用在一些例子 http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html,虽然不在others http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html.

  2. 如果不需要,签名请求的默认过期值是多少?它是否等于最大可能值X-Amz-Expires参数,即604800(7天) http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html?

  3. 该文档(参见上面的链接)讨论了X-Amz-Expires仅在查询字符串中传递签名参数的上下文中使用参数。如果X-Amz-Expires参数是必需的,是否仅在查询字符串中传递签名参数时才需要(而不是通过授权标头传递它们)?


Update:

AWS 安全流程简介 https://d0.awsstatic.com/whitepapers/Security/Intro_Security_Practices.pdf纸,第 17 页说

请求必须在 15 分钟内到达 AWS 请求中的时间戳。否则,AWS 会拒绝该请求。

现在我们在这里谈论什么时间戳?我的猜测是X-Amz-Date。如果我是对的,那么另一个问题就会出现:

  1. How do X-Amz-Date and X-Amz-Expires参数之间有什么关系吗?对我来说,这听起来像是请求过期算法从 15 分钟回退到X-Amz-Date时间戳,如果X-Amz-Expire不存在。

Is X-Amz-Expires必需的标头/参数?

X-Amz-Expires仅与查询字符串身份验证一起使用,而不与Authorization: header.

查询字符串身份验证没有默认值。这是必需的参数,如果出现以下情况,服务将拒绝请求X-Amz-Algorithm=AWS4-HMAC-SHA256存在于查询字符串中,但是X-Amz-Expires=... is not.

<Error>
  <Code>AuthorizationQueryParametersError</Code>
...

现在我们在这里谈论什么时间戳?

这是指X-Amz-Date:当与Authorization:标头。因为X-Amz-Date:是签名算法输入的一部分,日期或时间的更改也会更改签名。早或晚 1 秒签名的其他方面相同的请求具有完全不同的签名。 AWS 本质上允许您的服务器时钟误差最多 15 分钟,而不会破坏您验证请求的能力。这不是后备或默认。这是一个固定的窗口。

The X-Amz-Date: of Authorization:AWS 将基于标头的请求与其系统时间进行比较,系统时间当然与 UTC 同步,如果请求到达时该值与 UTC 偏差超过 15 分钟,则请求将被拒绝。在时间检查之前不会发生与身份验证相关的其他验证。

查询字符串身份验证过期的验证涉及不同的逻辑:

  • X-Amz-Expires不得大于 604800 或小于 0 的值;否则,该请求将立即被拒绝,而不进行进一步处理,包括类似于上述消息的消息。
  • X-Amz-Date根据 AWS 系统时钟,未来时间不得超过 15 分钟。错误是Request is not yet valid.
  • X-Amz-Date不得超过X-Amz-Expires过去的秒数,相对于 AWS 系统时钟,并且不适用 15 分钟容差。错误是Request has expired.

如果发生任何这些情况,则不会对签名进行进一步验证,因此这些消息不会根据签名的有效性而改变。这是首先检查的。

另外,您的最左边的 8 个字符X-Amz-Date:必须与您的日期部分匹配Credential的组成部分Authorization:标头。日期本身对凭证差异的容忍度为零(因此,在签名时,不要读取系统时间两次,否则您可能会在 UTC 午夜左右偶尔生成无效签名)。

最后,请求在处理过程中不会过期。如果您使用任一签名方法发送请求,而该签名方法在到达时被视为有效,但很快就会过期,则始终允许该请求运行完成——例如,大型 S3 下载或 EBS 快照创建请求将不会启动,然后无法继续,因为到期计时器在 AWS 端已启动请求时触发。如果该操作在请求时获得授权,则该操作会正常继续并成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

X-Amz-Expires 是向 AWS 发出的请求所需的标头/参数吗? 的相关文章

  • 使用 AWS Lambda 从 AWS S3 读取并提取巨大的 zip 文件

    我正在开发数据管理应用程序 客户可以上传zip file approx 250 MB 与多个text files approx 1500 MB on AWS S3 但由于记忆有限aws lamda 最大 1536MB 大小 我能够提取 50
  • 使用 Ruby 获取 AWS 区域名称

    我正在为 AWS 开发 Rails 应用程序 并希望为区域名称创建下拉菜单 例如 us east 1 等 如果有人已经创建了 gem 来获取它们 我想使用它 有人知道这样的 gem 或有用的 API 吗 适用于 Ruby 的 AWS 开发工
  • 您可以克隆 AWS lambda 吗?

    针对不同环境的克隆 分期 QA PROD DEV 等 有没有一种快速简单的方法来克隆我的 lambda 给出不同的名称并从那里调整配置 您需要在新帐户中重新创建 Lambda 函数 转到 lambda 函数 单击 操作 并导出您的函数 下载
  • 从 Power BI Web 刷新 AWS RDS 数据库

    我在 Power BI Desktop 中创建了一个报表 连接到 AWS RDS 数据库 并将其发布到 Power BI Web 应用程序 目的是从 Web 应用程序刷新数据集 我尝试使用 MySQL 和 SQL Server 在 RDS
  • Terraform:如何附加服务器计数并将服务器分配给多个可用区?

    main tf resource aws instance service ami lookup var aws winamis var awsregion count var count key name var key name ins
  • 避免在 AWS Lambda 上使用 netcore2.0 和 Serilog 进行两次日志记录

    将我的 netcore 项目升级到 2 0 后 当我的应用程序在使用 Serilog 框架的 AWS Lambda 上运行时 我会看到双日志 请参阅下面我的设置 public void ConfigureServices IServiceC
  • Amazon SageMaker 不支持的内容类型应用程序/x-image

    我在 Sagemaker 中部署了基于 TensorFlow keras 的 CNN 模型 现在为了调用推论 我遵循了这个tutorial https aws amazon com blogs machine learning classi
  • 无法更新 AWS S3 CORS 策略

    我需要更改我的 AWS S3 存储桶 CORS 策略才能将我的 ReactJS 文件上传到 AWS S3 但我不断收到此 API 响应 预期 params CORSConfiguration CORSRules 是一个数组 我现在很茫然 有
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • AWS API Gateway - Lambda - 内部服务器错误

    我正在通过 lambda 将图像上传到 s3 一切正常 没有错误 但 API Gateway 的响应是 500 内部服务器错误 我按照本教程配置了 api gateway 对与 Amazon API Gateway 的 API 集成的二进制
  • AWS beanstalk Nodejs 多核

    我有一个问题 在文档中找不到 如果我使用 beanstalk 创建一个 Nodejs 应用程序并使用多核机器 beanstalk 会利用所有这些核心吗 由于nodejs是单线程应用程序 beanstalk会为每个cpu创建一个新的nodej
  • AWS Athena csv 元数据分隔符在首次查询使用后发生更改

    我想向 athena 查询 s3 csv 文件 源 csv 文件描述 分隔符 system information val1 val2 val3 val4 val5 在此基础上我在 athena 中创建表 Create external t
  • AWS API Gateway 更改资源策略中的访问被拒绝响应消息

    如何从 AWS API Gateway 资源策略错误更改默认 403 正文 Message User anonymous is not authorized to perform execute api Invoke on resource
  • CNAME 速度慢吗?

    我将 CNAME 与 S3 CloudFront 一起使用来提供一些静态文件 例如 js css 图像等 我这样做是为了使存储桶的 URL 更漂亮 因为我认为最好将所有内容都定位到我的网站 以防万一将来我想移动这些文件 更改应该是透明的 今
  • 向多个 EC2 实例发送 AWS CloudWatch 警报

    我想要应用 CloudWatch 警报来停止我们的预生产环境中未使用的实例 我们经常会遇到实例被启动 使用然后保持打开状态 这确实开始花费我们相当多的钱 CloudWatch 警报有一个方便的功能 我们可以根据一些指标停止 这太棒了 我想用
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • 如何通过API网关从lambda正确返回二进制文件(图像)

    这是我的 lambda exports handler async event gt const hex 89504e470d0a1a0a0000000d49484452000000a0000000a00800000000aea438f10
  • 使用 Boto3 超时的 AWS Lambda 函数

    我已经解决了我自己的问题 但无论如何我都会发布它 希望能节省其他人几个小时 我在 AWS 上有一个无服务器项目 使用 Python 将记录插入到 kinesis 队列中 但是 当我使用 boto3 client kinesis 或 put
  • 如何使用 boto3 让 ec2 实例访问 s3

    By googling I found this tutorial on accessing S3 from EC2 instance without credential file http parthicloud com how to
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中

随机推荐