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

Account A
是包含Account B
和Account C
需要访问的资源(Amazon Keyspaces 表)的账户,信任账户Account A
也是如此。 Account B
而Account C
委托人需要访问其中的资源(Amazon Keyspaces 表)Account A
的账户也是值得信Account B
赖Account C
的账户。信任账户通过共享 IAM 角色向受信账户授予权限。以下程序概述了Account A
中所需的配置步骤。
Account A
所需的配置
在中创建 Amazon Keyspaces 密钥空间和表。
Account A
在中创建一个 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*" ] } ] }
为中的 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 用户指南》中的跨账户策略。
在中配置 VPC 终端节点,
Account A
并向该终端节点授予权限,允许来自Account B
和Account 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 B
和 Account C
中的配置
在
Account B
和Account 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 用户提供访问权限。在
Account B
和中Account C
,您可以创建使用 SIGV4 身份验证插件的应用程序,该插件允许应用程序扮演共享角色以连接到位于中的 Amazon Keyspaces 表。Account A
有关 SIGV4身份验证插件的更多信息,请参阅创建用于通过编程方式访问 Amazon Keyspaces 的凭证。。有关如何将应用程序配置为在另一个 Amazon 账户中扮演角色的更多信息,请参阅和工具参考指南中的身份验证Amazon SDKs 和访问权限。