跳到主要内容

网络与安全

请将代理监听器、Admin 监听器、指标端点、etcd 和托管控制面连接视为彼此独立的信任区域。

网络边界

可以参考下表决定每个网络中允许访问哪些内容:

暴露面承载内容暴露范围
代理监听器面向调用方的 AI 流量,例如 /v1/chat/completions预期调用方或入口层
Admin 监听器Admin API、Admin 健康检查、OpenAPI 和 playgroundloopback、私有子网或仅管理员可访问网络
指标/状态监听器Prometheus 指标以及配置和模型状态可信监控网络
配置存储自托管部署中位于 etcd 的动态网关资源仅 AISIX 和配置管理系统
托管控制面连接与 AISIX 托管控制面之间经过 mTLS 认证的网关通信到控制面的出站 mTLS 路径

只向调用方暴露代理监听器。Admin、指标/状态、OpenAPI、playground 和 etcd 应保留在私有网络中。指标路径和 /status/* 路由不做认证,并通过专用指标/状态监听器提供。模型状态包含模型 ID 和显示名称,因此不要将此监听器暴露到公网。

当网络位置要求加密传输或双向认证传输时,请使用 TLS 或 mTLS。启用 etcd mTLS 时,启动配置必须指向网关进程可读取的 CA、客户端证书和客户端密钥文件。

选择特权端口策略

只有当 AISIX 必须直接绑定低于 1024 的端口时,才使用特权容器端口。否则,请让网关监听器使用非特权端口,并通过 Service、Ingress 或负载均衡器映射面向调用方的端口。

发布的 AISIX 容器镜像以非 root 用户(UID 10001)运行。网关二进制文件具有生效的 CAP_NET_BIND_SERVICE 文件能力,因此进程无需以 root 身份运行即可绑定低于 1024 的监听端口。Docker 和 containerd 的默认能力集合包含该能力,因此默认部署无需额外配置能力。

容器能力和 Kubernetes 暴露端口的方式是两个独立决定。请选择符合集群安全策略的模式。

保留镜像能力

Kubernetes 在容器 securityContext 中将该能力写作 NET_BIND_SERVICE。如果 Pod 丢弃所有能力,请为发布的 AISIX 镜像加回该能力,即使配置的监听器使用非特权端口:

securityContext:
capabilities:
drop: ["ALL"]
add: ["NET_BIND_SERVICE"]

Kubernetes Restricted Pod Security Standard 允许在丢弃所有能力后加回 NET_BIND_SERVICE,但 Pod 规范的其余部分仍必须符合该标准。由于二进制文件的文件能力已设置 effective bit,如果运行时阻止授予该能力,容器可能在启动时失败并报告 exec: Operation not permitted

公开 Service 端口

调用方使用端口 443 时,AISIX 无需绑定特权容器端口。Kubernetes Service 可将外部服务端口映射到网关容器配置的代理端口:

# Service spec 片段
ports:
- name: https
port: 443
targetPort: 3000

在此示例中,targetPort: 3000 是已配置的代理监听器,而不是固定运行时端口。Service 映射避免在容器内绑定特权端口,但不会移除上述发布镜像的能力要求。调用方使用 HTTPS 时,可在 AISIX 监听器上终止 TLS,也可在 Service 前的 Ingress 或负载均衡器上终止 TLS。

只有当网关必须直接绑定节点且集群策略明确允许时,才使用 hostNetworkhostPort。内置的 Baseline 和 Restricted Pod Security Standard 不允许主机网络和非零主机端口。这些模式还会引入节点端口冲突并降低网络隔离,不应将其作为 Service 的替代方案。

凭证边界

调用方 API Key 和上游服务提供方凭证有不同的存储和转发规则:

凭证或密钥AISIX 如何使用需要保护的内容
调用方 API Key以哈希形式存储;明文由调用应用持有应用密钥存储和 API Key 轮换流程
服务提供方密钥用于认证上游服务提供方请求配置存储、Admin 访问和备份
可观测性导出器凭证发送到配置的遥测目标,或为该目标解析动态资源存储和可观测性配置访问权限
托管证书包用于将托管网关认证到控制面运行时状态目录、信任根和托管引导流程

在自托管部署中,服务提供方凭证可能存放在配置存储中。OTLP HTTP 导出器请求头可以存储在动态配置里;对象存储、阿里云 SLS 和 Datadog 导出器使用网关本地解析的凭证引用。请将 etcd、备份和 Admin API 访问路径视为携带密钥的暴露面。在托管部署中,控制面处理服务提供方密钥,并将运行时配置投射到托管网关。

AISIX 使用调用方 API Key 认证调用方,并使用服务提供方凭证认证上游请求。透传默认会剥离敏感入站请求头。服务提供方密钥的剥离设置会影响转发内容,因此除非特定上游集成要求,否则应继续剥离 authorizationcookiex-api-key 等携带凭证的请求头。

安全基线

路由生产流量前,请确认以下控制项:

  • 代理监听器只能被预期调用方或入口访问。
  • 自托管部署中的 Admin 监听器是私有的。
  • 指标端点是私有的。
  • 自托管部署中的 etcd 是私有、持久化、有备份且受访问控制的。
  • 服务提供方密钥 Secret 和导出器凭证被视为敏感运维数据。
  • 当部署要求加密传输或双向认证传输时,已配置监听器 TLS、etcd mTLS 或托管 mTLS。
  • 托管网关身份通过基于证书的引导路径验证。
  • 备份和可观测性流水线不会暴露动态资源载荷或服务提供方凭证。

下一步

你已经了解在暴露 AISIX 前需要保护的网络和凭证边界。接下来阅读 TLS 与 mTLS 了解传输安全。