关于跨租户私网安全暴露,最值得先弄清楚的是配置边界和排错顺序。当团队利用 PrivateLink(如 AWS PrivateLink 或云厂商类似服务)将内部服务跨租户共享时,往往只关注“能否连通”,却容易忽略“不该连通的对象是否被放行”。跨租户私网安全暴露的核心矛盾在于:私网连接消除了公网暴露,却同时将信任边界从单个 VPC 扩展到了多个租户。一旦端点策略、资源策略或安全组配置出现缺陷,攻击者无需突破公网防火墙,就能从内部进行横向移动。本文从安全加固出发,拆解 PrivateLink 跨租户暴露的关键风险面与控制措施。
PrivateLink 跨租户暴露机制与风险模型
故障定位思路
PrivateLink 通过创建接口 VPC 端点(Interface Endpoint)或网关负载均衡端点,将服务提供方(Provider)的 NLB/Nginx 等实例暴露给消费方(Consumer)的 VPC。跨租户场景下,消费方通常由不同 AWS 账号或组织外的租户构成。安全风险模型基于三个维度:
- 端点策略缺失或过于宽松:服务提供方未对 VPC 端点服务(Endpoint Service)设置允许的消费方 ARN,导致任意账号都能请求建立连接。
- 资源策略未绑定最小权限:后端服务(如 ALB、API Gateway)的安全组或网络 ACL 放行了整个 VPC CIDR,而非仅放行端点弹性网卡。
- 消费方侧端点安全组配置不当:消费方将端点安全组规则设置为 /0,使端点成为 VPC 内任何资源的跳板。
风险模型的关键在于“信任传递”被过度扩展:提供方信任了端点服务列表里的所有消费方,而消费方又信任了端点背后的全部端口和服务。加固的目标是打破这种隐式信任链。
补充参考:此处可内链到“跨租户私网安全暴露故障排查实例”。
想继续深入:此处可内链到“跨租户私网安全暴露优化清单”文章。
端点策略配置漏洞与加固
故障定位思路
端点服务(Endpoint Service)的 Allow principals 列表是跨租户安全的第一道闸门。常见漏洞包括:
- 使用通配符
*允许所有 ARN,使任何账号都能创建连接。 - 只校验账号 ID 而未校验 IAM 角色,导致消费方内任意有权创建端点的 IAM 用户均可发起连接。
加固实践: 将 Allow principals 精确到具体 IAM 角色,而非账号 ID。例如:
arn:aws:iam::12:role/CrossAccountConsumerRole
同时配合 aws:SourceArn 条件键限制请求来源 VPC,避免角色被滥用。场景示例:服务提供方要求消费方必须从指定 VPC(vpc-abc123)发起连接,否则拒绝。策略片段:
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:ec2:us-east-1:12:vpc/vpc-abc123"
}
}
此外,定期审计端点服务的 Pending acceptance 列表,拒绝任何非预期的连接请求,避免人为误批准。
基于资源策略的访问控制加固——跨租户私网安全暴露
先看关键判断
即使端点策略正确,后端资源(如 ALB 的安全组或 NLB 的 target group)若放行过大 CIDR,同样会造成暴露。跨租户场景下,后端资源应仅信任来自端点弹性网卡(ENI)的流量,而不是整个 VPC CIDR。
具体做法:
- 在提供方 VPC 中,为每个端点服务创建独立的 VPC 端点安全组,仅放行特定 TCP 端口和协议。
- 后端资源(如 EC2 实例)的安全组仅允许该端点安全组的流量进入。
- 若后端使用 NLB,NLB 本身不提供安全组,则在目标实例的安全组中限制源 IP 为 VPC 端点子网前缀列表。
资源策略的另一个维度是消费方侧:消费方在创建 VPC 端点时,可附加端点策略(Endpoint Policy)来进一步限制哪些主体可以通过该端点访问服务。例如,只允许特定 IAM 用户使用端点,或只允许对特定 S3 桶发起请求。对于跨租户暴露,消费方端点策略应设置为拒绝所有未授权的服务操作,即使提供方策略允许。
延伸阅读:此处可内链到“跨租户私网安全暴露配置案例”相关文章。
相关阅读:此处可内链到“跨租户私网安全暴露常见问题”专题。
VPC 端点策略与安全组双重校验——跨租户私网安全暴露
配置前的检查
很多团队只配置了端点策略,却忽略了端点所在子网的安全组。VPC 端点本身会创建一个弹性网络接口(ENI),其安全组规则决定了哪些 VPC 内资源可以访问端点。若安全组规则过于宽泛(如允许 /0 入站),则 VPC 内任何实例(包括被攻陷的跳板机)都能通过端点访问跨租户服务,彻底绕开端点策略的意图。
双重校验机制:
- 消费方 VPC 中,端点安全组入站规则仅允许来自特定应用子网的流量,拒绝管理子网或公网子网的访问。
- 出站规则同样限制目的地仅指向提供方服务的 DNS 名称,防止端点被用作 NAT 网关向外转发。
推荐做法是创建 端点专属安全组,并绑定到 VPC 端点。安全组规则使用前缀列表(Prefix List)来简化管理,但前缀列表的成员必须通过定期审计确保未被篡改。同时,启用 VPC Flow Logs 并筛选通过端点 ENI 的流量,验证实际连接来源是否匹配预期。
日志审计与异常检测
验证与回滚
跨租户暴露的异常行为往往隐藏在大量正常流量中。传统网络监控只能看到 IP 和端口,无法关联租户 ID。AWS 提供了 VPC Endpoint Service Permissions 和 CloudTrail 日志来追踪连接事件。关键审计项:
- 记录
CreateVpcEndpoint和AcceptVpcEndpointConnectionAPI 调用,确认发起方账号和 IAM 角色。 - 使用 VPC Endpoint Service Event 监控连接状态变化(Pending/ Available/ Rejected),设置异常告警(如批量拒绝连接可能表示攻击者在试探可用服务)。
- 通过 Network Firewall 或第三方的 IDS/IPS 镜像端点 ENI 的流量,检测经过端点策略加密后的真实应用层数据是否存在 SQL 注入或 RCE 载荷。
日志分析应聚焦于“不匹配模式”的流量:源 IP 属于消费方 VPC 中不应访问端点的子网,或者请求频率远高于基线。建议将日志导入 SIEM 并建立跨租户暴露专用的安全仪表盘,区分正常业务流量与侦察行为。
自动化合规检查与响应
验证与回滚
安全加固的最后一环是持续合规。跨租户配置易被运维人员临时放宽导致漂移。利用基础设施即代码(IaC)和策略引擎进行自动化扫描:
- 使用 AWS Config 托管规则(如 ec2-vpc-endpoint-connection-acceptance-required)检测端点服务是否要求手动接受连接。
- 定制 Lambda 函数定期检查端点服务的
AllowedPrincipals中是否有通配符或外部 AWS 组织外的账号。 - 将端点安全组规则纳入 SCP(服务控制策略)中,禁止创建入站规则为 /0 的端点安全组。
异常响应方面,一旦检测到非预期消费方连接或端点策略变更,应自动触发:
- 从端点服务的 Allow list 中移除该消费方。
- 调用 Security Hub 将事件升级为 CRITICAL 并通知安全团队。
- 如果提供方后端服务支持蓝绿部署,立即切换流量到无跨租户暴露的备用环境,隔离风险。
自动化并非一次性工程,需要结合变更管理流程,确保每一次 PrivateLink 配置变动都经过合规检查,才能避免跨租户安全暴露成为云上内网的薄弱环节。真正做好跨租户私网安全暴露,靠的不是参数堆砌,而是持续验证。
延伸阅读
