3. AWS PrivateLink与VPC Endpoint核心概念

要真正用好 PrivateLink,先把几个术语的含义和它们之间的连接关系弄清楚,比死记配置步骤更重要。本节围绕 Endpoint(端点)、ENI(弹性网络接口)、服务名称(Service Name)、私有 DNS(Private DNS) 和 端点策略(Endpoint Policy) 五个核心概念展开,并说明它们在一次私网访问中各自扮演什么角色。

一、Endpoint:私网访问的入口对象

VPC Endpoint 是 VPC 内部的一个逻辑资源,它把“访问某个 AWS 服务或第三方服务”这件事,从走公网变成了走 AWS 内部网络。按使用方式分为两类:

  • 接口端点(Interface Endpoint):基于 PrivateLink,在子网中创建 ENI,并分配私有 IP。它支持绝大多数 AWS 服务以及自建/第三方服务(通过 VPC Endpoint Service 发布)。
  • 网关端点(Gateway Endpoint):只支持 S3 和 DynamoDB,通过路由表条目实现,不创建 ENI,也不支持私有 DNS。

本节讨论的重点是接口端点,因为只有它才涉及 ENI、私有 DNS 和端点策略的完整机制。

二、ENI:端点真正落地的网络实体

创建接口端点时,需要指定至少一个子网(可用区)。AWS 会在该子网中创建一个 ENI,并从中分配一个私有 IP 地址。这个 ENI 就是流量进入 PrivateLink 的“门”。

关键点在于:每个可用区一个 ENI。如果服务使用方希望跨 AZ 高可用,就应在多个子网(不同 AZ)中创建端点,从而得到多个 ENI。此时 DNS 解析会返回多个 IP,客户端可自行选择。ENI 上会绑定安全组,安全组规则决定“谁可以访问这个端点”,这是访问控制的第一道闸门。

安全组是作用在 ENI 上的,而不是作用在服务本身。因此排查“连不上端点”时,先看端点 ENI 的安全组入站规则是否放行了来源安全组或 CIDR。

三、服务名称:端点的“目标地址”

服务名称是 PrivateLink 中用于标识被访问服务的唯一字符串,格式通常为:

com.amazonaws.<region>.<service>
例如:com.amazonaws.cn-north-1.s3
      com.amazonaws.cn-north-1.execute-api

对于自建服务,服务名称由服务提供方在创建 Endpoint Service 时指定,形如 com.amazonaws.vpce.<region>.vpce-svc-xxxxxxxx。使用方在创建接口端点时,必须填写这个服务名称,AWS 才能把端点与目标服务关联起来。服务名称写错,端点会创建失败或指向错误的服务。

四、私有 DNS:让域名自动指向私网

接口端点支持 私有 DNS(Private DNS)。启用后,AWS 会在 VPC 内创建一条私有托管区记录,把服务的标准域名(如 s3.cn-north-1.amazonaws.com.cn)解析到端点 ENI 的私有 IP。这样应用代码无需修改,仍然使用原域名,流量却自动走私网。

需要注意两点:

  • 私有 DNS 要求 VPC 开启 enableDnsSupport 和 enableDnsHostnames,否则解析不生效。
  • 如果 VPC 内已有同名私有托管区,会产生冲突,需要先处理已有记录。

不启用私有 DNS 时,AWS 会为端点提供一个专属 DNS 名称(形如 vpce-xxxx.s3.cn-north-1.vpce.amazonaws.com.cn),应用必须改用这个域名,或者自行在 DNS 中做 CNAME 映射。

五、端点策略:控制“能访问什么”

端点策略是一段 JSON 格式的 IAM 策略,附加在接口端点上,用来限制通过该端点可以访问哪些资源、执行哪些操作。它不替代 IAM 用户策略,而是叠加生效:请求必须同时通过端点策略和 IAM 策略。

例如,只允许通过端点访问指定桶的读操作:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws-cn:s3:::my-bucket/*"
    }
  ]
}

默认策略是 Allow *,即不限制。生产环境建议按最小权限收紧,尤其是共享 VPC 或跨账号场景。

六、五个概念如何串成一条访问链

把上述概念连起来看:应用发起请求 → DNS 解析(私有 DNS 或专属域名)→ 得到端点 ENI 的私有 IP → 流量到达 ENI → 安全组放行 → 端点策略校验 → 通过 PrivateLink 转发到服务提供方 → 服务端返回结果。任何一个环节配置不当,都会表现为“访问不通”或“权限不足”。

PrivateLink 接口端点访问链与核心概念 使用方 VPC 应用 / 客户端 使用标准服务域名 私有 DNS 解析 域名 → ENI 私有 IP 子网(可用区 A) 端点 ENI 私有 IP + 安全组 端点 ENI 可用区 B(高可用) 端点策略 Endpoint Policy 限制可访问的资源与操作(JSON) 服务名称 com.amazonaws .cn-north-1 .s3 AWS PrivateLink 私网骨干转发 服务提供方 AWS 服务 或自建服务 (NLB / Endpoint Service) 创建时指定 请求需同时通过安全组、端点策略与 IAM 策略三层校验

七、容易混淆的几个点

概念作用位置常见误区
EndpointVPC 内的逻辑资源以为端点就是服务本身,其实它只是入口
ENI子网中的网络接口忽略多 AZ 需要多个 ENI,导致单点
服务名称创建端点时填写与私有 DNS 域名混为一谈
私有 DNSVPC 内域名解析以为启用后所有域名都变私网,其实只影响该服务域名
端点策略端点上的 IAM 策略以为它能替代 IAM 用户策略,实际是叠加

理解这五个概念的分工,后续配置接口端点时就能清楚每一步在做什么:选服务名称、选子网生成 ENI、决定是否启用私有 DNS、按需收紧端点策略。它们共同构成 PrivateLink 私网接入的基础。