使用接口 VPC 终端节点连接到 Amazon Redshift - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用接口 VPC 终端节点连接到 Amazon Redshift

您可以使用 Virtual Private Cloud(VPC)中的接口 VPC 终端节点 (Amazon PrivateLink) 直接连接到 Amazon Redshift API 服务,而不是通过 Internet 连接。有关 Amazon Redshift API 操作的信息,请参阅 Amazon Redshift API 参考中的操作。有关 Amazon PrivateLink 的更多信息,请参阅 Amazon VPC 用户指南中的接口 VPC 终端节点 (Amazon PrivateLink)。请注意,与集群的 JDBC/ODBC 连接不是 Amazon Redshift API 服务的一部分。

当您使用接口 VPC 终端节点时,您的 VPC 和 Amazon Redshift 之间的通信完全在 Amazon 网络内进行,从而可以提供更好的安全性。每个 VPC 终端节点都由您的 VPC 子网中一个或多个使用私有 IP 地址的弹性网络接口代表。有关弹性网络接口的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的弹性网络接口

一个接口 VPC 终端节点将您的 VPC 直接连接到 Amazon Redshift。它不使用互联网网关、网络地址转换 (NAT) 设备、虚拟专用网络 (VPN) 连接或 Amazon Direct Connect 连接。VPC 中的实例不需要公有 IP 地址便可与 Amazon Redshift API 进行通信。

要在 VPC 中使用 Amazon Redshift,您有两种选择。一种是从 VPC 内的实例进行连接。另一种方法是将您的私有网络连接到您的 VPC,方法是使用 Amazon VPN 选项或 Amazon Direct Connect。有关 Amazon VPN 选项的更多信息,请参阅 Amazon VPC 用户指南中的 VPN 连接。有关 Amazon Direct Connect 的信息,请参阅 Amazon Direct Connect 用户指南中的创建连接

您可以创建接口 VPC 终端节点以使用 Amazon Web Services Management Console 或 Amazon Command Line Interface (Amazon CLI) 命令连接到 Amazon Redshift。有关更多信息,请参阅创建接口终端节点

在创建接口 VPC 终端节点后,您可以为端点启用私有 DNS 主机名。当您执行此操作时,默认的 Amazon Redshift 端点 (https://redshift.Region.amazonaws.com) 解析为您的 VPC 终端节点。

如果您不启用私有 DNS 主机名,Amazon VPC 将提供一个您可以使用的 DNS 端点名称,格式如下。

VPC_endpoint_ID.redshift.Region.vpce.amazonaws.com

有关更多信息,请参阅 Amazon VPC 用户指南中的接口 VPC 终端节点 (Amazon PrivateLink)

Amazon Redshift 支持调用您的 VPC 中的所有 API 操作

您可以将 VPC 终端节点策略附加到 VPC 终端节点,以控制 Amazon Identity and Access Management (IAM) 委托人的访问权限。您还可以将安全组与 VPC 终端节点关联,以便根据网络流量的源和目标控制入站和出站访问。示例为 IP 地址的范围。有关更多信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 终端节点控制对服务的访问

您可以为 Amazon Redshift 的 VPC 终端节点创建一个策略,在该策略中指定以下内容:

  • 可以或不能执行操作的委托人

  • 可执行的操作

  • 可对其执行操作的资源

有关更多信息,请参阅《Amazon VPC 用户指南》中的使用 VPC 终端节点控制对服务的访问权限

接下来,您可以查找 VPC 终端节点策略示例。

以下 VPC 终端节点策略会拒绝 Amazon 账户 123456789012 使用此端点访问资源的所有权限。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

以下 VPC 端点策略仅向 Amazon 账户 123456789012 中的 IAM 角色 redshiftrole 授予完全访问权限。使用终端节点拒绝所有其它 IAM 委托人进行访问。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/redshiftrole" ] } }] }

这只是一个示例。在大多数应用场景中,我们建议附加特定操作的权限,以缩小权限范围。

以下 VPC 终端节点策略仅允许对 Amazon 账户 123456789012 中的 IAM 用户 redshiftadmin 进行完全访问。使用端点拒绝所有其他 IAM 委托人进行访问。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/redshiftadmin" ] } }] }

这只是一个示例。在大多数应用场景中,我们建议在将权限分配给用户之前为角色附加权限。此外,我们建议使用特定操作来缩小权限范围。

以下 VPC 终端节点策略仅允许 Amazon 账户 123456789012 执行指定的 Amazon Redshift 操作。

指定的操作为 Amazon Redshift 提供等效的只读访问权限。针对指定账户拒绝 VPC 上的所有其它操作。同样,所有其他帐户都被拒绝进行任何访问。有关 Amazon Redshift 操作的列表,请参阅 IAM 用户指南中的 Amazon Redshift 的操作、资源和条件键

{ "Statement": [ { "Action": [ "redshift:DescribeAccountAttributes", "redshift:DescribeClusterParameterGroups", "redshift:DescribeClusterParameters", "redshift:DescribeClusterSecurityGroups", "redshift:DescribeClusterSnapshots", "redshift:DescribeClusterSubnetGroups", "redshift:DescribeClusterVersions", "redshift:DescribeDefaultClusterParameters", "redshift:DescribeEventCategories", "redshift:DescribeEventSubscriptions", "redshift:DescribeHsmClientCertificates", "redshift:DescribeHsmConfigurations", "redshift:DescribeLoggingStatus", "redshift:DescribeOrderableClusterOptions", "redshift:DescribeQuery", "redshift:DescribeReservedNodeOfferings", "redshift:DescribeReservedNodes", "redshift:DescribeResize", "redshift:DescribeSavedQueries", "redshift:DescribeScheduledActions", "redshift:DescribeSnapshotCopyGrants", "redshift:DescribeSnapshotSchedules", "redshift:DescribeStorage", "redshift:DescribeTable", "redshift:DescribeTableRestoreStatus", "redshift:DescribeTags", "redshift:FetchResults", "redshift:GetReservedNodeExchangeOfferings" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

以下 VPC 终端节点策略允许所有账户和委托人的完全访问权限。与此同时,它拒绝 Amazon 账户 123456789012 对于在具有集群 ID my-redshift-cluster 的 Amazon Redshift 集群上执行的操作的任何访问。仍然允许其他不支持集群资源级权限的 Amazon Redshift 操作。有关 Amazon Redshift 操作及其相应资源类型的列表,请参阅 IAM 用户指南中的 Amazon Redshift 的操作、资源和条件键

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "Principal": { "AWS": [ "123456789012" ] } } ] }