我们有一个运行在不同客户端系统上的应用程序,该应用程序将数据发送到Amazon Kinesis Data firehose。但是客户端具有防火墙,防火墙仅将出站流量限制为列入白名单的IP地址,并且在其防火墙法规中不允许使用域名。我对aws不太熟悉,但阅读到亚马逊IP一直在变化。因此,我们在将客户端防火墙中的IP地址列入白名单时遇到了问题。
我遇到了以下页面,其中提到aws提供JSON格式的公共IP地址范围。
https://aws.amazon.com/blogs/aws/aws-ip-ranges-json/
https://ip-ranges.amazonaws.com/ip-ranges.json
这是一个庞大的列表,并且同一地区有多个条目。您能否提出一种方法以某种方式提取我们的服务将使用的IP范围,以便我们将其列入客户端防火墙的白名单?也欢迎其他任何选择。
在此先感谢您的帮助和/或建议。
答案 0 :(得分:0)
Firehose的区域端点在此页面上列出:
https://docs.aws.amazon.com/general/latest/gr/rande.html
以us-east-2端点为例...
现在,firehose.us-east-2.amazonaws.com对我来说解析为52.95.17.2,当前在ip-ranges.json文档中具有以下功能:
服务:亚马逊地区:us-east-2 ip_prefix:52.95.16.0/21
如果您想知道要在防火墙上列入白名单的范围,则需要获取us-east-2中的AMAZON的所有范围(如果包括IPv6地址,则为34)。注意:假设所有端点都属于AMAZON服务标记,并且将这些服务列入白名单,那么您将白名单中的服务要远远超过Firehose。
先前与AWS支持人员联系表明,可以添加范围而不会发出警告,因此您需要经常检查发布的范围并更新防火墙,以避免端点解析为未列入白名单的新IP地址的情况。
如果您确实想走频繁检查和列入白名单的路线,则可以使用类似以下的python脚本来检索相关的IP范围:
#!/usr/bin/env python
import requests
aws_response = requests.get('https://ip-ranges.amazonaws.com/ip-ranges.json')
response_json = aws_response.json()
for prefix in response_json.get('prefixes'):
if prefix.get('service') == 'AMAZON' and prefix.get('region') == 'us-east-2':
print(prefix.get('ip_prefix'))