零信任:基于Apisix构建认证网关

news2024/9/29 13:26:08

背景

零信任一直是我们未来主攻的一个方向,全球加速,SD-WAN组网都是一些非常成熟的产品,全球加速是我们所有产品的底座,SD-WAN解决的是多个网络打通的问题,而零信任则主打应用访问。
在这里插入图片描述

关于零信任,我们已经实现了内网隐身功能,对于客户而言,内网不需要暴露任何端口,而在公网网关方面,我们支持不认证访问以及认证访问两种方式。
在这里插入图片描述

但是在认证方面,我们第一个版本只是简单的基于IP的认证,用户只需要登录我们的认证网站 然后登录自己的账号,我们就会下发客户的公网IP到网关,然后网关开放端口。

这种方式最大的弊端就是粒度很大,在同一个局域网下的设备,使用的是同一个公网IP,相当于给整个局域网开放了权限,但是第一个版本已经很好的完成了他的使命,并且获得了客户的认可(客户并不需要认证功能,只要针对他的IP开放即可)。在此之后,我们开始调研基于会话的认证,我们的目标非常清晰:

  • 身份认证
  • 权限控制
  • 最好能适配国内特色,支持企业微信,钉钉,飞书登录

关于Apisix

Apisix是我们零信任当中重度使用的产品,市面上此类项目无非就Nginx,Openresty,kong和Apisix,最终选择Apisix,没有太大具体原因,kong和Apisix都非常有名,选一个用就行。

Apisix充当我们的七层接入网关,负责用户流量接入的,我们零信任数据面的基本技术架构图如下:

在这里插入图片描述

身份认证方案

既然我们的代理网关是基于Apisix开发的,那么我们的身份认证自然也是需要跟着Apisix的插件走,Apisix支持多种认证插件,我们调研了两种方案:

  • 基于keycloak来做认证和授权
  • 基于casdoor来做认证和授权

首先基于keycloak的方案,Apisix有两种插件,一个是openid connect的通用方案,一个是authz-keycloak的转么为Keycloak的方案。

基于OpenID Connect的方案,我们测试发现,只能实现认证,没法实现权限控制,我们折腾了挺长时间,发现确实没有权限控制,如果有哪位朋友成功基于openid connect实现权限控制的,可以私聊我。

基于authz-keycloak的方案,我们没有成功跑起来,这种场景说明要么我们对keycloak的理解不深,要么是插件确实很难用,细节很多,未来容易掉坑。

至此我们开始研究casdoor,这个对国内比较友好,我们非常容易就跑起来了,身份认证+权限控制都没问题,唯一的问题是,如果要和我们的系统对接上,我们需要把用户,应用,权限信息全部同步过去,如果中间过程出现错误,还是会造成很多bug的。

最终我们的方案是尝试自己开发一个Apisix的插件,然后跟我们现有系统对接。我们评估了下改动量:

  • 开发一个Apisix的插件,能够实现类似OAuth2的功能
  • 调整现有接口,实现出一个类似OAuth2的server

工作量也不是很大,最主要的是我们完全可控,而且我们以后完全可以在我们的OAuth2 server上对接其他认证方式,对于Apisix而言完全不需要关注,只需要在OAuth2 server上进行调整即可。

最终在端午三天的假期我们完成了整个从基于IP的权限控制调整成了基于会话的权限控制。

未来计划

身份认证,权限控制不属于我们的专长,但是零信任产品又需要这种功能,未来我们可能会考虑和其他身份认证厂商比如Authing结合,目前也正在调研相关产品。如果您对我们的产品感兴趣的话,可以访问我们的官网了解更多

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

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

相关文章

使用Wireshark 找出 TCP 吞吐瓶颈

