如何将Confluent云与AWS、Azure和GCP上的服务安全地连接起来

330 阅读8分钟

全托管云服务的兴起从根本上改变了技术格局,并带来了更大的灵活性、加速部署和减少停机时间等好处。Confluent提供了一个完全管理的连接器组合,使Confluent云与流行的数据源和汇进行快速、简单和可靠的整合,实时连接您的整个系统。然而,随着基于云的技术的采用,如果连接不安全,就会出现数据安全漏洞、DDoS攻击和垃圾邮件的机会。

由于混合和/或多云环境,以及使用多个供应商的数据系统,企业架构日趋复杂,通往安全网络的道路并不总是那么容易。这就是为什么我们从我们完全管理的连接器的用户那里收到的一个常见问题是如何安全地连接到他们的数据源和汇。这取决于几个因素:数据源/汇的位置(内部与云),源/汇是否来自云提供商或第三方服务(AWS/Azure/GCP与MongoDB/Snowflake),以及用户是否希望通过公共或私人网络进行连接。

在这篇博文中,我们将研究Confluent云上目前支持的两种安全网络选项:使用静态出口IP的公共IP地址进行安全连接(在AWS集群上可用),以及使用私有IP地址与所有云上的VPC对等和AWS上的转运网关进行连接。

方案1:使用公共IP地址安全地连接到源/汇

Connecting securely to a source/sink using a public IP address

在使用完全管理的连接器时,最常见的情况之一是使用其公共IP地址连接到一个源/汇。为了在通过公共端点连接时提供额外的安全性,我们最近为AWS中拥有公共互联网网络的Confluent Cloud集群推出了静态出口IP。有了这个功能,你可以得到一个小的IP地址列表,完全管理的连接器将用来连接到你的数据源或汇。然后你可以设置一个规则,只允许从这些IP地址访问你的源或汇。通过这样做,你可以增加一个额外的安全层,大大减少你的源或汇系统的攻击面。

使用IP过滤来保护你的源/汇系统是比较容易设置的,因为今天许多管理的数据系统提供了限制可以访问这些系统的IP地址的能力。即使在使用自我管理的数据系统时,如托管在云端或内部环境中的自我管理的数据库,也可以利用防火墙规则来限制系统的访问,只允许来自特定的IP地址。

下面的分步指南告诉你如何获得静态出口IP地址,并配置你的数据源/汇系统只接受来自这些IP地址的连接。在这个例子中,我们将从亚马逊RDS的PostgreSQL数据库读取数据,并将这些数据下沉到Snowflake。我们将配置源和汇,只允许从 Confluent 提供的静态出口 IP 访问。

以下是遵循本指南的先决条件:

  • 在AWS上的Confluent云中有一个Apache Kafka®集群,网络类型为互联网。
  • 一个带有样本数据的亚马逊RDS for PostgreSQL实例
  • 一个Snowflake实例

你可以使用促销代码CL60BLOG ,获得额外的60美元的免费Confluent Cloud使用权。*

一旦Kafka集群在Confluent Cloud上创建,通过点击侧边栏的集群概览>网络链接,导航到网络页面。

List of IPs under the “Egress IPs” section

一旦你进入网络页面,你应该在该页面的 "出口IPs "部分看到一个IP列表。如果你没有看到这个部分,请确保你已经在AWS上选择了你的集群类型,并将其配置为 "互联网 "网络类型。复制那里列出的IP地址,因为我们将在我们的数据源和汇中添加这个列表,以实现从完全管理的连接器的访问。

如果你的Confluent Cloud集群在Azure或GCP上,我们还不支持静态出口IP,你可以查找你的Confluent Cloud集群所在的云区域的IP地址,并将这些地址作为IP允许列表。虽然这种方法不是万无一失的,因为IP地址的范围会比静态出口IP广泛得多,但它将大大限制攻击来源的IP空间。

