预签名URL和签名URL之间有什么区别?

29

我打算在公共存储桶中设置私有对象,以此限制对对象的访问,而不是存储桶中的其他对象。并且,我想要设置 CloudFront 以使用签名 URL 提供内容。现在在 AWS S3 文档中,我看到两个不同的术语,一个是用于访问私有对象的预签名 URL,另一个是需要下载私钥等操作才能签署 URL 的签名 URL。

预签名URL和签名URL之间有什么区别? 我可以将 PreSigned URL 与 CloudFront 一起使用吗?

C# 库有一个名为 GetPreSignedURL 的方法,它是否会自动下载私钥并进行签名,或者这个 GetPreSignedURL 方法与设置私钥然后签署 URL 的 S3 URL 签名方法不同?


这可能会对你有所帮助 https://dev59.com/z1_Va4cB1Zd3GeqPYO7t - Ramesh Rajendran
@RameshRajendran,我知道如何生成它,但我想知道是否可以在CloudFront中使用它而不需要很多配置步骤。 - Akash Kava
4个回答

19

首先,我们需要区分这里所谈论和引用的服务。S3和CloudFront都有不同的URL签名功能。

然而,只有S3将它们称为Pre-signed URLs;CloudFront将它们称为Signed URLs和Signed Cookies。

请注意下面文档中URL中的服务名称。

https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html#private-content-how-signed-urls-work

如果需要更深入地比较不同服务,请查看下面的链接。如果我猜的话,我会猜测AWS选择了不同的签名服务名称以避免混淆。

https://tutorialsdojo.com/s3-pre-signed-urls-vs-cloudfront-signed-urls-vs-origin-access-identity-oai/


我认为道场教程的链接已经更改了。在我看来,新链接位于:https://tutorialsdojo.com/s3-pre-signed-urls-vs-cloudfront-signed-urls-vs-origin-access-identity-oai/。 - Jack

6

来自AWS文档

预签名URL可以让你访问URL中标识的对象,前提是预签名URL的创建者有权限访问该对象。也就是说,如果你收到了一个预签名URL来上传一个对象,只有当预签名URL的创建者有上传该对象所需的权限时,你才能上传该对象。

同样来自AWS文档

签名URL包括附加信息,例如过期日期和时间,这使你对内容的访问有更多的控制。这些额外的信息显示在策略声明中,该声明基于预设策略或自定义策略。预设策略和自定义策略之间的区别在下面的两个部分中解释。


1
你是从哪里复制粘贴的?能否分享你的URL以获取更多细节? - Ramesh Rajendran
9
预签名网址也有过期日期和时间。 - Akash Kava
1
@AkashKava 是否可能拥有一个没有到期日期或时间的 URL? - Ted Taylor of Life
1
@TedTaylorofLife 不,最长只能是7天。 - NineCattoRules
3
实际上,它们是相同的。S3具有预签名URL。有一个“URL签名”的概念,这是为S3对象创建预签名URL的过程。但是,当有人说“已签名的URL”时,这只是“预签名URL”的简称。此外,您提供的第二个链接并没有提到已签名的URL。 - Harry

4

根据我的研究:

预签名URL(AWS文档):只要预签名URL的创建者具有访问该对象的权限,预签名URL就可以让您访问URL中标识的对象。也就是说,如果您收到一个预签名URL以上传对象,则只有在预签名URL的创建者具有上传该对象所需的权限时,您才能上传该对象。

默认情况下,所有对象和存储桶均为私有。如果您希望您的用户/客户能够上传指定的对象到您的存储桶,但不需要他们具备AWS安全凭证或权限,则预签名URL非常有用。当您创建预签名URL时,必须提供您的安全凭证,然后指定存储桶名称、对象键、HTTP方法(用于上传对象的PUT方法)以及过期日期和时间。预签名URL仅在指定的持续时间内有效。

签名URL(AWS文档): 签名URL包括其他信息,例如过期日期和时间,从而更好地控制对内容的访问。这些附加信息出现在策略语句中,该语句基于预定义策略或自定义策略。预定义策略和自定义策略的区别将在接下来的两个部分中说明。

根据我的理解得出结论:

预签名URL用于创建者上传新对象。

签名URL是用于访问现有对象的。


预签名的URL(根据S3行为)也可能会过期。 - Raul Lapeira Herrero

0

CloudFront 签名 URL

• 允许访问路径,无论其来源如何

• 账户范围的密钥对,只有根用户可以管理

• 在创建签名 URL 时,我们可以指定以下限制: 1) 设置过期日期和时间 2) URL 有效的 IP 地址范围

• 可以利用缓存功能

S3 预签名 URL

• 以预签名 URL 的人员身份发出请求

• 使用签名 IAM 主体(用户/账户)的 IAM 密钥

• 有限的生命周期


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接