预先签名的网址和签名网址有什么区别?

时间:2013-12-31 19:10:26

标签: c# amazon-web-services amazon-s3 amazon-cloudfront

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

  

预签名网址和签名网址有何区别?我可以将PreSigned网址与CloudFront一起使用吗?

C#库有方法GetPreSignedURL,是否自动下载私钥等并进行签名或此GetPreSignedURL方法与S3 URL签名不同,需要设置私钥然后签名URL?

4 个答案:

答案 0 :(得分:8)

对不起,但这个问题回答得很不好,所以我要插话了。

首先,我们必须区分我们在此处讨论和引用的服务。 S3和CloudFront都有URL签名功能,它们的工作方式不同。

但是,只有S3将它们称为预签名URL CloudFront将其称为签名URL和签名Cookie。

在下面的文档的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/aws-cheat-sheet-s3-pre-signed-urls-vs-cloudfront-signed-urls-vs-origin-access-identity-oai/

答案 1 :(得分:6)

来自AWS docs

  

预先签名的网址可让您访问网址中标识的对象,   前提是预签名URL的创建者具有权限   访问该对象。也就是说,如果您收到要上传的预签名网址   一个对象,只有在创建者时才能上传对象   预签名URL具有上传该对象的必要权限。

再次,来自AWS docs

  

签名网址包含其他信息,例如:   到期日期和时间,使您可以更好地控制访问权限   你的内容。此附加信息显示在策略中   声明,基于固定策略或自定义   政策。固定策略和自定义策略之间的区别是   在接下来的两节中解释。

答案 2 :(得分:1)

到目前为止,我的研究仍是

预签名URL(AWS doc):如果预签名URL的创建者有权访问该对象,则可以访问URL中标识的对象。也就是说,如果收到预签名URL来上传对象,则只有在预签名URL的创建者具有上传该对象的必要权限的情况下,您才能上传对象。

默认情况下,所有对象和存储桶都是私有的。如果您希望用户/客户能够将特定对象上载到存储桶,但不要求它们具有AWS安全证书或权限,则预签名URL很有用。创建预签名URL时,必须提供安全凭证,然后指定存储桶名称,对象密钥,HTTP方法(用于上载对象的PUT)以及到期日期和时间。预先签名的URL仅在指定的持续时间内有效。

签名网址(AWS doc): 签名的URL包含其他信息,例如到期日期和时间,使您可以更好地控制对内容的访问。此附加信息显示在策略声明中,该声明基于固定策略或自定义策略。下两个部分说明了固定策略和自定义策略之间的区别。

根据我的理解得出的结论:

用于创建者的预签名网址,意味着上传新对象。

有关访问现有对象的签名网址。

答案 3 :(得分:0)

CloudFront签名URL

•无论如何都允许访问路径 起源

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

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

•可以利用缓存功能

S3预签名URL

•作为请求者发出请求 预先签署网址

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

•寿命有限