我打算在公共存储桶中使用私有对象,从而限制对对象的访问,而不是对存储桶中的其他对象的访问。我想设置CloudFront以使用签名URL提供内容。现在在AWS S3文档中,我看到两个不同的术语,一个是用于访问私有对象的预签名URL,另一个是签名URL,需要下载私钥等并执行更多操作。
预签名网址和签名网址有何区别?我可以将
PreSigned
网址与CloudFront一起使用吗?
C#
库有方法GetPreSignedURL
,是否自动下载私钥等并进行签名或此GetPreSignedURL
方法与S3 URL签名不同,需要设置私钥然后签名URL?
答案 0 :(得分:8)
对不起,但这个问题回答得很不好,所以我要插话了。
首先,我们必须区分我们在此处讨论和引用的服务。 S3和CloudFront都有URL签名功能,它们的工作方式不同。
但是,只有S3将它们称为预签名URL CloudFront将其称为签名URL和签名Cookie。
在下面的文档的URL中记下服务名称。
https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html
要更深入地比较各种服务,请查看下面的链接。如果我不得不猜测,我会猜测AWS选择了不同的命名服务来避免混淆。
答案 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密钥
•寿命有限