将 Amazon Redshift Spectrum 与增强型 VPC 路由一起使用 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon Redshift Spectrum 与增强型 VPC 路由一起使用

Amazon Redshift 增强型 VPC 路由通过您的 VPC 路由特定流量。集群与 Amazon S3 存储桶之间的所有流量都强制通过您的 Amazon VPC 传送。Redshift SpectrumAmazon(由 Amazon Redshift 拥有)的托管资源。由于这些资源位于 VPC 外部,Redshift Spectrum 不使用增强型 VPC 路由。

当您的集群配置为使用增强型 VPC 路由时,Redshift Spectrum 和 Amazon S3 之间的流量将通过Amazon私有网络,位于您的 VPC 之外。使用 Amazon 签名版本 4 协议 (SIGv4) 签署正在传输的流量并使用 HTTPS 对该流量加密。此流量基于附加到 Amazon Redshift 集群的 IAM 角色进行授权。要进一步管理 Redshift Spectrum 流量,您可以修改集群的 IAM 角色以及附加到 Amazon S3 存储桶的策略。您可能还需要配置 VPC 以允许集群访问Amazon Glue或 Athena,详情如下。

在 Redshift Spectrum 中使用增强型 VPC 路由的注意事项

以下是使用 Redshift Spectrum 增强型 VPC 路由时的注意事项:

存储桶访问策略

您可以使用附加到存储桶的存储桶策略以及使用附加到集群的 IAM 角色来控制对 Amazon S3 存储桶中数据的访问。

Redshift Spectrum 无法访问存储在下面这样的存储 Amazon S3 中的数据:此类存储桶使用的存储桶策略限制仅访问指定的 VPC 终端节点。相反,应使用限制仅访问特定委托人的存储桶策略,例如特定的Amazon帐户或特定用户。

对于被授予存储桶访问权限的 IAM 角色,请使用允许仅由 Amazon Redshift 服务委托人代入该角色的信任关系。该角色附加到集群时,只能在 Amazon Redshift 的上下文中使用,并且不能在集群外部共享。有关更多信息,请参阅 限制对 IAM 角色的访问

要使用 Redshift 频谱,不能制定任何阻止使用预签名 URL 的 IAM 策略。

以下示例存储桶策略仅允许从下面这样的流量访问指定存储桶:Amazon账户123456789012

{ "Version":"2012-10-17", "Statement":[ { "Sid":"BucketPolicyForSpectrum", "Effect":"Allow", "Principal": {"AWS": ["arn:aws:iam::123456789012:root"]}, "Action":[“s3:GetObject",”s3:List*"], "Resource":["arn:aws:s3:::examplebucket/*"], "Condition":{"StringEquals":{"aws:UserAgent": "AWS Redshift/Spectrum"]}} } ] }

集群 IAM 角色

附加到集群的角色应该具有信任关系,只允许 Amazon Redshift 服务代入它,如下所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

您可以向集群角色添加策略,以防止 COPY 和 UNLOAD 访问特定存储桶。以下策略仅允许从 Redshift Spectrum 到指定存储桶的流量。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::myBucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

有关更多信息,请参阅 。Amazon Redshift Spectrum 的 IAM 策略中的Amazon Redshift 数据库开发人员指南

记录和审计 Amazon S3 访问

使用 Amazon Redshift 增强型 VPC 路由的一个好处是,所有 COPY 和 UNLOAD 流量都记录在 VPC 流日志中。源自 Redshift Spectrum 且传入 Amazon S3 的流量不会通过您的 VPC,因此它不会记录在 VPC 流日志中。当 Redshift Spectrum 访问 Amazon S3 中的数据时,它会在Amazon帐户和各自的角色权限。您可以在中使用服务器访问日志记录来记录和审计 Amazon S3 访问权限Amazon CloudTrail和 Amazon S3。

Amazon CloudTrail 日志

要跟踪对 Amazon S3 中对象的所有访问(包括 Redshift Spectrum 访问),请为 Amazon S3 对象启用 CloudTrail 日志记录。

您可以使用 CloudTrail 来查看、搜索、下载、归档、分析和响应您的Amazon基础设施。有关更多信息,请参阅 CloudTrail 入门

默认情况下,CloudTrail 仅跟踪存储桶级操作。要跟踪对象级别的操作(例如 GetObject),请为每个已记录的存储桶启用数据和管理事件。

Amazon S3 服务器访问日志记录

服务器访问日志记录详细地记录对存储桶提出的各种请求。访问日志信息可能在安全和访问审核方面十分有用。有关更多信息,请参阅 。如何启用服务器访问日志记录中的Amazon Simple Storage Service 开发人员指南

有关更多信息,请参阅 。Amazon安全博客帖子如何使用存储桶策略并应用深度防御来帮助保护您的 Amazon S3 数据

针对 的访问权限Amazon Glue或 Amazon Athena

Redshift Spectrum 访问您在Amazon Glue或是 Athena 另一种选择是为您的数据目录使用专用的 Hive 元存储。

启用对Amazon Glue或 Athena,请使用 Internet 网关或 NAT 网关配置 VPC。配置 VPC 安全组以允许传输到公有终端节点的出站流量Amazon Glue和 Athena 或者,您可以为 Amazon Glue 配置接口 VPC 终端节点以访问您的 Amazon Glue Data Catalog。当您使用 VPC 接口终端节点时,您的 VPC 和之间的通信Amazon Glue是在Amazon网络。有关更多信息,请参阅创建接口终端节点

可以在您的 VPC 中配置以下通道:

  • Internet 网关— 将连接到Amazon服务,您可以在 VPC 之外连接互联网网关添加到您的 VPC 子网,如Amazon VPC 用户指南。要使用 Internet 网关,您的集群必须具有一个公有 IP 地址来允许其他服务与您的集群进行通信。

  • NAT 网关— 将 Amazon S3 存储桶连接到另一个Amazon区域或其他服务Amazon网络中,配置网络地址转换 (NAT) 网关,如Amazon VPC 用户指南。使用此配置还可以访问Amazon网络。

有关更多信息,请参阅 Amazon Redshift 中的增强型 VPC 路由