云原生安全实战:API网关Envoy的鉴权与限流详解

news2025/6/13 9:01:13

 

🔥「炎码工坊」技术弹药已装填!
点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】

 

一、基础概念

1. API网关

作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 

2. Envoy

由Lyft开源的高性能云原生代理,支持动态配置、可扩展性,常用于服务网格(如Istio)或边缘网关场景。 

3. 鉴权(Authentication & Authorization)

  • 认证:验证请求身份(如Token、API Key)。 
  •  授权:确认身份是否有权限访问目标资源(如RBAC角色控制)。

4. 限流(Rate Limiting)

通过限制单位时间内的请求量,防止系统过载或恶意攻击(如DDoS)。 


二、技术实现

1. Envoy鉴权实现

Envoy通过External Authorization插件调用外部服务进行鉴权: 

http_filters:  
  - name: envoy.ext_authz  
    typed_config:  
      "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz  
      grpc_service:  
        envoy_grpc:  
          cluster_name: extauth_service  # 外部鉴权服务地址  

流程: 

  1.  客户端请求到达Envoy → 
  2. Envoy将请求头、路径等信息发送给鉴权服务 → 
  3. 鉴权服务返回允许/拒绝结果 → 
  4. Envoy根据结果决定是否转发请求。

2. Envoy限流实现

通过Rate Limit插件对接限流服务(如Redis+自定义逻辑): 

http_filters:  
  - name: envoy.filters.http.ratelimit  
    typed_config:  
      "@type": type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit  
      domain: "my_domain"  # 与限流服务配置的domain一致  
      rate_limit_service:  
        grpc_service:  
          envoy_grpc:  
            cluster_name: ratelimit_service  

流程: 

  1. 请求触发限流规则(如路径匹配) → 
  2. Envoy向限流服务发送请求 → 
  3. 限流服务检查配额(如令牌桶算法) → 
  4. 返回是否允许请求通过。

三、常见风险

1. 鉴权风险

  •  未鉴权访问:绕过鉴权直接访问内部接口(如修改请求路径参数)。 
  • 权限提升漏洞:通过篡改请求参数获取更高权限(如修改user_id获取他人数据)。

2. 限流风险

  • 突发流量冲击:限流策略未覆盖突发流量(如秒杀活动)。 
  • 缓存击穿:限流服务故障导致全量请求穿透到后端。

四、解决方案

1. 多层鉴权体系

  • 网关层:基础Token验证(如JWT)。 
  • 服务层:业务级权限校验(如数据库记录检查)。

2. 动态限流策略

  • 令牌桶算法:精确控制平均速率(适合固定配额)。 
  • 滑动窗口算法:适应流量波动(适合突发场景)。

3. 容错机制

  • 限流服务降级:失败时允许部分流量通过,避免系统雪崩。

五、工具示例

1. Envoy配置示例

# 路由限流规则  
route_config:  
  virtual_hosts:  
    - name: backend  
      domains: ["*"]  
      routes:  
        - match: { prefix: "/api" }  
          route:  
            cluster: backend_service  
            rate_limits:  
              - actions:  
                  - request_headers:  
                      header_name: ":path"  
                      descriptor_key: "path"  

2. 限流服务(Redis+Lua)

-- 令牌桶限流Lua脚本  
local key = KEYS[1]  
local rate = tonumber(ARGV[1])  -- 令牌生成速率  
local capacity = tonumber(ARGV[2])  -- 桶容量  
local now = redis.call("TIME")[1]  
local fill_time = capacity / rate  
local ttl = math.floor(fill_time * 2)  

local filled = redis.call("GET", key)  
if not filled then  
  filled = capacity  
end  

local delta = math.min(0, filled - 1)  
redis.call("SETEX", key, ttl, filled - delta)  
return filled > 0 ? 1 : 0  

六、最佳实践

1. 部署架构建议

  • 分层架构:Envoy + 外部鉴权服务 + 限流服务 + 后端微服务。 
  • 性能优化:增大Envoy内存缓存(如mem_cache_size: 256m)。

2. 安全加固

  • 最小权限原则:按角色分配API访问权限。 
  • 日志审计:记录鉴权失败和限流事件用于分析。

3. 测试方法

  • 使用wrkab工具模拟高并发场景,验证限流效果。

可视化架构图


 

专有名词说明表

名称解释
Envoy云原生高性能代理,支持动态配置和可扩展性
gRPC高性能RPC框架,Envoy通过gRPC与外部服务通信
JWTJSON Web Token,用于无状态身份验证
令牌桶算法限流算法,通过令牌生成速率控制流量
滑动窗口算法动态限流算法,适应流量波动
Redis内存数据库,常用于限流计数存储
RBAC基于角色的访问控制,用于权限管理

通过本文的系统讲解,初学者可以快速掌握Envoy在API网关场景下的核心安全能力!

 

🚧 您已阅读完全文99%!缺少1%的关键操作:
加入「炎码燃料仓」🚀 获得:
√ 开源工具红黑榜
√ 项目落地避坑指南
√ 每周BUG修复进度+1%彩蛋
(温馨提示:本工坊不打灰工,只烧脑洞🔥) 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2406710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:

数据分析六部曲?

引言 上一章我们说到了数据分析六部曲&#xff0c;何谓六部曲呢&#xff1f; 其实啊&#xff0c;数据分析没那么难&#xff0c;只要掌握了下面这六个步骤&#xff0c;也就是数据分析六部曲&#xff0c;就算你是个啥都不懂的小白&#xff0c;也能慢慢上手做数据分析啦。 第一…

路由基础-路由表

本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中&#xff0c;往往存在多个不同的IP网段&#xff0c;数据在不同的IP网段之间交互是需要借助三层设备的&#xff0c;这些设备具备路由能力&#xff0c;能够实现数据的跨网段转发。 路由是数据通信网络中最基…

CTF show 数学不及格

拿到题目先查一下壳&#xff0c;看一下信息 发现是一个ELF文件&#xff0c;64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断&#xff0c;第一个argc ! 5这个判断并没有起太大作用&#xff0c;主要是下面四个if判断 ​ 根据题目…

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…