首页 > 解决方案 > 是一种提取 Amazon Kinesis firehose 中托管的服务使用的 IP 范围的方法吗?

问题描述

我们有一个在不同客户端系统上运行的应用程序,它将数据发送到 Amazon Kinesis Data firehose。但是客户端有防火墙,它将出站流量限制在白名单中的 IP 地址,并且不允许在其防火墙规则中使用域名。我对aws不太熟悉,但读到亚马逊IP一直在变化。因此,我们在客户端防火墙中将 IP 地址列入白名单时遇到了问题。

我遇到了以下页面,其中提到了 JSON 格式的 aws 公共 IP 地址范围。

https://aws.amazon.com/blogs/aws/aws-ip-ranges-json/

https://ip-ranges.amazonaws.com/ip-ranges.json

这是一个巨大的列表和同一地区的多个条目。您能否建议一种方法以某种方式提取我们的服务将使用的 IP 范围,以便我们可以在客户端的防火墙中将它们列入白名单?也欢迎任何其他替代方案。

提前感谢您的任何帮助和/或建议。

标签: amazon-web-servicesamazon-kinesis-firehose

解决方案


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'))

推荐阅读