写在前边
前端时间听了freebuf 上的 关于零信任的分享。然后结合自己工作中做过的代理的一些工作。思考,发现自己其实做的就是一个零信任的http(s) 网关。
自己参与过一个内部OA系统的代理网关的开发维护工作。该网关暴露在公网,嵌入在内部OA 办公APP 的webview 中。 内部通过webview的javascript 拦截器完成对app的模块调用完成网关的身份调用。这不正是一个零信任网关么。
故而想把这些工作整理总结一下,分享给大家。
第一次写系列文章,望大家海涵。高手路过,不要拍死我。
零信任系统的重要性
- 新时代网络发展必然性。随着IPV6,5G,大数据等技术的飞速发展,原有的封闭网络已经不满足时代的需求。转而需要的是一个足够开放的系统。开放则意味着各种安全威胁的到来。做好每个系统的安全,属于零信任的第一步。
- 远程办公需求。今年年初,新冠疫情的爆发,对于传统的办公模式提出了挑战。办公不再局限于固定的物理位置。职工需要通过各种设备完成原来在固定办公地点的请求。这种状况下,则需要原有封闭在内网的系统具备一定的开放性。
为什么要自己开发
- 便宜省钱。对于一些中小型公司,完全没有必要去购买一些大而全的网络安全设备。
- 技术积累和扩展性。自己开发的系统定制化需求完全强于购买的盒子。
- 知识产权。系统自主开发,系统的知识产权,完全属于企业。
- 等保2.0 产出。对于等保中对于各个系统的安全需求,完全可以集中到系统网关层面,其他的敏感系统做好只允许网关访问的权限设置即可。
需要具备什么知识
- html, js ,css 相关基础知识 (样式不是重点,知道基础就可以)
- http 协议 (必选)需要熟悉常见的状态码, header 头 ,cookie , session 的相关知识
- nginx lua 或者 openrestry (必选) 网关模块的跳转和调度依赖的是openrestry 的lua 实现
- golang 语言(可选) 主要涉及到证书签发部分的实现,提供 证书模块的二进制版本,可以直接运行。
- python 语言(必选)整个网关的认证模块,权限认证模块都使用 python 来完成
开发一个什么样的网关
网关实现的整体流程图如下:
- 将后端真实服务收敛到网关内部,用户所有对真实系统的调用,都直接通过和网关的交互来实现。
- 网关设备作为一个标准的http 服务器,主要完成 证书的双向认证,保证用户到网关设备之间的链路安全。
- 在网关设备到真实的服务器之前需要经过一个授权中心。授权中心完成身份认证和权限认证两个功能。对于未登录的用户,会返回响应的登录跳转请求,并完成登录请求的身份认证。对于已经登录的用户,访问需要授权的资源的时候,需要完成相应的权限认证,如果没有相关权限,则直接返回 无权限页面。
- 对于通过身份认证和权限认证的合法请求,则会被转发到后端的真实服务器。同时每个请求中,都包含了登录的身份识别信息,用于后端的真实服务来获取识别。如果后端的真实服务器,只允许网关服务器访问,则可以零成本的实现一个零信任的网络服务。
最后
希望这一系列的文章能帮助你对 代理网关的实现有相关的了解。
来源:freebuf.com 2020-10-21 17:37:45 by: qixingyue
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册