我正在寻找一种方法来将客户端服务器上的 S3 存储桶列入白名单。此 S3 存储桶中有一个公共网站,因此,我的想法是找到用于此 S3 存储桶的 IP 地址。但是,我从文档中了解到它使用基于许多服务器的动态地址,并选择延迟最低的地址。我正在寻找一个建议,以了解配置服务器防火墙的最佳方法,以便能够访问托管在 S3 存储桶上的公共网站?
重要的:请记住,我无法使用服务器上的 URL 进行过滤,而只能使用 IP 地址,因为它太旧了。
有关设置的更多详细信息:前端应用程序位于 S3 存储桶上,而 EC2 实例上则有该应用程序的 REST API。我还为 S3 存储桶配置了 Cloudfront,以便将其与我的域连接起来。
我的目标:为了保证我的服务器安全,并只允许我的网站访问。我发现有一个包含亚马逊使用的所有 IP 地址的列表,但对于我使用的服务来说,范围非常大:
{
"ip_prefix": "18.64.0.0/14",
"region": "GLOBAL",
"service": "CLOUDFRONT",
"network_border_group": "GLOBAL"
},
{
"ip_prefix": "18.196.0.0/15",
"region": "eu-central-1",
"service": "EC2",
"network_border_group": "eu-central-1"
}
因此,允许所有这些范围不是一个选项。如果有人能为我提供好的解决方案,我会很高兴。
编辑:由于无法为 S3 Bucket 分配静态 IP,我找到了一种解决方法。在运行 API 的 EC2 实例上,我部署了前端应用程序并使用 apache2 运行它。然后,使用以下命令为 EC2 实例分配一个静态弹性 IP 地址这文档。这使我有机会仅允许此新 IP 地址进入服务器的防火墙规则。此外,我将服务器的 IP 地址添加到我的 EC2 实例的安全组中,以允许服务器访问网页。