限制从某些用户访问Cloudfront(S3)文件而不是其他用户访问Cloudfront(S3)文件的简单示例

时间:2013-09-18 18:59:03

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

我刚刚开始使用AWS S3和Cloudfront的权限,所以请放轻松我。

两个主要问题:

  1. 我想允许访问某些用户(例如,已登录的用户)但其他用户。我假设我需要使用ACL而不是桶策略,因为前者更可自定义,因为您可以使用查询参数识别URL中的用户。首先是正确的吗?有人能指出我如何在文件/逐个文件/用户的基础上执行此操作的最简单英文说明吗?关于ACL的文档让我感到困惑。

  2. 我还想限制访问,以便人们只能查看my-site.com上的内容,而不是your-site.com。不幸的是,the S3 documentation example bucket policy对我的演示存储桶的访问没有影响(请参阅下面的代码,略微改编自AWS文档)。此外,如果我需要首先关注允许逐个用户访问,我是否还想要定义存储桶策略?

  3. 我意识到我甚至没有涉及如何在Cloudfront(最终目标)的背景下完成这项工作,但是对问题1和2的任何想法都会非常感激,并提到Cloudfront在这一点上将是一个奖励。

    `

    {
        "Version": "2008-10-17",
         "Id":"http referer policy example",
        "Statement": [
            {
                "Sid": "AllowPublicRead",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "*"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::my-bucket/*",
                "Condition": {
                    "StringLike": {
                        "aws:Referer": [
                            "https://mysite.com/*",
                            "https://www.mysite.com/*"
                        ]
                    }
                }
            }
        ]
    }
    

1 个答案:

答案 0 :(得分:3)

  1. 限制对CDN的访问,以服务我们所称的"私人内容"您需要使用API​​生成签名URL,并且可以定义URL的到期时间。更多信息is here
  2. 您可以使用原始访问标识 - as explained here - 来阻止内容在云端外部提供。
  3. 我以为我在过去的项目中有一些代码可以分享而且没有。但是,至少我能够深入到我的书签中并找到一个帮助我完成这一过程的参考文献,而stackoverflow上还有另一篇文章提到了相同的参考文献。请参阅下面的参考链接和帖子。

    http://improve.dk/how-to-set-up-and-serve-private-content-using-s3/

    Cloudfront private content + signed urls architecture

    嗯,已经两年了,你可能不得不在这里和那里稍微改变它,但你会得到这个想法。