

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

# 将 Amazon MSK APIs 与接口 VPC 终端节点配合使用
<a name="privatelink-vpc-endpoints"></a>

您可以使用由 AWS PrivateLink提供支持的接口 VPC 终端节点来防止您的 Amazon VPC 和 Amazon MSK 之间的流量 APIs 离开亚马逊网络。接口 VPC 终端节点不需要互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)是一种使用弹性网络接口实现 AWS 服务之间私有通信的 AWS 技术，在 Amazon VPC IPs 中使用私有网络。有关更多信息，请参阅[亚马逊 Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 和[接口 VPC 终端节点 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)。

您的应用程序可以使用与 Amazon MSK Provisioned 和 MSK Connect 连接 APIs 。 AWS PrivateLink首先，为 Amazon MSK API 创建一个接口 VPC 端点，以便来自和前往 Amazon VPC 资源的流量开始流经接口 VPC 端点。启用 FIPS 的接口 VPC 端点适用于美国区域。有关更多信息，请参阅[创建接口端点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)。

使用此功能，Apache Kafka 客户端可动态获取连接字符串以连接预置 MSK 或 MSK Connect 资源，而无需遍历互联网来检索连接字符串。

创建接口 VPC 端点时，请选择以下服务名称端点之一：

**对于预置 MSK：**
+ 新连接不再支持以下服务名称终端节点：
  + com.amazonaws.region.kafka
  + com.amazonaws.region.kafka-fips（启用 FIPS）
+ 支持两者的双栈端点服务 IPv4 以及 IPv6 流量：
  + wws.api.region.kafka-api
  + aws.api.region。 kafka-api-fips （支持 FIPS）

要设置双堆栈终端节点，必须遵循[双栈和 FIP](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html) S 端点指南。

其中区域指您的区域名称。选择此服务名称可与 MSK 预配置 APIs兼容。有关更多信息，请参阅 *https://docs.aws.amazon.com/msk/1.0/* apireference/ 中的[操作](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html)。

**对于 MSK Connect：**
+ com.amazonaws.region.kafkaconnect

其中区域指您的区域名称。选择此服务名称即可与 MSK Connec APIs t 兼容。有关更多信息，请参阅《Amazon MSK Connect API 参考》**中的[操作](https://docs.aws.amazon.com/MSKC/latest/mskc/API_Operations.html)。

有关更多信息，包括创建接口 VPC 终端节点的 step-by-step说明，请参阅*AWS PrivateLink 指南*中的[创建接口终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)。

## 控制对亚马逊 MSK 预配置或 MSK Connect 的 VPC 终端节点的访问权限 APIs
<a name="vpc-endpoints-control-access"></a>

借助 VPC 端点策略，您可以控制访问，方式是：将策略附加到 VPC 端点或使用附加到 IAM 用户、组或角色的策略中的额外字段，从而限制只能通过特定 VPC 端点进行访问。使用相应的示例策略，定义对预置 MSK 或 MSK Connect 服务的访问权限。

如果您在创建端点时未附加策略，Amazon VPC 会为您附加一个默认策略，该策略允许对服务的完全访问。终端节点策略不会覆盖或替换 IAM 基于身份的策略或服务特定的策略。这是一个单独的策略，用于控制从端点中对指定服务进行的访问。

有关更多信息，请参阅《AWS PrivateLink 指南》**中的[使用 VPC 端点控制对服务的访问](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。

------
#### [ MSK Provisioned — VPC policy example ]

**只读访问权限**  
此示例策略可以附加到某个 VPC 端点。（有关更多信息，请参阅控制对 Amazon VPC 资源的访问）。它限制仅能通过其附加的 VPC 端点列出或描述操作。

```
{
  "Statement": [
    {
      "Sid": "MSKReadOnly",
      "Principal": "*",
      "Action": [
        "kafka:List*",
        "kafka:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

**预置 MSK — VPC 端点策略示例**  
限制对特定 MSK 集群的访问

此示例策略可以附加到某个 VPC 端点。它限制通过其附加的 VPC 端点访问特定的 Kafka 集群。

```
{
  "Statement": [
    {
      "Sid": "AccessToSpecificCluster",
      "Principal": "*",
      "Action": "kafka:*",
      "Effect": "Allow",
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster"
    }
  ]
}
```

------
#### [ MSK Connect — VPC endpoint policy example ]

**列出连接器并创建新的连接器**  
下面是用于 MSK Connect 的端点策略示例。此策略允许指定角色列出连接器，并创建新的连接器。

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "MSKConnectPermissions",
            "Effect": "Allow",
            "Action": [
                "kafkaconnect:ListConnectors",
                "kafkaconnect:CreateConnector"
            ],
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/MyMSKConnectExecutionRole"
                ]
            }
        }
    ]
}
```

**MSK Connect — VPC 端点策略示例**  
仅允许指定 VPC 中特定 IP 地址的请求

以下示例显示的策略仅允许来自指定 VPC 中指定 IP 地址的请求成功。来自其它 IP 地址的请求将失败。

```
{
    "Statement": [
        {
            "Action": "kafkaconnect:*",
            "Effect": "Allow",
            "Principal": "*",
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:VpcSourceIp": "192.0.2.123"
                },
        "StringEquals": {
                    "aws:SourceVpc": "vpc-555555555555"
                }
            }
        }
    ]
}
```

------