AWS S3 签名 URL 作为超链接的安全性

AWS S3 The security of a signed URL as a hyperlink

这里安全吗?使用带有 AWS S3 Bucket 对象的预签名 url 维护安全性?

<a href="https://mywebsite.s3.amazonaws.com/40.pdf?AWSAccessKeyId=[my access key]&Expires=1433297453&Signature=[this random set of numbers]">my link</a>

换句话说 - 第 1 部分...

假设我将一堆单独的个人文件存储在一个存储桶中。我想为用户的文件提供 link。显然,每个文件都是唯一但连续命名的,我不希望人们能够将 link 从 40.pdf 更改为 30.pdf 并获得不同的文件。 URL 似乎可以做到这一点。

第 2 部分,更重要的是......

就我的存储桶的安全性而言,这种显示 URL 的方法安全还是危险?显然,我将在这里放弃我的 "access key",当然,不是我的 "secret"。

已经在 3 年前回答过...抱歉。 How secure are Amazon AWS Access keys?

AWS 安全凭证在对 AWS 进行 API 调用时使用。它们由两个部分组成:

  • Access Key(例如AKIAISEMTXNOG4ABPC6Q):这类似于用户名。人家看到就好了
  • 密钥:这是一长串随机字符,是您与 AWS 之间的共享密钥。在进行 API 调用时,SDK 使用共享密钥来 'sign' 您的 API 调用。这是一种单向散列,因此人们无法对您的密钥进行逆向工程。密钥应保密。

A Signed URL 是一种授予对 S3 对象的限时访问权限的方法。 URL 包含访问密钥和签名,签名是根据对象、到期时间和密钥计算的单向散列。

签名 URL 是安全的,因为:

  • 仅在您指定的有限时间段内有效
  • 仅对您指定的 Amazon S3 对象有效
  • 它不能用于检索不同的对象,也不能修改时间段(因为它会使签名无效)

但是,任何人都可以在有效期内使用URL。因此,如果有人发布推文 URL,许多人可能会在到期时间之前访问该对象。这种潜在的安全威胁应该与直接从 Amazon S3 提供流量而不是 运行 您自己的 Web 服务器的好处进行权衡。