当前位置: 首页 > 知识库问答 >
问题:

源访问标识(OAI)和CloudFront签名URL之间的关系

常雪风
2023-03-14

所以我一直在遵循CloudFront和S3的指南,我觉得我仍然缺少源访问标识(OAI)和CloudFront签名URL之间关系的核心信息。

我想要的是:一个私人CDN来托管音频片段(几秒钟的长度)和低分辨率图像。我只希望这些文件在从特定域(即Web应用程序所在的域)请求时可以访问,也许还有一个测试服务器,这样我的Web应用程序就可以获取文件,但其他人如果不通过Web应用程序就无法访问它们。

我感到困惑的是:我对CloudFront原始访问身份(OAI)和签名CloudFront URL之间的关系(如果有的话)感到模糊。

我目前已经为我的CloudFront发行版创建了一个私有S3 bucket,一个OAI,并通过CloudFront生成了一个指向图像的签名URL。但我不知道这些事情是如何联系在一起的,也不知道它们是如何阻止其他人访问CDN文件的(例如,如果他们能够检查一个元素并获得签名的URL)。

关键是要确保签名的URL很快过期吗?如果是这样,审调处如何在其中发挥作用?这是在CORS设定的吗?

共有2个答案

孟和玉
2023-03-14

添加一个指向CloudFront域的新CNAME条目。此条目应与从CloudFront控制台中输入的“备用域名”匹配。

默认情况下,CloudFront会自动生成域名(例如d3i29vunzqzxrt.cloudfront.net),但您可以定义替代域名。

此外,您还可以通过Cloudfront保护Cloudfront提供私人内容的安全

谭飞掣
2023-03-14

源访问标识是CloudFront内的实体,可以通过bucket策略授权其访问bucket中的对象。当CloudFront使用源访问标识来访问bucket中的内容时,CloudFront使用OAI的凭据来生成签名请求,并发送给bucket以获取内容。观众无法访问此签名。

此处使用的“来源”一词的含义不应与其他语境中使用的“来源”一词混淆,例如CORS,其中“来源”是指允许访问内容的网站

源访问标识与访问限制为包含特定源或引用头的请求无关。

一旦CloudFront验证签名的URL与与您的AWS帐户(或您指定为受信任签名者的另一个帐户)关联的CloudFront签名密钥匹配,就会使用源访问标识在存储桶中授予的任何权限从存储桶中获取对象。

关键是要确保签名的url很快过期吗?

基本上,是的。

通过尝试根据找到链接的站点限制访问来对请求进行身份验证和授权不是可行的安全措施。它可以防止来自其他站点的热链接,但不能防止任何可以伪造请求标头的人。击败这样的措施是微不足道的。

相比之下,签名URL具有极强的抗篡改性,以至于计算不可行。

签名的URL不仅在过期之前有效,而且如果使用自定义策略,还可以选择性地限制具有策略文档中包含的相同IP地址的人的访问。一旦签名,对URL的任何更改(包括策略声明)都会使整个URL不可用。

OAI只能间接地与CloudFront签名的URL连接——它们可以单独使用,也可以一起使用——但如果没有OAI,CloudFront无法证明它有权从您的bucket请求对象,因此bucket需要是公共的,这将破坏CloudFront上签名URL的大部分用途。

 类似资料:
  • 我设置了以下信息: 创建了AWS S3存储桶并将一些映像上载到特定文件夹 创建了AWS CloudFront web发行版: 来源域名:从列表中选择的S3 bucket 限制存储桶访问:是 来源访问标识:选定的已有标识 授予桶的读取权限:是,更新桶策略 拒绝访问

  • 我尝试使用helloworld.html为我的S3 Bucket手动创建CloudFront预签名URL(不使用OAI),如下文所示 https://docs.aws.amazon.com/amazonCloudFront/latest/developerguide/privateContent.html。 null 我怀疑CloudFront在S3上丢失了IAM策略。我尝试了S3的完全公共访问,

  • 在AWS Console>CloudFront发行版中,

  • 我正试图使用一个以S3 bucket为起点的Cloudfront私有发行版来提供内容。 我的存储桶中有一个图像文件,用于测试目的,其权限设置为私有。我已经设置了我的存储桶策略,因此Cloudfront Origin Access Idbody具有获得权限 当我将Cloudfront发行版设置为public(不使用签名URL)时,它可以正常工作。该对象不能通过直接S3链接访问,但可以使用Cloudf

  • 我已经尝试了很多事情,我承认失败了(我在这里读了很多回应,但到目前为止没有一个对我有帮助)。我正在尝试为CloudFont上保存的文件设置签名URL。我可以为S3创建签名的URL,但我不能为CloudFront工作。对于cloudfront,我使用AWS SDK中的以下内容: 我得到一个签名的URL生成,但我得到访问拒绝时,跟随链接,当我读到它建议我设置起源访问标识。因此,我转到我的分发设置和设置

  • 问题内容: 简短版:如何使用Python使用Amazon CloudFront / S3使签名的URL“按需”以模仿Nginx的X-Accel- Redirect行为(即保护下载)。 我已经安装了Django服务器,并在Nginx前端上运行。我一直对它的请求感到困惑,最近不得不将其安装为Tornado WSGI应用程序,以防止它在FastCGI模式下崩溃。 现在由于服务器对媒体的请求过多,我的服务