「炎码工坊」技术弹药已装填!
点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】
API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座桥梁,连接客户端与后端服务,提供身份验证、流量控制、监控日志等能力。
核心作用:
鉴权分为两步:
典型场景:
限流通过控制单位时间内的请求量,防止系统过载。常见算法:
作用:
Kong基于Nginx+Lua构建,通过插件扩展功能。其核心模块包括:
(1)内置插件
plugins:
- name: key-auth
config:
key_names: ["apikey"]
(2)自定义Lua插件
function CustomAuth:access(config)
local token = kong.request.get_header("Authorization")
if not token then
return kong.response.exit(401, { message = "Unauthorized" })
end
-- 自定义逻辑:查询Redis验证token有效性
end
(1)令牌桶限流
curl -X POST http://kong:8001/routes/{route_id}/plugins \
--data 'name=rate-limiting' \
--data 'config.second=5' # 每秒最多5次请求
(2)多维度限流
支持按客户端IP、用户ID、API密钥等维度限流。
风险类型 | 场景示例 | 影响 |
弱鉴权 | 使用简单字符串作为API密钥 | 密钥易被破解 |
无鉴权 | 敏感接口未启用鉴权插件 | 任意用户可访问 |
限流策略失效 | 未设置突发流量阈值 | 突发流量导致服务崩溃 |
缓存穿透 | 频繁请求不存在的资源 | 后端数据库压力激增 |
案例:某电商平台未对商品查询接口限流,促销期间因突发流量导致服务瘫痪。
ip-restriction
插件拦截恶意IP # 创建消费者
curl -X POST http://kong:8001/consumers \
--data "username=luka"
# 为消费者添加API密钥
curl -X POST http://kong:8001/consumers/luka/key-auth \
--data "key=my-secret-key"
# 在路由上启用插件
curl -X POST http://kong:8001/routes/{route_id}/plugins \
--data 'name=key-auth'
# 每分钟限流100次
curl -X POST http://kong:8001/routes/{route_id}/plugins \
--data 'name=rate-limiting' \
--data 'config.minute=100'
kong cache
) 英文/中文全称 | 解释 |
API Gateway | 应用编程接口网关,微服务架构中统一管理API流量的组件 |
JWT (JSON Web Token) | 开放标准令牌格式,用于安全传递用户身份信息 |
OAuth 2.0 | 开放授权协议,允许第三方应用安全访问用户资源 |
令牌桶算法 | 限流算法,通过周期性补充令牌控制请求速率 |
插件化架构 | 系统通过可插拔模块扩展功能的设计模式 |
共享缓存 | Kong中多个Worker进程共享的内存缓存区域 |
灰度发布 | 分阶段向部分用户开放新功能,逐步验证稳定性的部署策略 |
通过本文的系统性讲解,初学者可快速掌握Kong在API网关场景下的核心安全能力。建议结合官方文档(如Kong Hub[1])深入实践,逐步构建高可用的云原生安全体系。
引用链接
[1]
Kong Hub: https://docs.konghq.com/hub/
您已阅读完全文99%!缺少1%的关键操作:
加入「炎码燃料仓」 获得:
√ 开源工具红黑榜
√ 项目落地避坑指南
√ 每周BUG修复进度+1%彩蛋
(温馨提示:本工坊不打灰工,只烧脑洞)