【问题标题】:How should I configure security on Amazon S3 files if I have enabled a CORS security policy如果我启用了 CORS 安全策略,我应该如何配置 Amazon S3 文件的安全性
【发布时间】:2014-07-07 14:04:05
【问题描述】:

感谢收看。

我是 Amazon S3 的新手,我已经设置了一个包含大约 100K 文件的存储桶。我想限制仅从一个域访问这些文件,因此我在存储桶上设置了 CORS 策略:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.example.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>http://www.example.com/*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

问题

即使有了这个 CORs 政策,我也可以直接在浏览器中输入单个文件的 URL 并访问它,因此安全性似乎不起作用。

目前,S3 中每个文件的安全性设置为“所有人”以获得读取权限。我会假设 CORS 文件会覆盖它。如果我从权限中删除“所有人”,那么我根本无法访问该文件(即使有 CORS 策略)。

有什么想法吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon


    【解决方案1】:

    CORS 配置仅用于告诉浏览器是否可以向该域发送请求,以及使用哪些标头和方法。它不会影响 S3 授权。

    您可以为可能更适合应用程序管理的安全性的对象生成预签名的临时 URL。

    有关 Java SDK 示例,请参阅 http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html

    【讨论】:

    • 谢谢,这很有帮助。预签名是否只需要执行一次并存储在数据库中,还是应该在请求包含 S3 文件链接的页面时执行?再次感谢。
    • 每当请求包含指向 S3 文件的链接的页面时。这是一个非常简单的安全控制,不考虑身份验证,如果需要,请查看使用 IAM 角色的身份联合。
    • 非常感谢您的帮助!
    猜你喜欢
    • 2018-04-20
    • 2017-07-15
    • 2021-08-31
    • 2020-01-17
    • 2020-04-10
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多