

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

# 不使用共享 VPC 配置 Amazon Keyspaces 的跨账户访问
<a name="access.cross-account.noVPC.setup"></a>

如果 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 倍。

![示意图：显示了同一组织在同一 Amazon Web Services 区域 拥有的三个没有共享 VPC 的不同账户。](http://docs.amazonaws.cn/keyspaces/latest/devguide/images/keyspaces_cross-account_noVPC_BJS.png)


`Account A:111111111111`是包含`Account C:333333333333`需要访问的资源（Amazon Keyspaces 表）的账户，*信任*账户`Account A:111111111111`也是如此。`Account B:222222222222``Account B:222222222222``Account C:333333333333`而拥有需要访问资源（Amazon Keyspaces 表）的委托人的账户 `Account A:111111111111``Account B:222222222222`，`Account C:333333333333`也是*可信*账户。信任账户通过共享 IAM 角色向受信账户授予权限。以下程序概述了`Account A:111111111111` 中所需的配置步骤。

**的配置 `账户 A:111111111111`**

1. 在中创建 Amazon Keyspaces 密钥空间和表。`Account A:111111111111`

1. 在中创建一个 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*"
            ]
         }
      ]
   }
   ```

1. 在中为 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 用户指南[中的](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)Cross-account 策略。

1. 在中配置 VPC 终端节点，`Account A:111111111111`并向该终端节点授予权限，允许角色来自该终端节点`Account B:222222222222`并`Account C:333333333333`代入`Account A`使用 VPC 终端节点的角色。这些权限对它们所连接的 VPC 终端节点有效。有关 VPC 端点策略的更多信息，请参阅[控制 Amazon Keyspaces 对接口 VPC 端点的访问](vpc-endpoints.md#interface-vpc-endpoints-policies)。

   ```
   {{
     "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`**

1. 在`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"
           }
   }
   ```

   允许委托人代入共享角色是使用 Amazon Security Token Service (Amazon STS) `AssumeRole` 的 API 实现的。有关更多信息，请参阅 IAM 用户指南中的向您拥有 Amazon Web Services 账户 [的另一个 IAM 用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)提供访问权限。

1. 在`Account B:222222222222`和中`Account C:333333333333`，您可以创建利用 SIGV4 身份验证插件的应用程序，该插件允许应用程序代入共享角色以连接到位于中的 `Account A:111111111111` Amazon Keyspaces 表。有关 SIGV4 身份验证插件的更多信息，请参阅[创建用于通过编程方式访问 Amazon Keyspaces 的凭证。](programmatic.credentials.md)。有关如何配置应用程序以代入另一个 Amazon 账户中的角色的更多信息，请参阅《*Amazon 软件开发工具包和工具参考指南*》[中的](https://docs.amazonaws.cn/sdkref/latest/guide/access.html)身份验证和访问。