不使用共享 VPC 配置 Amazon Keyspaces 的跨账户访问 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

不使用共享 VPC 配置 Amazon Keyspaces 的跨账户访问

如果 Amazon Keyspaces 表和私有 VPC 端点由不同的账户拥有但不共享 VPC,则应用程序仍可使用 VPC 端点进行跨账户连接。由于账户不共享 VPC 端点,Account AAccount BAccount C 需要各自的 VPC 端点。在 Cassandra 客户端驱动程序中,Amazon Keyspaces 显示为单节点集群而不是多节点集群。连接后,客户端驱动程序会到达 DNS 服务器,服务器会返回账户 VPC 中的一个可用终端节点。

您还可以使用公有终端节点或在每个账户中部署私有 VPC 终端节点来跨不同账户访问 Amazon Keyspaces 表,而无需共享 VPC 终端节点。不使用共享 VPC 时,每个账户都需要自己的 VPC 端点。在本示例中,Account AAccount BAccount C 都需要各自的 VPC 端点才能访问Account A 中的表。在此配置中使用 VPC 端点时,Amazon Keyspaces 在 Cassandra 客户端驱动程序中显示为单节点集群,而不是多节点集群。连接后,客户端驱动程序会到达 DNS 服务器,服务器会返回账户 VPC 中的一个可用终端节点。但客户端驱动程序无法访问 system.peers 表来发现其他端点。由于可用主机较少,驱动程序建立的连接也较少。要对此进行调整,请将驱动程序的连接池设置提高 3 倍。

示意图:显示了同一组织在同一 Amazon Web Services 区域 拥有的三个没有共享 VPC 的不同账户。

Account A是包含Account BAccount C需要访问的资源(Amazon Keyspaces 表)的账户,信任账户Account A也是如此。 Account BAccount C委托人需要访问其中的资源(Amazon Keyspaces 表)Account A的账户也是值得信Account BAccount C账户。信任账户通过共享 IAM 角色向受信账户授予权限。以下程序概述了Account A 中所需的配置步骤。

Account A 所需的配置
  1. 在中创建 Amazon Keyspaces 密钥空间和表。Account A

  2. 在中创建一个 IAM 角色Account A,该角色具有对 Amazon Keyspaces 表的完全访问权限和对 Amazon Keyspaces 系统表的读取权限。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:region:Account-A:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:region:Account-A:/keyspace/system*" ] } ] }
  3. 为中的 IAM 角色配置信任策略,Account A以便Account B和中的委托人Account C可以作为可信账户代入该角色。如以下示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "AWS": "arn:aws:iam::AccountC:role/Cross-Account-Role-C" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

    有关跨账户 IAM 策略的更多信息,请参阅《IAM 用户指南》中的跨账户策略

  4. 在中配置 VPC 终端节点,Account A并向该终端节点授予权限,允许来自Account BAccount C扮演角色的角色Account A使用 VPC 终端节点。这些权限对它们所连接的 VPC 终端节点有效。有关 VPC 端点策略的更多信息,请参阅控制 Amazon Keyspaces 对接口 VPC 端点的访问

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-from-specific-IAM-roles", "Effect": "Allow", "Principal": "*", "Action": "cassandra:*", "Resource": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": "arn:aws:iam::AccountB:role/Cross-Account-Role-B", "aws:PrincipalArn": "arn:aws:iam::AccountC:role/Cross-Account-Role-C" } } } ] }
Account BAccount C 中的配置
  1. Account BAccount C 中创建新角色并附加以下策略,允许主体代入在Account A 中创建的共享角色。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::Account-A:role/keyspaces_access" } }

    允许委托人担任共享角色是使用 Amazon Security Token Service (Amazon STS) 的 AssumeRole API 实现的。有关更多信息,请参阅 IAM 用户指南中的向您拥有 Amazon Web Services 账户 的另一个 IAM 用户提供访问权限。

  2. Account B和中Account C,您可以创建使用 SIGV4 身份验证插件的应用程序,该插件允许应用程序扮演共享角色以连接到位于中的 Amazon Keyspaces 表。Account A有关 SIGV4身份验证插件的更多信息,请参阅创建用于通过编程方式访问 Amazon Keyspaces 的凭证。。有关如何将应用程序配置为在另一个 Amazon 账户中扮演角色的更多信息,请参阅工具参考指南中的身份验证Amazon SDKs 和访问权限