amazon-web-services - 通过 IP 限制对 S3 的访问我做错了什么?
问题描述
我有一个my_super_bucket
带有以下语句的存储桶:
"Statement": [
{
"Sid": "Stmt4214214",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my_super_bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"my_super_ip_1",
"my_super_ip_2"
]
}
}
}
]
以前,存储桶对 List Objects 具有公共权限,因此我只想允许这两个 IP,因此我删除了该权限。但是,我仍然可以从不同的 IP 访问此存储桶中的任何文件。进一步排除故障,我采取了以下三个步骤:
- 我想可能是因为 CloudFront 缓存,所以尝试直接使用 S3 URL 访问文件,仍然可以下载它。
- 还添加了
"NotIpAddress": { "aws:SourceIp": "*"}
条件,仍然可以访问文件。 - 删除了每个文件的读取对象权限。现在,无论 SourceIP 是什么,我都无法访问该文件。
那么,我怎样才能实现只允许某些 IP 访问特定存储桶的任何文件的目标呢?在 IRC 上,一个人告诉我这些策略只适用于 AWS CLI,但也必须有一种方法来限制通过 URL 的访问,对吧?
解决方案
正如 Kush Vyas 在评论中提到的那样,改变策略,而不是允许某个 IP,它会拒绝所有其他 IP 的伎俩。
推荐阅读
- android - 引起:com.android.dex.DexException:多个dex文件定义Landroid/arch/core/internal/SafeIterableMap$ListIterator;
- python - 具有更改签名的安全 HMAC 授权
- r - 在 R markdown 中包裹长 url 行
- python - 删除列表中包含的 numpy 行?
- excel - Excel:下一个单元格值
- kendo-ui - Kendo Grid 自定义工具栏按钮启用/禁用
- lisp - 列表作为 Lisp 中的函数参数
- typescript - 按角度 6 的按钮事件
- mysql - 用每行具有不同值的公式更新mysql行
- php - 如何在php中的特定单词之后修剪字符串?