现在我们有了出口IP列表,我们可以通过以下步骤配置AWS RDS for PostgreSQL实例以允许来自这些IP地址的访问。首先,确保PostgreSQL实例被配置为公共访问。接下来,创建一个安全组,允许静态出口IP地址对PostgreSQL数据库端口(默认是5432端口)的入站访问。要做到这一点,编辑与PostgreSQL实例相关的安全组的入站规则。创建一个新的入站规则,类型为 "PostgreSQL",来源设置为 "自定义",然后从先前复制的列表中粘贴IP地址,用逗号分隔,如下图所示。

Create a new inbound rule with type “PostgreSQL” source set to “custom” and then paste in the IP addresses from the list

如果你连接到一个不同的源或汇系统,你将遵循类似的指示,为该系统授予对出口IP地址的访问。

规则添加完毕后,保存规则。现在在Confluent Cloud中,为你的Kafka集群创建一个新的PostgreSQL源连接器,使用PostgreSQL数据库的公共主机名。由于出口IP地址已经被授予访问权,你的完全管理的连接器现在将能够安全地连接到数据库,而不必将你的数据库完全暴露给整个互联网。

现在,我们已经设置了 PostgreSQL 源连接器,我们需要配置 Snowflake 实例,以允许访问 Confluent 提供的静态出口 IP。要做到这一点,你需要创建一个新的网络策略,并将其分配给 Snowflake 帐户,允许访问集群概述 > 网络部分提供的 IP 列表。当创建网络策略时,你需要使用一个具有正确权限的角色,如 SECURITYADMIN 角色。在创建和分配网络策略之前,请确保查看 Snowflake 文档中的使用说明

Snowflake management console showing the network policy creation
Snowflake 管理控制台显示网络策略的创建情况

一旦创建和分配了网络策略,您就可以完成配置 Confluent Cloud 上的 Snowflake 水槽连接器,以连接到您的 Snowflake 实例的公共端点并启动该连接器。一旦启动,汇连接器将能够安全地连接到Snowflake实例,并能够从配置的Kafka主题写入记录。

选项 2:使用私有 IP 地址连接到源/汇

对于想要使用私有 IP 地址连接到其数据系统的用户,有几个不同的选项,这取决于您要连接的源/汇系统和您的 Confluent 云集群的网络类型。虽然这是一个更复杂的设置,但通过私有IP地址连接提供了额外的安全性,因为数据没有在公共互联网上穿越,你不必将你的数据系统暴露在互联网上。

要通过私有IP地址进行连接,你的Confluent云集群必须设置VPC对等(可用于AWS和GCP;VNet对等用于Azure)或转运网关(仅AWS)。目前支持通过私有IP地址连接的两种常见模式。

第一种模式是当数据源/汇位于你的VPC中时,该VPC与Confluent Cloud对等。在这种情况下,完全管理的连接器将通过对等连接使用私有IP地址连接到源/汇。这种网络模式可用于由云供应商提供的源/汇系统,如AWS Redshift、Azure CosmosDB、Google BigQuery等,也可用于托管在云上的自管理源/汇。

Data source/sink residing in your VPC

第二个支持的模式是在用Confluent Cloud窥视的VPC中创建一个私有链接端点到数据源/汇。这使您能够连接到第三方管理的源/汇,如MongoDB Atlas。请注意,第三方服务必须支持通过私有链接端点的可公开解析的DNS或通过端点的私有IP地址进行连接。下图说明了这种类型的连接。

Private link endpoint to the data source/sink in the VPC

总结

在这篇博文中,我们介绍了在Confluent Cloud上使用完全管理的连接器的各种方法,以安全地连接到您在AWS、Azure、GCP上的现有数据系统,以及那些在企业内部托管的系统。新发布的用于AWS上的Confluent Cloud集群的静态出口IP功能,使得即使在使用公共端点的情况下,也能轻松地安全连接到Snowflake、Redshift、MongoDB和Elasticsearch等数据系统。对于无法使用公共端点的客户,有办法通过利用网络选项(如对等或过境网关)通过私人网络进行连接。Confluent也在与AWS、Azure和GCP紧密合作,以便在未来提供更多的安全网络选项。