如何使用 *** 限制对 S3 托管网站的访问

Posted

技术标签:

【中文标题】如何使用 *** 限制对 S3 托管网站的访问【英文标题】:How to restrict access to S3 hosted website using *** 【发布时间】:2021-03-27 19:49:19 【问题描述】:

我有一个简单的网站托管在awss3。目前任何人都可以访问它。

但我需要限制访问。

所以,我有一个 aws client *** endpoint 设置,其 CIDR 块为 10.3.0.0/22

那么是否可以只向仅连接到 *** 的任何人授予访问权限,并限制其他任何人的访问权限。

【问题讨论】:

【参考方案1】:

我们可以限制 S3 对特定 IP 范围的访问。 Here 是一些例子。

仅当 sourceIp 低于 10.3.0.0/22 时才允许对 S3 的请求


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-s3-static-assets-bucket/*",
            "Condition": 
                "IpAddress": 
                    "aws:SourceIp": [
                        "10.3.0.0/22"
                    ]
                
            
        
    ]

【讨论】:

这很好,但有时当我的 IP 更改时,即使从 aws 控制台我也无法通过存储桶访问。有解决办法吗? @JananathBanuka 通过 IAM 策略和角色控制对 AWS 控制台用户的 S3 存储桶的访问比单个存储桶资源策略更好。我通常使用存储桶策略来为跨账户或非 AWS 用户提供访问权限,在这种情况下它是公开的。 问题是当我像这样添加源IP时,如果IP发生了变化,我什至无法通过控制台访问s3存储桶。即使我拥有完整的s3 访问权限,我也不得不要求root 用户删除该策略。是否可以提供对整个帐户的 s3 访问权限?因此任何登录到该帐户的人都可以访问 s3 存储桶。 无法使此解决方案发挥作用

以上是关于如何使用 *** 限制对 S3 托管网站的访问的主要内容,如果未能解决你的问题,请参考以下文章

限制对云端分发背后的 s3 静态网站的访问

如何将 S3 网站的访问限制为 Cloudfront?

如何在AWS中为自己的S3托管站点添加SSL/TSL证书(https)

如何通过 IP 限制对我的 PHP 弹性 beanstalk 环境的访问?

如何将 S3 托管的前端连接到 Elastic beanstalk 托管的后端?

授予对 s3 存储桶的公共访问权限,而不是为 aws 无服务器应用程序提供静态网站