保留预签名URL或IP地址拒绝的存储桶策略?

joh*_*tfx 4 amazon-s3

我希望能够以多种方式限制对S3存储桶中文件的访问.这是因为存储的文件可以以不同的方式访问.我们这样做是因为我们有TB文件,因此我们不想复制存储桶.

一种访问方法是通过标记化的CDN传递,其使用S3桶作为源.为了可以提取文件,我已经设置了文件的权限,允许每个人下载.使用存储桶策略,我可以限制可以获取存储桶中文件的IP地址.所以我将它们限制在CDN IP块中,并且那些IP地址之外的任何人都无法获取该文件.

另一种是访问方法是使用我们的商店系统直接下载,该系统生成S3时间到期预签名URLS.

由于CDN pull有效地需要文件可公开读取,有没有办法:

  1. 首先检查有效的预签名URL,如果请求有效,则提供该文件

  2. 如果无效,请回退到IP地址限制以防止进一步访问?

我有一个正在运行的IP限制存储桶策略,但是它会阻止预先签名的访问...删除存储桶策略会修复预先签名的访问权限,但文件是公共的.

Joh*_*ein 9

默认情况下,Amazon S3中的对象是私有的.然后可以通过以下任何方法授予访问权限:

  • 每对象ACL(主要用于授予公共访问权限)
  • 存储桶策略,带有规则,用于定义在哪些情况下允许哪些API调用(例如,仅从给定的IP地址范围)
  • IAM策略 - 类似于Bucket Policy,但可以应用于特定用户或组
  • 预签名URL,用于授予对对象的时间限制访问权限

尝试访问Amazon S3中的内容时,只要上述任何一项允许访问,就会授予访问权限.无法通过其他方法拒绝访问 - 例如,如果通过预先签名的URL授予访问权限,则Bucket Policy不会导致拒绝访问.

因此,系统会自动执行您所希望的操作...如果预签名URL有效,则授予访问权限.如果IP地址来自所需范围,则授予访问权限.它应该正常工作.

你说IP限制"踩踏预先签名的访问权限"是非常奇怪的 - 这是不可能的.