跳到主要内容
版本:3.10.x

安全加固参考

基础设施安全是一个重要的话题,组织会仔细审查以保持对最新监管和法律要求的合规性。了解敏感信息存储的位置和方式,对于实施强大的安全措施并防范组织中未经授权的访问、数据泄露或恶意攻击至关重要。

API7 网关控制面(控制台、DP Manager 和数据库)及数据面网关实例的组件图,其中标出了信任边界及组件之间的加密通道

说明

图中显示的具体细节可能会因系统的部署方式而异。

本文档提供了一份参考,说明 API7 网关中敏感信息的位置、存储方式及其保护机制。有关用于加固生产部署的推荐配置步骤和可启用功能,请参阅企业功能分类下的配套指南安全加固。

部署模型(AWS)​

以下是在 AWS 中托管 API7 网关的部署模型。

客户管理的部署​

在客户管理的部署模型中,控制面(CP)和数据面(DP)均部署在你的 AWS 环境中。

客户管理的 AWS 部署:控制面(控制台、DP Manager、数据库)和数据面网关实例均运行在客户的 AWS 账户中

混合管理的部署​

在混合管理的部署模型中,控制面(CP)托管在 API7 的 AWS 环境中,而数据面(DP)托管在你的 AWS 环境中。

AWS 混合部署:控制面(控制台、DP Manager 和数据库)运行在 API7 的 AWS 账户中,数据面网关实例运行在客户的 AWS 账户中;数据面通过 mTLS 主动连接到控制面

数据存储​

  • 业务数据存储在数据库中。
  • 网关指标存储在 Prometheus 中。
  • 网关访问日志和错误日志默认本地存储在每个网关实例上,但如果需要,也可以转发到外部日志服务。

具体而言,数据库存储以下类型的业务数据:

  • 网关配置数据:定义网关行为的实体,例如服务、路由、消费者、SSL 证书以及其他核心资源。
  • 管理和运维数据:管理和治理相关的信息,包括控制面管理员、RBAC 策略、SSO 身份认证配置和审计日志。

控制面(CP)​

数据库连接凭证​

数据库连接凭证存储在控制面的配置文件中。它们也可以存储在环境变量中,并注入到配置文件里。

插件资源​

插件配置中的敏感字段由插件 schema 中的 encrypt_fields 标识。控制面会在将这些字段保存到数据库之前进行加密。获得授权的 Admin API 读取方仍可收到已解密的凭据值;静态加密不能取代资源读取权限控制。

用于加密敏感信息的密钥环因网关组而异,并且在保存到数据库之前也会被加密。

SSL 资源​

对于 SSL 证书,私钥会进行静态加密。后续读取会返回元数据和公共证书,但不会返回私钥。创建或更新响应可能回显刚提交的私钥,因此也要保护这些响应。

控制台连接​

控制台连接默认使用 TLS。如果未配置证书,API7 会使用自签名证书。

审计​

在将日志保存到数据库之前,审计日志中的敏感信息(如密码)会被脱敏处理。禁止对审计日志进行任何额外的修改。

用户凭证​

用户凭证(包括用户名和密码以及访问 Token)在保存到数据库之前,会进行加盐并使用 PBKDF2 加密。

加密算法​

在字段不可逆的情况下,哈希算法将采用加盐的 PBKDF2。

在字段可逆的情况下,加密算法将采用 AES。

数据面(DP)​

在客户端与 API7 网关之间,以及 API7 网关与上游服务之间,你可以配置 TLS 或 mTLS 来确保通信的安全。

连接到控制面的网关会从控制面配置中接收已启用的数据加密设置以及该网关组的密钥环。这些设置会覆盖网关本地的 apisix.data_encryption 值。不要根据默认配置文件中的 enable: false 配置块推断已连接网关禁用了加密,也不要尝试通过本地 Helm Values 替换其网关组密钥环。

DP 与 CP 之间的通信​

DP 和 CP 之间的通信可以使用 mTLS 保护,长轮询、心跳和 Prometheus 指标流量会通过此加密通道传输。CP 存储服务器和 CA 证书。DP(每个网关实例)存储客户端证书。