

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

# 单区域中的 Amazon MSK 多 VPC 私有连接
<a name="aws-access-mult-vpc"></a>

适用于 Apache Managed Streaming Kafka（Amazon MSK）集群的多 VPC 私有连接（由 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)）提供支持，该功能使您能够更快地将托管在不同虚拟私有云 () 和账户中的 Kafka 客户端 (VPCs) 和 AWS 账户连接到亚马逊 MSK 集群。

多 VPC 私有连接是一种托管式解决方案，可简化多 VPC 和跨账户连接的网络基础设施。客户端可以通过连接到 Amazon MSK 集群， PrivateLink 同时将所有流量保持在 AWS 网络内。适用于亚马逊 MSK 集群的多 VPC 私有连接适用于所有可用 Amazon MSK 的 AWS 区域。

**Topics**
+ [什么是多 VPC 私有连接？](#mvpc-what-is)
+ [多 VPC 私有连接的优势](#mvpc-benefits)
+ [多 VPC 私有连接的要求和限制](#mvpc-requirements)
+ [开始使用多 VPC 私有连接](mvpc-getting-started.md)
+ [更新集群上的授权方案](mvpc-cross-account-update-authschemes.md)
+ [拒绝与 Amazon MSK 集群建立托管式 VPC 连接](mvpc-cross-account-reject-connection.md)
+ [删除与 Amazon MSK 集群的托管式 VPC 连接](mvpc-cross-account-delete-connection.md)
+ [多 VPC 私有连接的权限](mvpc-cross-account-permissions.md)

## 什么是多 VPC 私有连接？
<a name="mvpc-what-is"></a>

Amazon MSK 的多 VPC 私有连接是一种连接选项，允许您将托管在不同虚拟私有云 (VPCs) 和 AWS 账户中的 Apache Kafka 客户端连接到 MSK 集群。

Amazon MSK 通过[集群策略](mvpc-cluster-owner-action-policy.md)简化跨账户存取。这些策略允许集群所有者向其他 AWS 账户授予与 MSK 集群建立私有连接的权限。

## 多 VPC 私有连接的优势
<a name="mvpc-benefits"></a>

与[其他连接解决方案](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access.html)相比，多 VPC 私有连接具有以下几个优势：
+ 它可以自动执行 AWS PrivateLink 连接解决方案的运营管理。
+ 它允许 IPs 在连接之间进行重叠 VPCs，从而无需维护与其他 VPC 连接解决方案相关的非重叠 IPs、复杂的对等互连和路由表。

您可以使用适用于 MSK 集群的集群策略来定义哪些 AWS 账户有权设置与 MSK 集群的跨账户私有连接。跨账户管理员可以将权限委派给相应的角色或用户。当与 IAM 客户端身份验证一起使用时，您也可以使用集群策略为连接的客户端精细定义 Kafka 数据面板的权限。

## 多 VPC 私有连接的要求和限制
<a name="mvpc-requirements"></a>

请注意运行多 VPC 私有连接的以下 MSK 集群要求：
+ 只有 Apache Kafka 2.7.1 或更高版本支持多 VPC 私有连接。请确保与 MSK 集群搭配使用的任何客户端都运行与集群兼容的 Apache Kafka 版本。
+ 多 VPC 私有连接支持身份验证类型 IAM、TLS 和 SASL/SCRAM。未经身份验证的集群无法使用多 VPC 私有连接。
+ 如果您使用 SASL/SCRAM 或 mTLS 访问控制方法，则必须为集群设置 Apache Kafka ACLs 。首先，为您的集群设置 Apache Ka ACLs fka。然后，更新集群的配置，将集群的属性 `allow.everyone.if.no.acl.found` 设置为 false。有关如何更新集群配置的信息，请参阅[代理配置操作](msk-configuration-operations.md)。如果您使用的是 IAM 访问控制并想要应用授权策略或更新授权策略，请参阅 [IAM 访问控制](iam-access-control.md)。有关 Apache Kafka 的信息 ACLs，请参阅。[阿帕奇 Kafka ACLs](msk-acls.md)
+ 多 VPC 私有连接不支持 t3.small 实例类型。
+ 不支持跨 AWS 区域的多 VPC 私有连接，仅支持同一区域内的 AWS 账户。
+ 要设置多 VPC 私有连接，则客户端子网数量必须与集群子网数量相同。您还必须确保客户端子网和集群子网的[可用区 IDs](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)相同。
+ Amazon MSK 不支持与 Zookeeper 节点的多 VPC 私有连接。

# 开始使用多 VPC 私有连接
<a name="mvpc-getting-started"></a>

**Topics**
+ [步骤 1：在账户 A 的 MSK 集群上，为集群上的 IAM 身份验证方案开启多 VPC 连接](mvpc-cluster-owner-action-turn-on.md)
+ [步骤 2：将集群策略附加到 MSK 集群](mvpc-cluster-owner-action-policy.md)
+ [步骤 3：用于配置客户端托管的 VPC 连接的跨账户用户操作](mvpc-cross-account-user-action.md)

本教程使用一个常见的用例作为示例，说明如何使用多 VPC 连接，将 Apache Kafka 客户端从集群的 VPC 内部 AWS但外部私下连接到 MSK 集群。此过程要求跨账户用户为每个客户端创建 MSK 托管式 VPC 连接和配置，包括所需的客户端权限。该过程还要求 MSK 集群所有者在 MSK 集群上启用 PrivateLink 连接，并选择身份验证方案来控制对集群的访问。

在本教程的不同部分中，我们选择适用于此示例的选项。这并不意味着它们是可用于设置 MSK 集群或客户端实例的唯一选项。

此用例的网络配置如下：
+ 跨账户用户（Kafka 客户端）和 MSK 集群位于同一个 AWS 网络/区域中，但在不同的账户中：
  + 账户 A 中的 MSK 集群
  + 账户 B 中的 Kafka 客户端
+ 跨账户用户将使用 IAM 身份验证方案私密连接到 MSK 集群。

本教程假设有一个使用 Apache Kafka 版本 2.7.1 或更高版本创建的预置 MSK 集群。在开始配置过程之前，MSK 集群必须处于 ACTIVE 状态。为避免潜在的数据丢失或停机，将使用多 VPC 私有连接来连接到集群的客户端应使用与集群兼容的 Apache Kafka 版本。

下图说明了连接到不同 AWS 账户中的客户端的 Amazon MSK 多 VPC 连接架构。

![\[单区域中的多 VPC 网络图\]](http://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/images/mvpc-network.png)


# 步骤 1：在账户 A 的 MSK 集群上，为集群上的 IAM 身份验证方案开启多 VPC 连接
<a name="mvpc-cluster-owner-action-turn-on"></a>

MSK 集群所有者需要在 MSK 集群创建并处于 ACTIVE 状态后在该集群上进行配置设置。

集群所有者需为将在集群上处于活动状态的任何身份验证方案，在处于 ACTIVE 状态的集群上开启多 VPC 私有连接。这可以使用 [UpdateSecurity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-security.html) 或 MSK 控制台来完成。IAM、SASL/SCRAM 和 TLS 身份验证方案支持多 VPC 私有连接。无法为未经身份验证的集群启用多 VPC 私有连接。

对于此用例，您需要将集群配置为使用 IAM 身份验证方案。

**注意**  
如果您要将 MSK 集群配置为使用 SASL/SCRAM 身份验证方案，那么 Apache Kafka ACLs 属性 “” `allow.everyone.if.no.acl.found=false` 是必需的。见 [Apache Kafka ACLs](https://docs.aws.amazon.com/msk/latest/developerguide/msk-acls.html)。

当您更新多 VPC 私有连接设置时，Amazon MSK 会启动代理节点滚动重启，以更新代理配置。完成此过程可能最多需要 30 分钟或更长时间。在更新连接时，您无法对集群进行其他更新。

**使用控制台为账户 A 中的集群上的选定身份验证方案开启多 VPC**

1. 打开集群所在账户[https://console.aws.amazon.com/msk/](https://docs.aws.amazon.com/msk/latest/developerguide/msk-acls.html)的 Amazon MSK 控制台。

1. 在导航窗格的 **MSK 集群**下，选择**集群**以显示账户中的集群列表。

1. 选择要为多 VPC 私有连接配置的集群。集群必须处于 ACTIVE 状态。

1. 选择集群**属性**选项卡，然后转到**网络设置**。

1. 选择**编辑**下拉菜单，然后选择**开启多 VPC 连接**。

1. 选择要为此集群开启的一种或多种身份验证类型。对于此用例，请选择**基于 IAM 角色的身份验证**。

1. 选择**保存更改**。

**Example -在 UpdateConnectivity 集群上开启多 VPC 私有连接身份验证方案的 API**  
作为 MSK 控制台的替代方案，您可以使用 [UpdateConnectivity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html) 开启多 VPC 私有连接，并在活动集群上配置身份验证方案。以下示例显示为集群开启了 IAM 身份验证方案。  

```
{
  "currentVersion": "K3T4TT2Z381HKD",
  "connectivityInfo": {
    "vpcConnectivity": {
      "clientAuthentication": {
        "sasl": {
          "iam": {
            "enabled": TRUE
            }
        }
      }
    }
  }
}
```

Amazon MSK 可创建私有连接所需的网络基础设施。Amazon MSK 还可为需要私有连接的每种身份验证类型创建一组新的引导代理端点。请注意，明文身份验证方案不支持多 VPC 私有连接。

# 步骤 2：将集群策略附加到 MSK 集群
<a name="mvpc-cluster-owner-action-policy"></a>

集群所有者可以将集群策略（也称为[基于资源的策略](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies)）附加到 MSK 集群，您将在其中开启多 VPC 私有连接。集群策略会授予客户端从其他账户访问集群的权限。在编辑集群策略之前，您需要应有权访问 MSK 集群的账户的账户 ID。请参阅 [How Amazon MSK works with IAM](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html)。

集群所有者必须将集群策略附加到 MSK 集群，该策略将授权账户 B 中的跨账户用户获取集群的引导代理，并授权对账户 A 中的 MSK 集群执行以下操作：
+ CreateVpcConnection
+ GetBootstrapBrokers
+ DescribeCluster
+ DescribeClusterV2

**Example**  
作为参考，以下是基本集群策略的 JSON 示例，类似于 MSK 控制台 IAM policy 编辑器中显示的默认策略。以下策略授予集群、主题和组级的访问权限。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": [
        "kafka:CreateVpcConnection",
        "kafka:GetBootstrapBrokers",
        "kafka:DescribeCluster",
        "kafka:DescribeClusterV2",
        "kafka-cluster:*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:111122223333:cluster/testing/de8982fa-8222-4e87-8b20-9bf3cdfa1521-2"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": "kafka-cluster:*",
      "Resource": "arn:aws:kafka:us-east-1:111122223333:topic/testing/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "123456789012"
      },
      "Action": "kafka-cluster:*",
      "Resource": "arn:aws:kafka:us-east-1:111122223333:group/testing/*"
    }
  ]
}
```

**将集群策略附加到 MSK 集群**

1. 在 Amazon MSK 控制台的 **MSK 集群**下，选择**集群**。

1. 向下滚动到**安全设置**，然后选择**编辑集群策略**。

1. 在控制台的**编辑集群策略**屏幕上，选择**多 VPC 连接的基本策略**。

1. 在**账户 ID** 字段中，输入应有权访问此集群的每个账户的账户 ID。在您输入 ID 时，它会自动复制到显示的策略 JSON 语法中。在我们的示例集群策略中，账户 ID 为 *111122223333*。

1. 选择**保存更改**。

有关集群策略的信息 APIs，请参阅 [Amazon MSK 基于资源的](https://docs.aws.amazon.com/msk/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-resource-based-policies)策略。

# 步骤 3：用于配置客户端托管的 VPC 连接的跨账户用户操作
<a name="mvpc-cross-account-user-action"></a>

要在与 MSK 集群不同的账户中的客户端之间设置多 VPC 私有连接，跨账户用户需要为该客户端创建托管式 VPC 连接。重复此程序，即可将多个客户端连接到 MSK 集群。在本用例中，您只需要配置一个客户端。

客户端可以使用支持的身份验证方案 IAM、SASL/SCRAM 或 TLS。每个托管式 VPC 连接只能与一个身份验证方案关联。必须在客户端将要连接的 MSK 集群上配置客户端身份验证方案。

 对于此用例，请配置客户端身份验证方案，以便账户 B 中的客户端使用 IAM 身份验证方案。

**先决条件**

此过程需要以下项目：
+ 先前创建的集群策略，可向账户 B 中的客户端授予对账户 A 中的 MSK 集群执行操作的权限。
+ 附加到账户 B 中客户端的身份策略，可授予 `kafka:CreateVpcConnection`、`ec2:CreateTags`、`ec2:CreateVPCEndpoint` 和 `ec2:DescribeVpcAttribute` 操作的权限。

**Example**  
以下是基本客户端身份策略的 JSON 示例，供您参考。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kafka:CreateVpcConnection",
        "ec2:CreateTags",
        "ec2:CreateVPCEndpoint",
        "ec2:DescribeVpcAttribute"
      ],
      "Resource": "*"
    }
  ]
}
```

**为账户 B 中的客户端创建托管式 VPC 连接**

1. 从集群管理员处获取您希望账户 B 中的客户端连接到的账户 A 中 MSK 集群的**集群 ARN**。记下集群 ARN 以供将来使用。

1. 在客户端账户 B 的 MSK 控制台中，选择**托管式 VPC 连接**，然后选择**创建连接**。

1. 在**连接设置**窗格中，将集群 ARN 粘贴到集群 ARN 文本字段中，然后选择**验证**。

1. 在账户 B 中选择客户端的**身份验证类型**。对于此用例，请在创建客户端 VPC 连接时选择 IAM。

1. 为客户端选择 **VPC**。

1. 至少选择两个**可用区和**关联的**子网**。您可以 IDs 从 AWS 管理控制台集群详细信息中获取可用区，也可以使用 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API 或 desc [ribe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI 命令获取。您 IDs 为客户端子网指定的区域必须与集群子网的区域相匹配。如果缺少子网的值，请先创建一个与 MSK 集群具有相同区域 ID 的子网。

1. 为此 VPC 连接选择**安全组**。您可以使用默认安全组。有关配置安全组的更多信息，请参阅 [Control traffic to resources using security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

1. 选择**创建连接**。

1. 要从跨账户用户的 MSK 控制台（**集群**详细信息 > **托管式 VPC 连接**）获取新引导代理字符串的列表，请参阅**集群连接字符串**下显示的引导代理字符串。在客户账户 B 中，可以通过调用 [GetBootstrapBrokers](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html#GetBootstrapBrokers)API 或在控制台集群详细信息中查看引导代理列表来查看引导代理列表。

1. 按以下步骤更新与 VPC 连接关联的安全组：

   1. 为 PrivateLink VPC 设置**入站规则**，以允许来自账户 B 网络的 IP 范围的所有流量。

   1. [可选] 设置与 MSK 集群的**出站规则**连接。在 VPC 控制台中依次选择**安全组**、**编辑出站规则**，然后为端口范围 14001-14100 添加**自定义 TCP 流量**的规则。多 VPC 网络负载均衡器正在监听 14001-14100 端口范围。请参阅[网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html)。

1. 将账户 B 中的客户端配置为使用用于多 VPC 私有连接的新引导代理连接到账户 A 中的 MSK 集群。请参阅 [Produce and consume data](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html)。

授权完成后，Amazon MSK 会为每个指定的 VPC 和身份验证方案创建托管式 VPC 连接。所选安全组与每个连接相关联。此托管式 VPC 连接由 Amazon MSK 配置为私密地连接到代理。您可以使用一组新的引导代理私密地连接到 Amazon MSK 集群。

# 更新集群上的授权方案
<a name="mvpc-cross-account-update-authschemes"></a>

多 VPC 私有连接支持多种授权方案：一个或多个身份验证方案的SASL/SCRAM, IAM, and TLS. The cluster owner can turn on/off私有连接。集群必须处于 ACTIVE 状态才能执行此操作。

**使用 Amazon MSK 控制台开启身份验证方案**

1. 在 [AWS 管理控制台](https://console.aws.amazon.com/msk) 中为要编辑的集群打开 Amazon MSK 控制台。

1. 在导航窗格的 **MSK 集群**下，选择**集群**以显示账户中的集群列表。

1. 选择要编辑的集群。集群必须处于 ACTIVE 状态。

1. 选择集群**属性**选项卡，然后转到**网络设置**。

1. 选择**编辑**下拉菜单，然后选择**开启多 VPC 连接**，以开启新的身份验证方案。

1. 选择要为此集群开启的一种或多种身份验证类型。

1. 选择**开启选择**。

当您开启新的身份验证方案时，您还应该为新的身份验证方案创建新的托管式 VPC 连接，并更新客户端，以使用特定于新身份验证方案的引导代理。

**使用 Amazon MSK 控制台关闭身份验证方案**
**注意**  
当您为身份验证方案关闭多 VPC 私有连接时，所有与连接相关的基础设施，包括托管式 VPC 连接，都将被删除。

当您为身份验证方案关闭多 VPC 私有连接时，客户端的现有 VPC 连接将变为 INACTIVE 状态，集群端的 Privatelink 基础设施（包括托管式 VPC 连接）将被删除。跨账户用户只能删除处于非活动状态的 VPC 连接。如果在集群上再次开启私有连接，则跨账户用户需要创建与集群的新连接。

1. 在 [AWS 管理控制台](https://console.aws.amazon.com/msk) 打开 Amazon MSK 控制台。

1. 在导航窗格的 **MSK 集群**下，选择**集群**以显示账户中的集群列表。

1. 选择要编辑的集群。集群必须处于 ACTIVE 状态。

1. 选择集群**属性**选项卡，然后转到**网络设置**。

1. 选择**编辑**下拉菜单，然后选择**关闭多 VPC 连接**，以关闭身份验证方案。

1. 选择要为此集群关闭的一种或多种身份验证类型。

1. 选择**关闭选择**。

**Example 使用 AP on/off I 转变身份验证方案**  
作为 MSK 控制台的替代方案，您可以使用 [UpdateConnectivity API](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html) 开启多 VPC 私有连接，并在活动集群上配置身份验证方案。以下示例显示了为 SASL/SCRAM 集群开启的 IAM 身份验证方案。  
当您开启新的身份验证方案时，您还应该为新的身份验证方案创建新的托管式 VPC 连接，并更新客户端，以使用特定于新身份验证方案的引导代理。  
当您为身份验证方案关闭多 VPC 私有连接时，客户端的现有 VPC 连接将变为 INACTIVE 状态，集群端的 Privatelink 基础设施（包括托管式 VPC 连接）将被删除。跨账户用户只能删除处于非活动状态的 VPC 连接。如果在集群上再次开启私有连接，则跨账户用户需要创建与集群的新连接。  

```
Request:
{
  "currentVersion": "string",
  "connnectivityInfo": {
    "publicAccess": {
      "type": "string"
    },
    "vpcConnectivity": {
      "clientAuthentication": {
        "sasl": {
          "scram": {
            "enabled": TRUE
          },
          "iam": {
            "enabled": TRUE
          }        
        },
        "tls": {
          "enabled": FALSE
        }
      }
    }
  }
}

Response:
{
  "clusterArn": "string",
  "clusterOperationArn": "string"
}
```

# 拒绝与 Amazon MSK 集群建立托管式 VPC 连接
<a name="mvpc-cross-account-reject-connection"></a>

通过集群管理员账户的 Amazon MSK 控制台，您可以拒绝客户端 VPC 连接。客户端 VPC 连接必须处于可用状态才能被拒绝。您可能需要拒绝来自不再有权连接到集群的客户端的托管式 VPC 连接。要防止新的托管式 VPC 连接连接到客户端，请在集群策略中拒绝对客户端的访问。在连接所有者删除被拒绝的连接之前，该连接仍会产生费用。请参阅 [Delete a managed VPC connection to an Amazon MSK cluster](https://docs.aws.amazon.com/msk/latest/developerguide/mvpc-cross-account-delete-connection.html)。

**使用 MSK 控制台拒绝客户端 VPC 连接**

1. 在 [AWS 管理控制台](https://console.aws.amazon.com/msk) 打开 Amazon MSK 控制台。

1. 在导航窗格中，选择**集群**并滚动到**网络设置 > 客户端 VPC 连接**列表。

1. 选择要拒绝的连接，然后选择**拒绝客户端 VPC 连接**。

1. 确认要拒绝所选的客户端 VPC 连接。

要使用 API 拒绝托管式 VPC 连接，请使用 `RejectClientVpcConnection` API。

# 删除与 Amazon MSK 集群的托管式 VPC 连接
<a name="mvpc-cross-account-delete-connection"></a>

跨账户用户可以从客户端账户控制台中为 MSK 集群删除托管式 VPC 连接。集群所有者用户不拥有托管式 VPC 连接，因此无法从集群管理员账户中删除该连接。VPC 连接一经删除，就不会再产生费用。

**使用控制台删除托管式 VPC 连接**

1. 从客户端账户中，在 [AWS 管理控制台](https://console.aws.amazon.com/msk) 打开 Amazon MSK 控制台。

1. 在导航窗格中选择**托管式 VPC 连接**。

1. 从连接列表中选择要删除的连接。

1. 确认要删除 VPC 连接。

要使用 API 删除托管式 VPC 连接，请使用 `DeleteVpcConnection` API。

# 多 VPC 私有连接的权限
<a name="mvpc-cross-account-permissions"></a>

本节总结了使用多 VPC 私有连接功能的客户端和集群所需的权限。多 VPC 私有连接要求客户端管理员在将与 MSK 集群建立托管式 VPC 连接的每个客户端上创建权限。它还要求 MSK 集群管理员在 MSK 集群上启用 PrivateLink 连接，并选择身份验证方案来控制对集群的访问。

**集群身份验证类型和主题访问权限**  
为针对您的 MSK 集群启用的身份验证方案开启多 VPC 私有连接功能。请参阅[多 VPC 私有连接的要求和限制](aws-access-mult-vpc.md#mvpc-requirements)。如果您要将 MSK 集群配置为使用 SASL/SCRAM 身份验证方案，那么 Apache Kafka ACLs 属性是必需的。`allow.everyone.if.no.acl.found=false`为集群设置 [阿帕奇 Kafka ACLs](msk-acls.md) 后，请更新集群的配置，将该集群的属性 `allow.everyone.if.no.acl.found` 设置为 false。有关如何更新集群配置的信息，请参阅[代理配置操作](msk-configuration-operations.md)。

**跨账户集群策略权限**  
如果 Kafka 客户端所在的 AWS 账户与 MSK 集群不同，请将基于集群的策略附加到 MSK 集群，该策略授权客户端 root 用户进行跨账户连接。您可以使用 MSK 控制台中的 IAM 策略编辑器（集群**安全设置** > 编辑集群**策略）编辑多 VPC 集群策略**，也可以使用以下方法 APIs 来管理集群策略：

**PutClusterPolicy**  
将集群策略附加到集群。您可以使用此 API 来创建或更新指定的 MSK 集群策略。如果您要更新政策，则必须填写请求有效负载中的 currentVersion 字段。

**GetClusterPolicy**  
检索附加到集群的集群策略文档的 JSON 文本。

**DeleteClusterPolicy**  
删除集群策略。

以下是基本集群策略的 JSON 示例，类似于 MSK 控制台 IAM policy 编辑器中显示的策略。以下策略授予集群、主题和组级的访问权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "123456789012"
            ]
        },
        "Action": [
            "kafka-cluster:*",
            "kafka:CreateVpcConnection",
            "kafka:GetBootstrapBrokers",
            "kafka:DescribeCluster",
            "kafka:DescribeClusterV2"
        ],
        "Resource": [
            "arn:aws:kafka:us-east-1:123456789012:cluster/testing/de8982fa-8222-4e87-8b20-9bf3cdfa1521-2",
            "arn:aws:kafka:us-east-1:123456789012:topic/testing/*",
            "arn:aws:kafka:us-east-1:123456789012:group/testing/*"
        ]
    }]
}
```

------

**与 MSK 集群的多 VPC 私有连接的客户端权限**  
要在 Kafka 客户端和 MSK 集群之间设置多 VPC 私有连接，客户端需要一个附加身份策略，以授予对客户端执行 `kafka:CreateVpcConnection`、`ec2:CreateTags` 和 `ec2:CreateVPCEndpoint` 操作的权限。以下是基本客户端身份策略的 JSON 示例，供您参考。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kafka:CreateVpcConnection",
        "ec2:CreateTags",
        "ec2:CreateVPCEndpoint"
      ],
      "Resource": "*"
    }
  ]
}
```

------