【问题标题】:Amazon S3 bucket policy allow access to ONLY specific httpAmazon S3 存储桶策略只允许访问特定的 http
【发布时间】:2019-10-07 05:23:15
【问题描述】:

我正在尝试使用存储桶策略将 Amazon S3 存储桶中的对象(媒体文件)的访问权限限制为特定的引用域 privatewebsite.com,但无论引用的域如何,访问都会被拒绝。

我对阻止公共访问有以下设置

阻止对通过新访问控制列表 (ACL) 授予的存储桶和对象的公共访问 - 开启

阻止对通过任何访问控制列表 (ACL) 授予的存储桶和对象的公共访问 - 开启

阻止对通过新的公共存储桶策略授予的存储桶和对象的公共访问 - 关闭

通过任何公共存储桶策略阻止公共和跨账户访问存储桶和对象 - 关闭

我已经添加了以下代码、带有和不带有 http:// 和 https:// 的 URL,但仍然被拒绝访问。 (privatewebsite.com, https://privatewebsite.com, http://privatewebsite.com)

{
    "Version": "2012-10-17",
    "Id": "Policy8675309",
    "Statement": [
        {
            "Sid": "Stmt8675309",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-media-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": "https://privatewebsite.com"
                }
            }
        },
        {
            "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-media-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "https://privatewebsite.com/*",
                        "http://privatewebsite.com/*"
                    ]
                }
            }
        }
    ]
}

任何人都可以在我的存储桶策略中看到任何明显的错误吗?

我希望此政策允许来自 privatewebsite.com 上的页面的任何请求,同时拒绝所有其他请求,但目前所有请求都被拒绝。

【问题讨论】:

  • 旁注:Referer 很容易被伪造,因此它不是一种好的安全形式。请注意您提供的信息。

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


【解决方案1】:

为你尝试这个类似字符串的部分(允许部分):

        "StringLike": {
            "aws:Referer": [
                "https://privatewebsite.com/*",
                "http://privatewebsite.com/*"
            ]
        }

【讨论】:

    【解决方案2】:

    来自Bucket Policy Examples - Restricting Access to a Specific HTTP Referrer

    {
        "Version": "2012-10-17",
        "Id": "http referer policy example",
        "Statement": [
            {
                "Sid": "Allow get requests originating from www.example.com and example.com.",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::examplebucket/*",
                "Condition": {
                    "StringLike": {
                        "aws:Referer": [
                            "http://www.example.com/*",
                            "http://example.com/*"
                        ]
                    }
                }
            }
        ]
    }
    

    此方法仅授予给定Referer 的Allow 访问权限。无需使用Deny 策略,因为默认情况下拒绝访问。因此,仅授予Allow 权限。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 1970-01-01
      • 2018-05-29
      • 2020-12-18
      • 2011-09-10
      • 2023-02-26
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多