gpt4 book ai didi

amazon-web-services - 限制到 IP CIDR 范围的 S3 存储桶策略

转载 作者:行者123 更新时间:2023-12-01 11:18:24 28 4
gpt4 key购买 nike

我正在尝试将 S3 存储桶访问权限限制在几个不同子网内的 EC2 实例中:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Principal": {"AWS": "*"},
"Resource": [
"arn:aws:s3:::test.bucket",
"arn:aws:s3:::test.bucket/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.168.129.64/27",
"192.168.129.96/27",
"192.168.128.64/26"
]
}
}
},
{
"Effect": "Deny",
"Action": "s3:*",
"Principal": {"AWS": "*"},
"Resource": [
"arn:aws:s3:::test.bucket",
"arn:aws:s3:::test.bucket/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"192.168.129.64/27",
"192.168.129.96/27",
"192.168.128.64/26"
]
}
}
}
]
}

我知道关于此政策的特殊性还有其他问题,但除了条件外,我已尽力使其尽可能简明扼要。不幸的是,从 IP 地址为 192.168.129.100 的 ec2 实例尝试简单的 aws s3 ls s3://test.bucket 失败并拒绝访问。这项政策有效地将我拒之门外。

我不知道我错过了什么。我什至尝试将 ForAnyValueForAllValues 添加到 IpAddressNotIpAddress 条件中。

最佳答案

S3 bucket policy中指定的IP地址是指S3 web端点接收请求的IP地址。有几件事会对此产生影响。

在您的策略中,您指定了一个 192.168.*.* CIDR block ,这将是一个内部 IP 地址。

  1. 如果您从 AWS 网络外部(例如,在您的本地计算机上)执行 aws s3 ls 命令,则 AWS 将看不到您的本地 192.168.29.100 IP 地址。相反,它会看到您公开的 IP 地址。检查工具,例如 What Is My IP Address?看看你的是什么。我认为 AWS 有类似的工具,但我现在找不到。

如果是这种情况,您需要使用面向公众的 IP 地址而不是您的私有(private) IP 地址来更新您的政策。

  1. 如果您从 AWS 网络内部(例如,在 EC2 实例上)执行 aws s3 ls 命令,并且您的 VPC 没有启用“S3 VPC 端点”,那么(再次),S3 Web 端点看到的是公共(public) IP 地址,而不是您的私有(private) IP 地址。原因是 S3 命令正在退出您的 VPC,成为公共(public)连接,然后到达 S3 端点。

如果是这种情况,您有 2 种可能的解决方案:

解决方案 1:

更新您的策略以包含公共(public) IP 地址而不是您的私有(private)地址。如果您的 EC2 实例位于私有(private)子网中,这很可能是您的 NAT 的公共(public) IP 地址;如果您的实例位于公共(public)子网中,则这很可能是您的 EC2 实例的公共(public) IP 地址。

决议 2:

在您的 VPC 上启用“S3 VPC 端点”。这将在您的内部 VPC 和 S3 端点之间创建直接连接,从而绕过公共(public)互联网。

关于amazon-web-services - 限制到 IP CIDR 范围的 S3 存储桶策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47418831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com