将 Amazon Keyspaces e 与接口 VPC - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将 Amazon Keyspaces e 与接口 VPC

接口 VPC 终端节点允许在 Amazon VPC 和Amazon Keyspaces e 中运行的虚拟私有云 (VPC) 和Amazon 接口 VPC 终端节点由提供支持Amazon PrivateLink,这是一个Amazon支持在 VPC 和之间进行私密通信的服务Amazon服务。

Amazon PrivateLink在 VPC 中使用具有私有 IP 地址的elastic network interface 来启用此功能,这样网络流量就不会离开Amazon 网络。接口 VPC 终端节点不需要 Internet 网关、NAT 设备、VPN 连接或 Amazon Direct Connect 连接。有关更多信息,请参阅Amazon Virtual Private Cloud接口 VPC 端点 (Amazon PrivateLink).

将接口 VPC 终端节点用于Amazon Keyspaces

您可以创建接口 VPC 终端节点,以便 Amazon Keyspaces 和您的 Amazon VPC 资源之间的流量开始流经接口 VPC 终端节点。要开始使用,请按照以下步骤创建接口终端节点。接下来,编辑与您在上一步中创建的终端节点关联的安全组,并为端口 9142 配置入站规则。有关更多信息,请参阅添加、删除和更新规则.

填充system.peers带有接口 VPC 终端节点信息的表条目

Apache Cassandra 驱动程序使用system.peers表用于查询有关群集的节点信息。Cassandra 驱动程序使用节点信息来平衡连接和重试操作。亚马逊Keyspaces 填充了九个条目system.peers表自动显示通过公共端点连接的客户端。

为了向通过接口 VPC 终端节点连接的客户端提供类似的功能,Amazon Keyspaces 会填充system.peers您的账户中的表,其中包含有可用的 VPC 终端节点的每个可用区的条目。要在中查找和存储可用接口 VPC 终端节点system.peers表,Amazon Keyspaces 要求您授予用于连接到 Amazon Keyspaces 的 IAM 实体访问权限,以便向您的 VPC 查询终端节点和网络接口信息。

重要

填充system.peers带有可用接口的表 VPC 终端节点可改善负载均衡并提高读/写吞吐量。建议所有使用接口 VPC 终端节点访问 Amazon Keyspaces 的客户使用,这是 Apache Spark 所必需的。

要向用于连接到 Amazon Keyspaces 的 IAM 实体授予查找必要接口 VPC 终端节点信息的权限,您可以更新现有的 IAM 角色或用户策略,或者创建新的 IAM 策略,如以下示例所示。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ListVPCEndpoints", "Effect":"Allow", "Action":[ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcEndpoints" ], "Resource":"*" } ] }

要确认策略设置正确,请查询system.peers表格可查看网络信息。如果system.peers表为空,它可能表示策略配置不成功或者您已超过的请求速率配额DescribeNetworkInterfacesDescribeVPCEndpointsAPI 操作。DescribeVPCEndpoints落入了Describe*类别,被认为是非变异动作.DescribeNetworkInterfaces属于以下子集未经过滤和未分页的非变异动作,适用不同的配额。有关更多信息,请参阅请求代币桶大小和充值率Amazon EC2 API 参考中的。

如果您确实看到空表,请在几分钟后重试以排除请求速率配额问题。要验证您是否已正确配置了 VPC 终端节点,请参阅我的 VPC 终端节点连接无法正常工作. 如果您的查询返回表中的结果,则说明您的策略配置正确。

控制对亚马逊Keyspaces 接口 VPC 终端节点的访问权限

使用 VPC 终端节点策略,您可以通过两种方式控制对资源的访问:

  • IAM policy— 您可以控制允许通过特定 VPC 终端节点访问 Amazon Keyspaces 的请求、用户或组。您可以通过在附加到 IAM 用户、组或角色的策略中使用条件键来完成此操作。

  • VPC 策略— 您可以将策略附加到 Amazon Keyspaces 资源,控制哪些 VPC 终端节点有权访问。要限制仅允许通过特定 VPC 终端节点的流量来访问特定键空间或表,请编辑限制资源访问的现有 IAM 策略并添加该 VPC 终端节点。

下面是访问 Amazon Keyspaces 资源的终端节点策略示例。

  • IAM 策略示例:限制对特定 Amazon Keyspaces 表的所有访问权限,除非流量来自指定的 VPC 终端节点— 此示例策略可以附加到 IAM 用户、角色或组。它限制对指定的 Amazon Keyspaces 表的访问,除非传入流量来自指定的 VPC 终端节点。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "UserOrRolePolicyToDenyAccess", "Action": "cassandra:*", "Effect": "Deny", "Resource": [ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ], "Condition": { "StringNotEquals" : { "aws:sourceVpce": "vpce-abc123" } } } ] }
    注意

    要限制对特定表的访问,还必须包括对系统表的访问权限。系统表为只读。

  • VPC 策略示例:只读访问权限— 此示例策略可以附加到 VPC 终端节点。(有关更多信息,请参阅控制对 Amazon VPC 资源的访问)。它将操作限制为通过其连接的 VPC 终端节点对 Amazon Keyspaces 资源进行只读访问。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnly", "Principal": "*", "Action": [ "cassandra:Select" ], "Effect": "Allow", "Resource": "*" } ] }
  • VPC 策略示例:限制对特定 Amazon Keyspaces 表的访问权限— 此示例策略可以附加到 VPC 终端节点。它限制通过所附加到的 VPC 终端节点访问特定表。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictAccessToTable", "Principal": "*", "Action": "cassandra:*", "Effect": "Allow", "Resource": [ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ] }
    注意

    要限制对特定表的访问,还必须包括对系统表的访问权限。系统表为只读。

可用性

Amazon Keyspaces 支持在所有接口中使用 VPC 终端节点Amazon Web Services 区域哪里有服务可用。有关更多信息,请参阅 Amazon Keyspaces

VPC 终端节点策略和Amazon Keyspaces point-in-time恢复 (PITR)

如果您将 IAM 策略与条件键为了限制传入流量,表恢复操作可能会失败。例如,如果您使用将源流量限制到特定 VPC 终端节点aws:SourceVpce条件键,表恢复操作失败。要允许 Amazon Keyspaces 代表您的委托人执行恢复操作,您必须添加一个aws:ViaAWSService您的 IAM 策略的条件密钥。这些区域有:aws:ViaAWSService条件密钥允许在任何时候访问Amazon服务使用委托人的凭证发出请求。有关更多信息,请参阅IAM JSON 策略元素:条件键在里面IAM 用户指南. 以下策略就是一个示例。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CassandraAccessForVPCE", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"false" }, "StringEquals":{ "aws:SourceVpce":[ "vpce-12345678901234567" ] } } }, { "Sid":"CassandraAccessForAwsService", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"true" } } } ] }

常见错误和警告

如果您使用Amazon Virtual Private Cloud 并连接到亚马逊 Keyspaces,则可能会看到以下警告。

Control node cassandra.us-east-1.amazonaws.com/1.111.111.111:9142 has an entry for itself in system.peers: this entry will be ignored. This is likely due to a misconfiguration; please verify your rpc_address configuration in cassandra.yaml on all nodes in your cluster.

之所以出现此警告,是因为system.peers表包含 Amazon Keyspaces 有权查看的所有 Amazon VPC 终端节点的条目,包括您通过其连接的 Amazon VPC 终端节点。您可以放心地忽略此警告。

有关其他错误,请参见我的 VPC 终端节点连接无法正常工作.