本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
不使用共享 VPC 配置 Amazon Keyspaces 的跨账户访问
如果 Amazon Keyspaces 表和私有 VPC 端点由不同的账户拥有但不共享 VPC,则应用程序仍可使用 VPC 端点进行跨账户连接。由于账户不共享 VPC 端点,Account A:111111111111、Account B:222222222222 和Account C:333333333333 需要各自的 VPC 端点。在 Cassandra 客户端驱动程序中,Amazon Keyspaces 显示为单节点集群而不是多节点集群。连接后,客户端驱动程序会到达 DNS 服务器,服务器会返回账户 VPC 中的一个可用终端节点。
通过使用公有终端节点或在每个账户中部署私有 VPC 终端节点,您还可以在没有共享 VPC 终端节点的情况下跨不同账户访问 Amazon Keyspaces 表。不使用共享 VPC 时,每个账户都需要自己的 VPC 端点。在本示例中,Account A:111111111111、Account B:222222222222 和Account C:333333333333 都需要各自的 VPC 端点才能访问Account A:111111111111 中的表。在此配置中使用 VPC 端点时,Amazon Keyspaces 在 Cassandra 客户端驱动程序中显示为单节点集群,而不是多节点集群。连接后,客户端驱动程序会到达 DNS 服务器,服务器会返回账户 VPC 中的一个可用终端节点。但客户端驱动程序无法访问 system.peers 表来发现其他端点。由于可用主机较少,驱动程序建立的连接也较少。要对此进行调整,请将驱动程序的连接池设置提高 3 倍。
Account A:111111111111是包含Account C:333333333333需要访问的资源(Amazon Keyspaces 表)的账户,信任账户Account A:111111111111也是如此。Account B:222222222222Account B:222222222222Account C:333333333333而拥有需要访问资源(Amazon Keyspaces 表)的委托人的账户 Account A:111111111111Account B:222222222222,Account C:333333333333也是可信账户。信任账户通过共享 IAM 角色向受信账户授予权限。以下程序概述了Account A:111111111111 中所需的配置步骤。
的配置 账户 A:111111111111
在中创建 Amazon Keyspaces 密钥空间和表。
Account A:111111111111在中创建一个 IAM 角色
Account A:111111111111,该角色具有对亚马逊密钥空间表的完全访问权限和对亚马逊密钥空间系统表的读取权限。{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:us-east-1:111111111111:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111111111111:/keyspace/system*" ] } ] }在中为 IAM 角色配置信任策略,
Account A:111111111111以便Account B:222222222222和中的委托人Account C:333333333333可以代入该角色为可信账户。如以下示例所示。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::222222222222:role/Cross-Account-Role-B", "arn:aws:iam::333333333333:role/Cross-Account-Role-C" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }有关跨账户 IAM 策略的更多信息,请参阅 IAM 用户指南中的Cross-account 策略。
在中配置 VPC 终端节点,
Account A:111111111111并向该终端节点授予权限,允许角色来自该终端节点Account B:222222222222并Account C:333333333333代入Account A使用 VPC 终端节点的角色。这些权限对它们所连接的 VPC 终端节点有效。有关 VPC 端点策略的更多信息,请参阅控制 Amazon Keyspaces 对接口 VPC 端点的访问。{{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessfromSpecificIAMroles", "Effect": "Allow", "Action": "cassandra:*", "Resource": "*", "Principal": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:role/Cross-Account-Role-B", "arn:aws:iam::333333333333:role/Cross-Account-Role-C" ] } } } ] }
中的配置 账户 B:222222222222 and 账号 C:333333333333
在
Account B:222222222222和Account C:333333333333中创建新角色并附加以下策略,允许主体代入在Account A:111111111111中创建的共享角色。{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111111111111:role/keyspaces_access" } }允许委托人代入共享角色是使用 AWS Security Token Service (AWS STS)
AssumeRole的 API 实现的。有关更多信息,请参阅 IAM 用户指南中的向您拥有 AWS 账户 的另一个 IAM 用户提供访问权限。在
Account B:222222222222和中Account C:333333333333,您可以创建利用 SIGV4 身份验证插件的应用程序,该插件允许应用程序代入共享角色以连接到位于中的Account A:111111111111Amazon Keyspaces 表。有关 SIGV4 身份验证插件的更多信息,请参阅创建用于通过编程方式访问 Amazon Keyspaces 的凭证。。有关如何配置应用程序以代入另一个 AWS 账户中的角色的更多信息,请参阅《AWS 软件开发工具包和工具参考指南》中的身份验证和访问。