如何安全让Kinesis Firehose访问Redshift且不暴露整个集群
解决Kinesis Firehose与Redshift公网访问的安全冲突问题
Kinesis Firehose的官方文档明确要求:
如果您的Amazon Redshift集群位于虚拟私有云(VPC)中,则它必须具备公网IP地址以实现公网可访问。
文档还提到可通过安全组放行特定CIDR范围来限制访问,但启用公网可访问时,Redshift集群所在子网需要配置指向0.0.0.0的路由和互联网网关。
但将Redshift集群暴露在公网是违反AWS安全最佳实践的,还会触发AWS Security Hub的严重告警:
aws-foundational-security-best-practices/v/1.0.0/Redshift.1
Redshift.1 Amazon Redshift集群应禁止公网访问
建议修复措施:
- 选择“操作”,然后选择“修改公网可访问设置”。
- 在“允许VPC外的实例和设备通过集群端点连接到您的数据库”下,选择“否”。
可行解决方案
1. 配置Kinesis Firehose的VPC接口端点
让Firehose通过VPC内部网络访问Redshift,无需集群开启公网可访问:
- 在Redshift所在VPC中创建Firehose接口端点,关联到私有子网
- 调整Redshift安全组规则,允许该接口端点的IP段访问默认端口(5439)
- 配置Firehose目标时,使用Redshift的私有端点或内部IP地址
2. 利用VPC对等连接/中转网关实现私有通信
若Firehose与Redshift处于不同VPC,通过私有网络打通访问路径:
- 建立VPC对等连接或通过中转网关打通跨VPC网络
- 配置双方安全组,允许彼此私有IP段访问对应服务端口
- 调整路由表,确保流量在私有网络内流转
3. 改用Redshift Serverless(推荐)
Redshift Serverless原生支持Firehose通过私有网络加载数据,无需公网暴露:
- 创建Redshift Serverless工作组时配置在私有子网内
- 配置Firehose目标为Redshift Serverless,选择私有网络访问模式
- 确保Firehose拥有VPC内部访问Redshift Serverless的权限
4. 中间层中转加载
通过私有子网内的服务中转数据,彻底隔离公网:
- 配置Firehose将数据先写入S3存储桶
- 在Redshift所在私有子网部署Lambda、ECS任务或EKS Pod,触发这些服务将S3数据加载到Redshift
- Redshift安全组仅允许中间服务的IP访问,完全关闭公网可访问
内容的提问来源于stack exchange,提问作者Chris Austin
相关产品推荐
相关产品推荐

