Our Projects
增强 Amazon Redshift Spectrum 的数据安全性和治理,提供 VPC 端点 大数
许多客户正在将其数据仓库功能扩展到数据湖中,选择Amazon Redshift。他们希望进一步增强其安全性,以便能够基于Amazon Simple Storage Service Amazon S3实施访问策略。此外,他们还在采用需要通过私有网络访问数据湖的安全模型。
Amazon Redshift Spectrum 使您能够在存储在Amazon S3中的数据上运行Amazon Redshift SQL查询。Redshift Spectrum使用AWS Glue数据目录作为Hive元存储。当使用配置好的Redshift数据仓库时,Redshift Spectrum计算能力在与您的Redshift集群独立的Amazon Redshift所拥有的专用Redshift服务器上运行。当启用增强VPC路由时,Redshift Spectrum会从Redshift VPC连接到您VPC中的弹性网络接口ENI。由于它使用独立的Redshift专用集群,您需要开启增强VPC路由并在Redshift数据仓库VPC和S3数据源之间创建特定的网络路径,以便强制将所有流量通过VPC。
在使用Amazon Redshift Serverless实例时,Redshift Spectrum与您的无服务器工作组计算能力共享相同的计算资源。通过增强VPC路由选项,您可以在不让流量离开VPC的情况下从Redshift Serverless访问S3数据源,无需任何额外的网络配置。
AWS Lake Formation提供了一种简单且集中化的方法来管理S3数据源的访问。Lake Formation允许组织使用熟悉的数据库概念如表和列及更高级的选项如行级和单元格级安全来管理基于Amazon S3的数据湖的访问控制。Lake Formation利用AWS Glue 数据目录来提供Amazon S3的访问控制。
在本文中,我们将演示如何配置您的网络,以使Redshift Spectrum能够利用Redshift配置集群的增强VPC路由通过Lake Formation访问Amazon S3数据中的访问控制。您可以在私有网络中设置此集成,而无需连接到互联网。
该解决方案通过启用Amazon Redshift增强VPC路由将网络流量路由通过您的VPC。这种路由选项优先考虑VPC端点作为第一条路由优先级,优于互联网网关、NAT实例或NAT网关。为了防止您的Redshift集群与VPC外部资源通信,必须删除所有其他路由选项。这样可以确保所有通信通过VPC端点路由。
以下图示说明了该解决方案的架构。
解决方案包括以下步骤:
飞跃加速器在私有子网网络配置中创建Redshift集群:为Redshift集群启用增强VPC路由。修改路由表以确保无公共网络连接。为Redshift Spectrum连接创建以下VPC端点:AWS Glue接口端点。Lake Formation接口端点。Amazon S3网关端点。分析Amazon Redshift的连接和网络路由:验证私有网络中Amazon Redshift的网络路由。验证Redshift集群到各个VPC端点的网络连接。使用Amazon Redshift查询编辑器v2测试连接。此集成使用VPC端点在您的Redshift数据仓库与Lake Formation、Amazon S3和AWS Glue之间建立私密连接。
要设置此解决方案,您需要对AWS管理控制台有基本了解,拥有AWS账号,并能够访问以下AWS服务:
AWS GlueAWS身份与访问管理IAMLake FormationAmazon RedshiftAmazon S3亚马逊虚拟私有云 Amazon VPC此外,您还必须将Lake Formation与Amazon Redshift集成,以便访问您的非私有网络中的S3数据湖。有关说明,请参考 使用AWS Lake Formation集中治理数据湖,同时使用Amazon Redshift Spectrum启用现代数据架构。
第一步是配置您的Redshift集群,仅允许通过您的VPC进行网络通信,防止任何公共路由。为实现这一目标,您必须为Redshift集群启用增强VPC路由。请按照以下步骤完成:
在Amazon Redshift控制台中,转到您的集群。编辑网络和安全设置。对于增强VPC路由,选择开启。禁用公开可访问选项。选择保存更改,并修改集群以应用更新。您现在拥有只能通过VPC进行通信的Redshift集群。现在,您可以修改路由表,以确保没有公共网络连接。
在Amazon Redshift控制台中,记录子网组,并识别与该子网组关联的子网。
在Amazon VPC控制台中,识别与此子网关联的路由表,并编辑以删除NAT网关的默认路由。
如果您的集群在公共子网中,您可能需要删除互联网网关路由。如果子网与其他资源共享,可能会影响它们的连接。
您的集群现在位于私有网络中,无法与VPC外部的任何资源通信。
在您将Redshift集群配置为在没有外部连接的私有网络中运行后,您需要通过VPC端点建立与以下服务的连接:
AWS GlueLake FormationAmazon S3首先,Redshift Spectrum连接到AWS Glue端点以从AWS数据Glue目录中检索信息。要创建AWS Glue的VPC端点,请完成以下步骤:
在Amazon VPC控制台中,在导航窗格中选择端点。选择创建端点。在名称标签中,输入可选名称。在服务类别中,选择AWS服务。在服务部分,搜索并选择您的AWS Glue接口端点。

