1. 网关概述:什么是API网关、网关在微服务中的位置、权限审计网关的核心职责
1.1 什么是API网关
API网关(API Gateway)是微服务架构中位于客户端与后端服务集群之间的统一入口层。它负责接收所有外部请求,进行协议转换、路由分发、安全校验、流量控制等预处理,再将请求转发至对应的内部微服务。从架构视角看,API网关是系统对外的“大门”,也是内部服务的第一道“安全屏障”。
核心定义:API网关是一个反向代理服务器,封装了内部系统的复杂拓扑,为客户端提供单一、稳定的访问端点,同时集中处理横切关注点(Cross-Cutting Concerns)。
1.2 网关在微服务中的位置
在微服务架构中,网关处于客户端层与微服务层之间,属于基础设施层的核心组件。其上下游关系如下表所示:
| 层级 | 组件 | 职责 |
|---|---|---|
| 客户端层 | Web浏览器、移动App、第三方系统 | 发起HTTP/gRPC请求 |
| 网关层 | API Gateway | 路由、认证、限流、审计、协议转换 |
| 服务层 | 用户服务、订单服务、支付服务等 | 处理业务逻辑 |
| 数据层 | MySQL、Redis、MQ | 数据持久化与缓存 |
网关的引入带来了以下关键收益:
- 客户端简化:客户端只需与一个端点通信,无需感知后端服务拆分细节。
- 安全集中:认证、授权、防攻击等安全策略在网关层统一实施,避免每个服务重复实现。
- 流量管控:限流、熔断、降级等稳定性策略可在网关层集中配置。
- 协议适配:支持HTTP/1.1、HTTP/2、WebSocket、gRPC等多种协议转换。
架构提示:在Go生态中,常用的API网关实现包括Kong(基于OpenResty)、Traefik(Go实现)、以及自研网关(基于Gin/Chi + 中间件链)。本课程后续将聚焦自研权限审计网关的Go实现。
1.3 权限审计网关的核心职责
权限审计网关是API网关的一个安全增强子集,在通用网关能力之上,重点强化身份认证、权限校验和操作审计三大职责。其核心职责可归纳为以下五个维度:
- 统一认证(Authentication):验证请求者身份,支持JWT、OAuth2.0、Session等多种认证方式,拒绝未认证请求。
- 细粒度授权(Authorization):基于RBAC(基于角色的访问控制)或ABAC(基于属性的访问控制)模型,校验请求是否具有目标资源的操作权限。
- 全量审计(Audit Logging):记录每一次请求的关键信息(请求方、时间、资源、操作、结果),形成不可篡改的审计日志,满足合规与溯源需求。
- 安全防护(Security Protection):拦截SQL注入、XSS、CSRF、暴力破解等常见Web攻击,提供IP黑白名单、请求频率限制等能力。
- 敏感数据脱敏(Data Masking):对响应中的敏感字段(如手机号、身份证、密码)进行自动脱敏,防止数据泄露。
常见误区:不要将权限审计网关与业务网关混为一谈。业务网关侧重路由与协议转换,而权限审计网关必须将安全与审计作为第一优先级,性能优化需在安全基线之上进行。
1.4 权限审计网关架构总览
下图展示了权限审计网关在微服务架构中的位置及其内部核心模块:
1.5 权限审计网关 vs 通用API网关
下表清晰对比了权限审计网关与通用API网关在关键能力上的差异:
| 能力维度 | 通用API网关 | 权限审计网关 |
|---|---|---|
| 路由转发 | ✅ 核心能力 | ✅ 核心能力 |
| 负载均衡 | ✅ 支持 | ✅ 支持 |
| 身份认证 | ⚠️ 基础支持 | ✅ 强认证(多因子、OAuth2.0) |
| 权限校验 | ❌ 通常不内置 | ✅ RBAC/ABAC 细粒度控制 |
| 审计日志 | ❌ 或仅访问日志 | ✅ 全量操作审计 + 不可篡改 |
| 敏感数据脱敏 | ❌ 不支持 | ✅ 自动脱敏 |
| 安全攻击防护 | ⚠️ 基础WAF | ✅ 深度检测 + 行为分析 |
课程定位:本课程将使用Go语言从零构建一个生产级别的权限审计网关,涵盖认证中间件、RBAC权限引擎、审计日志管道、安全过滤器等核心组件,并深入讲解领域驱动设计(DDD)在网关边界划分中的实战应用。