Redshift 复制和卸载安全

Redshift Copy and Unload Security

我的 Redshift 集群位于一个完全锁定的私有子网中。我想在 Redshift 中使用 运行 COPYUNLOAD 命令,这将与 S3 存储桶交互。我知道我想使用 VPC 端点来附加 S3 存储桶,但我在文档中看不到任何内容显示如何打开正确的端口到正确的 IP 范围以允许 COPYUNLOAD发生了,我现在唯一能让它工作的方法是保持入站和出站网络 ACL 和安全组完全开放。我在生产环境中 运行 对此感到不自在,必须有更好的方法来保护 Redshift 以进行这些操作。

非常感谢任何帮助!

假设 Redshift 将 S3 作为 Web 服务进行访问(就像其他一切一样),那么打开 443 出站应该就足够了。安全组不会阻止 return 流量,因此无需打开入站端口(当然,对于特定来源,5439 除外)。

但是您为什么担心阻止来自 Redshift 的出站流量?通常,如果担心不受控制的程序会 运行 在服务器上,您只会阻止出站流量。您可能对网络配置考虑过度了。

安全组足以保护 Amazon Redshift 集群。

由于系统通信方式的原因,NACL 在资源上的配置是出了名的困难。例如,Amazon EC2 实例可以在端口 5439 上向 Redshift 发送请求。数据包包含一个 return 地址,该地址在响应的 EC2 实例上随机选择一个端口应该发送。这是计算机在向系统发送多个请求时处理响应的方式。

缺点是您不知道需要哪个端口来发送返回响应。这就是您在配置 NACL 时遇到问题的原因。

但是,安全组是 有状态的,并自动允许出站响应返回到原始请求中指定的端口。只需将它们视为智能 NACL。

底线:使用安全组,而不是 NACL。

另一个可能的原因是 增强型 VPC 路由 https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html

如果启用此功能,并且您的集群没有 public IP,并且您的 VPC 被锁定到外部流量,那么您将需要创建一个 VPC 端点 S3 将所有流量保留在您的 VPC 内部。

参考:https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-working-with-endpoints.html