Debug 网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽)。延迟比较好验证,Ping 一下或者 mtr[1] 一下就能看出来。这篇文章分享一个 debug 吞吐量的办法。 看重吞吐量的场景一般是所谓的长肥管道(Long Fat …

包装类~~

就是8种基本数据类型对应的引用类型 2:为什么提供包装类 Java为了实现一切皆对象,对8种基本类型提供了对应的引用类型后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。 自动装箱:基本类型的数据和变量可以直接赋值…

ResNet:深度学习中的重要里程碑

目录 导言: 1. 应用 2. 结构介绍 3. 代码案例 导言: 深度学习的迅速发展在图像识别、语音处理和自然语言处理等领域取得了巨大的突破。然而,深度神经网络在训练过程中遇到了梯度消失和梯度爆炸等问题,限制了模型的性能和训练…

【springboot整合】RabbitMQ

Spring与消息 概述 消息中间件的主要作用:提高系统异步通信、扩展解耦能力消息服务的两个重要概念:消息代理(message broker)和目的地(destination)消息队列的两种形式的目的地:队列&#xff…

CentOS ping命令:name or service not known

1.虚拟机网络连接设置为“NAT模式”,且NAT设置 导航栏“编辑”->“虚拟网络编辑器” ->NAT模式->NAT设置 2.网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33注:IPADDR和NAT设置里面的IP最后一位要不同 3.DNS设置 vi /etc/reso…

自然语言处理: 第四章Seq2Seq

自然语言处理: 第四章Seq2Seq 理论基础 开始之前,首先提出一个问题,电脑是怎么识别人类的命令的,首先人们通过输入代码(编码) ,带入输入给计算机然后再经过处理(解码)得到最终的命令。所以可以看到这其实是一个编码 解码的过程…

lesson10 Zigbee组播通信原理

目录 Zigbee组播通信原理 实验原理 实验过程 实验设计 发送模块 接收模块 实验现象 组播通信总结 Zigbee组播通信原理 实验原理 1、组播通信:在Zigbee无线网络里,模块可以进行分组来标记。发送的模块如果发送的组号和网络里标记模块的组号相对应…

被偷走的文件

也是一道流量解析题目 既然是文件被盗走,可能跟文件传输协议ftp有关,过滤一下ftp 跟踪流后发现有一个flag.rar文件,是内嵌的吗? 那说明应该也可以利用binwal分出来吧 分离出来的rar文件需要密码,拿去爆破一下&#xff…

03_ES6

ES6(在js中进行操作) 使用var声明变量的弊端 var 声明的变量有预解析,造成逻辑混乱,可以先使⽤,后声明,undefined var 可以重复定义同⼀个变量,第二个会修改变量的值 var ⽤在 for 循环条件中,造成 for 循环的污染的…

【八股】【C++】(三)STL

这里写目录标题 STL定义一、容器概念(1)vector如何避免扩容导致效率低为什么是1.5或2扩容怎么找某vector或者list的倒数第二个元素vector如何释放空间[] 下标检查 (2)deque(3)stack(4&#xff0…

如何通过Python下载GSMap数据集(解决.dat无法打开的问题)?

目录 01 前言 02 GSMap-MVK的存储方式和数据集介绍 03 代码实现 01 前言 这么晚了我还是希望将这篇博客写一下,记录生活。 我所下载的数据集为GSMap-MVK数据集,延迟大概2.5月左右我记得.边下载我就想着先处理着吧。 例如,其中一个文件如…

HOT38-翻转二叉树

leetcode原题链接:翻转二叉树 题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:…

华为OD机试真题B卷 Python 实现【小朋友排队】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 小明今年升学到了小学1年级,来到新班级后,发现其他小朋友身高参差不齐,然后就想基于每个小朋友和自己的身高差&#xff…

postgresql内核分析 spinlock与lwlock原理与实现机制

​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 在postgresql 中,有大量的并发同步&#xff0…

浅谈容器技术之Podman

1.Podman容器简介 Podman(Pod Manager)是一个由RedHat公司推出的容器管理工具,它的定位就是 Docker 的替代品,在使用上与Docker 的体验类似。Podman源于CRI-O项目,可以直接访问 OCI 的实现(如 runC&#x…

【Unity实战】复刻实现经典2d平台跳跃游戏《蔚蓝 Celeste》(附工程源码)

文章目录 前言蔚蓝欣赏实现1. 移动2. 跳跃3. 滑动4. 爬墙5. 蹬墙跳6. 移动优化7. 粒子效果8. 角色环境素材9. 编写角色动画控制10. Tilemap绘制地图环境11. 环境粒子特效12. 冲锋残影效果13. 屏幕震动效果14. 涟漪效果 最终效果工程源码参考完结 前言 《蔚蓝》是一款备受好评的…

信号与系统复习笔记——通讯系统

信号与系统复习笔记——通讯系统 复指数与正弦幅度调制 y ( t ) x ( t ) c ( t ) y(t) x(t)c(t) y(t)x(t)c(t) 上式称为调制,其中 x ( t ) x(t) x(t) 称为 调制信号 ,而 c ( t ) c(t) c(t) 称为 载波信号 , y ( t ) y(t) y(t) 称为 已…

Redis高可用(主从复制、哨兵模式和Cluster集群)

文章目录 一、Redis高可用1.持久化2.主从复制3.哨兵4.Cluster集群 二、主从复制1.概念2.作用3.主从复制流程4.配置主从复制 三、哨兵模式1.功能2.作用3.组成4.故障转移机制7.故障模拟8.恢复故障节点 四、Cluster群集1.简介2.作用(1)数据分区(…

Redis常用数据类型

Redis 哈希(Hash)🍉 Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿) 它…