【问题标题】:How do I make my S3 videos viewable on specific website only?如何使我的 S3 视频仅在特定网站上可见?
【发布时间】:2021-01-27 16:36:23
【问题描述】:

更新:添加了 CORS 政策(如下),但仍然无法正常工作。请有人帮我找出问题。

我已经为此苦苦挣扎了好几个小时。我有一个名为 test-pcrp 的存储桶。我希望此存储桶中的视频只能在我的网站上观看。下面是我的存储桶设置、存储桶策略和 CORS。但是,无论我做什么,该视频都无法在网站上观看。

存储桶设置:
关闭 - 阻止所有公共访问
开启 - 阻止对通过新访问控制列表 (ACL) 授予的存储桶和对象的公共访问
开 - 阻止对通过任何访问控制列表 (ACL) 授予的存储桶和对象的公共访问
关闭 - 阻止对通过新的公共存储桶或访问点策略授予的存储桶和对象的公共访问
关闭 - 通过任何公共存储桶或访问点策略阻止对存储桶和对象的公共和跨账户访问

政策:

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

CORS 政策

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"https://dev.pcrprograms.org"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]

【问题讨论】:

  • 仅供参考,您的推荐人条件包括dev.pcrprograms.org,但不包括www.dev.pcrprograms.org。你在测试哪个?
  • 实际站点上的域不包括 www,所以这是我正在测试的域。
  • 请详细说明“不工作”的含义。 Web 浏览器的开发控制台窗口中显示什么? Web 浏览器的“网络”窗口中显示什么行为?

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


【解决方案1】:

您的策略可能不起作用,因为默认情况下 Amazon S3 中的对象是私有的。添加Deny 策略不会授予访问权限——它只会进一步限制访问权限。

但是,使用referer 控制访问是不可靠的Referer spoofing 非常简单,不应将其作为安全手段。

首选选项是让您的后端生成 Amazon S3 pre-signed URLs,它们是限时 URL,提供对存储在 Amazon S3 中的私有对象的临时访问。

【讨论】:

  • 我不担心引用者欺骗,因为这将存在于用户没有严格技术技能的会员区域内。这也是我不能使用限时 URL 的原因。在可预见的将来,这些视频将在会员网站上提供。我更新了我的存储桶政策,但我仍然无法在我的网站上观看我的视频。关于我需要更改哪些内容才能完成这项工作的任何建议?
  • 预签名 URL 由您的后端系统生成,不涉及用户技能。它基本上是一种说“好的,您有权访问此文件,这是一个链接”的方式。我看到您使用的是 WordPress,所以这可以通过 PHP 完成。见:Presigned URL for AWS S3 Object with PHP
  • 我建议像这样调试:首先,删除桶策略中的referer 条件。这应该使存储桶中的对象可访问。然后,放回条件并找出可能导致它失败的原因。检查浏览器控制台输出中的任何错误消息。
  • 好的,预签名的 URL 不适合我。有人可以帮我弄清楚上述存储桶设置和策略不起作用的原因吗?控制台显示的唯一错误是“np is null”,我找不到任何相关信息。
  • 您是否测试过生成预签名 URL 的代码?它应该返回一个 URL,您可以将其放入浏览器以检索对象。
猜你喜欢
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2016-03-19
  • 2013-10-17
  • 2013-02-14
  • 2014-08-11
相关资源
最近更新 更多