选择您端点的相应VPC和子网。
配置安全组设置并检查端点设置。
选择创建端点以完成过程。创建AWS Glue VPC端点后,Redshift Spectrum将能够在您的VPC中检索AWS Glue数据目录的信息。
重复相同的过程来创建Lake Formation端点:
在Amazon VPC控制台中,选择端点。选择创建端点。在名称标签中,输入可选名称。在服务类别中,选择AWS服务。在服务部分,搜索并选择您的Lake Formation接口端点。
选择您端点的相应VPC和子网。
配置安全组设置并检查端点设置。选择创建端点。现在,Amazon Redshift与Lake Formation和AWS Glue已建立连接,您可以检索目录并验证对数据湖的权限。
下一步是创建Amazon S3的VPC端点,以便Redshift Spectrum能够通过VPC端点访问存储在Amazon S3中的数据:
在Amazon VPC控制台中,选择端点。选择创建端点。在名称标签中,输入可选名称。在服务类别中,选择AWS服务。在服务部分,搜索并选择您的Amazon S3网关端点。
选择您端点的相应VPC和子网。
配置安全组设置并检查端点设置。选择创建端点。创建Amazon S3的VPC端点后,您已完成所有必要步骤,以确保您的Redshift集群可以通过VPC端点与所需服务进行私密通信。
确保与VPC端点关联的安全组正确配置非常重要,因为不正确的入站规则会导致连接超时。请验证安全组的入站规则正确设置,以允许必要的流量通过VPC端点。
您可以使用以下方法验证从Amazon Redshift到其他端点的网络路径。
您可以使用Amazon VPC资源图可视化Amazon Redshift的连接。资源图显示了VPC内资源之间的相互连接以及子网、NAT网关、互联网网关和网关端点之间的流量流动。在以下屏幕截图中,突出显示的子网运行Redshift集群的子网与NAT网关或互联网网关没有连接。与该子网关联的路由表只能通过VPC端点向Amazon S3访问。
请注意,AWS Glue和Lake Formation端点是接口端点,在资源图上不可见。
您可以使用可达性分析器验证从Redshift集群子网到所有VPC端点的连接。可达性分析器是一种配置分析工具,能够在您的VPC中测试源资源与目标资源之间的连接。完成以下步骤:
在Amazon Redshift控制台中,导航到Redshift集群配置页面,并记录内部IP地址。在Amazon EC2控制台中,通过IP地址筛选搜索您的ENI。选择与您的Redshift集群关联的ENI,然后选择运行可达性分析器。
对于源类型,选择网络接口。
对于源,选择Redshift的ENI。对于目标类型,选择VPC端点。对于目标,选择您的VPC端点。选择创建并分析路径。
分析完成后,查看分析以查看可达性。
在以下屏幕截图中,Redshift集群与Lake Formation端点之间可以建立连接。
您可以重复这些步骤,验证所有其他VPC端点的网络可达性。
您可以通过使用Amazon Redshift查询编辑器运行包含Redshift Spectrum表的SQL查询来验证连接性,如以下屏幕截图所示。
恭喜您!您已成功从配置的集群中查询Redshift Spectrum表,同时启用了增强VPC路由,以确保流量保持在您的AWS网络内部。
您应清理在本次练习中创建的资源,以避免对您的AWS账户产生不必要的费用。完成以下步骤:
在Amazon VPC控制台中,选择导航窗格中的端点。选择您创建的端点,在操作菜单上选择删除VPC端点。
在Amazon Redshift控制台中,导航到您的Redshift集群。
编辑集群的网络和安全设置,将增强VPC路由选择为关闭。
如果不打算进一步使用,您也可以删除您的Amazon S3数据和Redshift集群。
通过将您的Redshift数据仓库移至私有网络设置并启用增强VPC路由,您可以通过限制仅有授权网络的访问来增强Redshift集群的安全性。
我们要感谢AWS的同事Harshida Patel、Fabricio Pinto和Soumyajeet Patra对本博客文章提供的见解。
如果您有任何问题或建议,请在评论区留下您的反馈。如果您需要进一步帮助来确保S3数据湖和Redshift数据仓库的安全,请与您的AWS账号团队联系。