/SDP_Gateway

零信任网关

Primary LanguageJava

零信任 SDP(Software Defined Perimeter) 网关

1、项目介绍

在 SDP 架构中最关键和核心的组成部分之一是要求被强制实施“先认证后连接”的安全模型,可以通过单包授权协议(SPA)来实现这一点,在允许用户或设备访问零信任网关所在的网络之前先检查用户和设备的身份。基于单包授权认证协议,只有接收到用户设备发送的 SPA 数据包并在验证合法后,才对该客户端开放指定端口。授权认证模块默认丢弃所有的 TCP 和 UDP 数据包并且不予回复,从而不为潜在的攻击者提供任何缺口。授权认证模块对于零信任网关不可或缺,用于对用户和设备的合法性进行认证和对服务和资源等企业资产进行隐藏。

SDP 客户端代理利用 SPA 进行安全校验和授权后,SDP 网关向代理开放指定的端口,并与代理建立双向 TLS 连接,通过双向认证,来确认作为进过授权的成员。

SDP 网关需要依据SDP控制器下发的访问控制策略,对用户或设备的访问权限进行分析检查其访问权限。在 SDP 架构中要求对用户的身份、设备信息和行为路径等多个方面进行检测和判断,当用户的访问请求发送到 SDP 网关之后,网关解析出用户访问请求中的用户、设备信息,然后依据访问控制策略进行访问控制的执行。

2、项目架构

基于 eBPF 的单包授权认证方案由位于内核空间的 SPA 报文解析、SPA 报文认证、SPA 授权和日志采集以及位于用户空间的密钥管理、策略中心和日志分析组成。

sdp架构

3、模块设计

3.1 SDP网关通信模块

通通信模块主要负责接受SDP控制下发的访问控制策略以及接受经过合法授权认证的客户端的服务调用,主要包括密钥管理和TLS加密两部分。密钥管理主要负责密钥全生命周期的管理,TLS加密主要负责利用密钥对通信信道进行加密和解密。

3.2 SDP网关授权认证模块

本模块主要根据SPA包中的数据部分对用户和设备进行身份认证,通过SPA授权认证后为该客户端开启对应端口,但是该端口对其他未经授权认证的客户端不可见。当网络请求流量通过设备网卡进入内核协议栈之前的XDP的钩子函数挂载点处挂载eBPF网络数据包处理程序,当有访问请求数据包发送到SDP网关的网卡设备后,eBPF程序对数据包进行拦截并转入eBPF程序中。再根据eBPF程序的返回值决定该数据包的去向。

01.png

3.3 SDP网关策略模块

策略模块又包含策略接受模块、策略引擎模块和策略执行模块,策略接受模块负责接受SDP控制器下发的访问控制策略,运行在用户空间;策略引擎模块负责解析SDP控制器下发的访问控制策略并将其按照一定的格式写入到内核空间中;策略执行模块负责根据事先定义好的策略实时处理客户端的访问请求。

流量的转发与拦截主要依据授权认证和访问控制执行模块的结果对流量进行转发或拦截,主要运行与内核空间,在内核空间中直接对数据包进行过滤处理以提高系统处理效率。

02.png

3.4 SDP安全日志模块

行为日志采集模块主要负责对零信任网关中授权认证模块、访问控制执行模块和流量转发与拦截模块中产生的各种事件进行规则化整理形成零信任网关的安全日志信息。安全日志信息主要包括访问请求主体信息如用户信息、IP地址、访问设备的操作系统等,访问请求的客体信息,访问请求的成功与失败信息。SDP网关将生成的安全日志信息上报至SDP控制器,可以作为计算访问主体信任评估值的依据。