首页 > 解决方案 > 只希望我的网站从我的网站和网络服务器获取和发布

问题描述

我有谷歌并尝试了许多解决方案,但似乎没有一个有效。所以这就是我最后在这里问的原因。我是aws和s3的新手。我检查Block all public access了我的 s3 存储桶。所以我无法从 url 查看图像。现在我想添加一个只允许从我的网站获取图像的策略。为此,我查阅了他们的文档并应用了此存储桶策略

{
    "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:*",
            "Resource": "arn:aws:s3:::development-stockarea/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://developstockarea.herokuapp.com/*",
                        "http://developstockarea.herokuapp.com/*",
                        "https://stockarea-application-test.herokuapp.com",
                        "http://stockarea-application-test.herokuapp.com"
                    ]
                }
            }
        }
    ]
}

但是当我试图保存它时,它向我展示了这个东西:

Granting public access in this policy will be blocked because Block public access settings are turned on for this bucket. To determine which settings are turned on, check your Block public access settings.

所以看来我的政策实际上并没有附加到存储桶上。我还尝试使用 CORS 政策来访问我的网站,如下所示:

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

但这似乎也没有效果。任何人都可以给我详细的帮助或指导我哪里出错了。

更新:好的,所以在阅读了他们的文档后,我尝试了一些东西,但它仍然无法正常工作。

{
    "Version": "2012-10-17",
    "Id": "Policy1488494182833",
    "Statement": [
        {
            "Sid": "Stmt1488493308547",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::892246803113:user/abhiraj-tulsyan"
            },
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": "arn:aws:s3:::app-stockarea/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://app.stockarea.io/*",
                        "http://app.stockarea.io/*",
                        "https://admin-stockarea.herokuapp.com/*",
                        "http://admin-stockarea.herokuapp.com/*",
                        "https://stockarea.io/*"
                    ]
                }
            }
        }
    ]
}

这是我现在的政策。我已经取消选中阻止所有公共访问设置。但我仍然可以复制粘贴图像的 url 及其获取显示,而不会出现任何 4xx 错误。

标签: amazon-web-servicesamazon-s3

解决方案


“Amazon S3 阻止公共访问设置会覆盖这些策略和权限,以便您可以限制对这些资源的公共访问。” 来自https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html
此设置会覆盖所有策略。你得到的错误也是一样的。
所以让我们取消选中这个选项,一切都应该工作:-)

您共享的策略的 JSON 看起来足以满足您的需求。它基本上只允许指定的引用者访问。有关更多详细信息,请参阅https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
中的“限制对特定 HTTP 引用者的访问”部分


推荐阅读