动手实验 | 实现只能从特定IP地址访问Amazon S3对象


  实验目标

通过配置 Amazon S3 存储桶策略,限制只有特定IP地址的用户能够访问S3存储桶中的对象。

  作业步骤

本次采用AWS Console界面完成作业。
注意:根据项目的具体情况,可以采用不同的实施方法。比如使用命令行(CLI)部署、代码部署 (CloudFomation、Terraform等)、以及其它开发语言(SDK)完成作业。

步骤一:创建Amazon S3 存储桶
登录 AWS 管理控制台,进入 S3 服务。点击“创建存储桶”,按照向导填写存储桶名称、选择区域等信息,完成存储桶的创建。

步骤二:上传测试对象
进入刚刚创建的存储桶,点击“上传”,选择一个本地文件上传到存储桶中。

步骤三:配置存储桶策略
1. 在存储桶页面,点击“权限”选项卡,然后找到“存储桶策略”部分,点击“编辑”。
2. 在存储桶策略编辑器中,输入以下JSON格式的策略,将your-bucket-name替换为你的存储桶名称,192.0.2.0/24和203.0.113.0/24替换为你想要允许访问的IP地址范围:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowSpecificIP",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "192.0.2.0/24",
            "203.0.113.0/24"
          ]
        }
      }
    }
  ]
} 

备注:
这个策略的含义是,拒绝所有用户(`"Principal": "*"`)对存储桶中所有对象(`"Resource": "arn:aws:s3:::your-bucket-name/*"`)的获取对象操作(`"Action": "s3:GetObject"`),除非请求来自指定的IP地址范围(通过`"Condition"`中的`"NotIpAddress"`进行限制)。
3. 点击“保存策略”。

  结果验证

使用允许的IP地址访问:从你指定的IP地址范围的设备上,尝试通过浏览器或AWS CLI访问存储桶中的对象。例如,使用AWS CLI命令:

aws s3 cp s3://your-bucket-name/your-object-name ./ --profile your-profile

通过本次实验,确认可以使用存储桶策略限制特定IP地址访问S3对象的功能。存储桶策略提供了一种灵活且强大的方式来控制对S3资源的访问,可以根据实际需求进行各种复杂的访问控制配置。