一种网络安全认证方法
技术领域
本发明涉及计算机软件安全认证技术领域,尤其涉及一种网络安全认证方法。
背景技术
Apache Kerby是一套开源的java开发的安全认证框架,它作为ApacheDirectory的子项目出现的,通过kerby开发者可以自己开发Kerberos认证服务器KDC Server,而且它还支持多种安全协议,如X509,oauth2都有很好的支持,它可以为Hadoop大数据,云计算环境搭建出色的安全盾牌。
基于Apache Kerby的安全认证框架,可通过web配置,独立完成KDC服务器的环境搭建,提供Kerberos认证服务,并无需第三方服务,并且提供auto-failover功能,无单点故障。支持多种安全认证协议,如x509、oauth2等,能在Http、Tcp、Udp多种方式下提供安全服务。同时,也能提供Token(令牌)票据服务,并且票据有失效时间,最大程序的保护用户资源安全。
在现有技术中,网络安全认证主要包括以下步骤:(1)、通过Kerberos命令方式搭建起KDC服务器,确保Client与KDC服务器可以正常通信。(2)、Client用户将之前获得TGT和待请求的服务信息(服务名等)发送给KDC服务器。KDC服务器中的Ticket GrantingService(票据授予服务)将为Client和Service之间生成一个Session Key用于Service对Client的身份鉴别。然后KDC服务器将Session Key和用户名、用户地址(IP)、服务名、有效期及时间戳一起包装成一个Ticket(这些信息最终用于Service对Client的身份鉴别)发送给Service。不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service。(3)、此时KDC服务器将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC服务器用协议开始前KDC服务器与Service之间的密钥将Ticket加密后再发送给Client。同时为了让Client和Service之间共享那个秘密(KDC在第一步为它们创建的Session Key),KDC服务器用Client与其之间的密钥将SessionKey加密随加密的Ticket一起返回给Client用户。(4)、为了完成Ticket的传递,Client将刚才收到的Ticket转发到Service。由于Client用户不知道KDC服务器与Service之间的密钥,所以它无法算改Ticket中的信息。同时Client将收到的Session Key解密出来,然后将自己的用户名,用户地址(IP)打包成Authenticator用Session Key加密也发送给Service)。(5)、Service收到Ticket后利用它与KDC服务器之间的密钥将Ticket中的信息解密出来,从而获得Session Key和用户名、用户地址(IP)、服务名、有效期。然后再用SessionKey将Authenticator解密从而获得用户名、用户地址(IP)将其与之前Ticket中解密出来的用户名,用户地址(IP)做比较从而验证Client用户的身份。(6)、如果Service有返回结果,将其返回给Client用户。
由于Kerberos的安装配置是极其复杂的,而且要配置的参数非常多,一般用户很难完全掌握,配置环境也是在Linux环境shell里,操作也不是很方便明了,并且没有监控方案。因此,也存在统一管理的用户界面的问题,导致用户无法真正掌握KDC服务器内部的运行状态,所有的操作需要用户通过命令行方式进行操作,用户体验较差。
此外,现有技术对Hadoop或者云计算的集成度不高,用户需要做额外的配置工作,配置与运维存在一定的困难与风险。同时,由于没有任何监控手段,KDC服务器的稳定性成为了重要的瓶颈,存在安全性的隐患。
有鉴于此,有必要对现有技术中的基于apache Kerby的网络安全认证方案予以改进,以解决上述问题。
发明内容
本发明的目的在于公开一种网络安全认证方法,用以简化安装认证的部署流程,提高认证方法的安全性,并能够与大数据或者云计算***的深度的整合,同时实现对KDC服务器运行状态的有效监控。
为实现上述目的,本发明提供了一种网络安全认证方法,其基于ApacheKerby安全认证框架,
所述网络安全认证方法包括以下步骤:
S1、管理员自web客户端配置出基于Kerberos认证服务的KDC服务器;
S2、通过KDC服务器对资源与用户Id、角色、Token Id、Token状态进行关联,以构建出关联信息;
S3、用户自web客户端获取令牌值及令牌信息,将令牌信息保存至持久化节点中,并将令牌与资源绑定;
S4、根据令牌信息与步骤S2中的关联信息确定用户对资源的访问权限。
作为本发明的进一步改进,所述持久化节点包括分布式应用程序协调服务、json文件、xml文件、数据库或者非易失性存储介质。
作为本发明的进一步改进,所述资源包括文件***、物理机资源、虚拟机资源。
作为本发明的进一步改进,所述步骤S4之后还包括通过ELK或者grafana将被用户所访问的资源推送至用户的web客户端。
作为本发明的进一步改进,所述数据库包括opentsdb或者influxdb。
与现有技术相比,本发明的有益效果:用户可通过web浏览器对KDC服务器进行配置操作,实现了一键化部署数据安全服务,此外通过运行监控方式,通过jmx监控,实现了对KDC服务器的运行状态的有效监控,并实现了与大数据及云计算的深度整合;最后,通过用户与权限角色、权限角色与资源的关系问题,通过对资源的token认证,为被用户访问的资源提供了安全级别更高的保护机制。
附图说明
图1为本发明一种网络安全认证方法的流程图;
图2为用户在网络安全认证的实例的流程图;
图3为用户用例图;
图4为管理员自web客户端配置出基于Kerberos认证服务的KDC服务器的示意图;
图5为用户自web客户端获取令牌值及令牌信息并将令牌信息保存至持久化节点中以实现将令牌与资源绑定的过程的示意图;
图6为web应用服务器在用户正常访问资源时所形成的记录;
图7为web应用服务器在用户不正常访问资源时所形成的记录。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
请参图1至图7所示出的本发明一种网络安全认证方法的一种实施方式。在本实施方式中,一种网络安全认证方法,其基于Apache Kerby安全认证框架,该网络安全认证方法包括以下步骤:
首先,执行步骤S1、管理员自web客户端配置出基于Kerberos认证服务的KDC服务器。
在建立apache kerby的基础之上,可以通过web客户端方式而无需在Linux***中以输入命令行的方式,就可以快速搭建KDC服务器,还可以通过Java管理扩展JMX所反馈的监控信息,把KDC服务器的运行状态信息(例如KDC服务器的负载、内存消耗情况、CPU占用率、线程占用情况)以web方式反应到web客户端上,方便用户查看。同时,用户可以方便的使用通过Web浏览器对Kerberos进行参数配置。Kerberos为内建于apache kerby中的一种服务,其作用在于大数据或者云计算的安全认证服务。
然后,执行步骤S2、通过KDC服务器对资源与用户Id、角色、Token Id及Token状态进行关联,以构建出关联信息。
用户Id、资源、角色、Token Id、Token状态这五个参数的关联信息参下述表一所示。通过表1所示出的五个参数的关联信息,可对资源起到保护作用。
表一
表二展示了令牌(token)的关联信息,并主要包括Token Id、Token值、Token生成时间与Token失效时间这四个参数。表二与表一有关联关系,可以通过token来解决时间的访问权限争议。在本实施方式中,可以通过表二中Token失效时间来控制Token失效后资源的访问权限,从而起到对资源分配与释放的合理管控,从而起到了对被用户访问的资源的合理配置,避免资源被频繁请求,提高了用户体验。
Token Id |
Token值 |
Token生成时间 |
Token失效时间 |
0001 |
Xawerrtrqwweewew |
2016/2/12 |
24h |
0002 |
Axtyxdaca233xetew |
2016/3/3 |
24h |
表二
用户通过KDC服务器获取token值,并把token的信息保存到持久化节点中。具体的,该持久化节点包括:分布式应用程序协调服务、json文件、xml文件、数据库或者非易失性存储介质(Non-volatile Memory)。
然后执行步骤S3、用户自web客户端获取令牌值及令牌信息,将令牌信息保存至持久化节点中,并将令牌与资源绑定。
通过Token与资源的对应关系,使大数据或者云计算等其它应用的安全级别近一步提高,同时把角色与资源增加了一层关系,不同的资源都有一个管理角色,可以对Token进行生成与发放,普通角色可以获取资源Token进行资源访问。
参图4与图5所示,部署搭建支持Apache Kerby安全认证框架的web应用服务器。通过web方式管理员可以进行适当的配置就可以启动KDC服务器。在KDC服务器正常启动后,可以启动Identity store server,可以把KDC服务器的配置参数通过RPC(远程过程调用协议)调用,保存到Identity store server,保存方式多种可以为zookeeper、json file等持久化节点。资源(大数据与云主机)监控服务的部署与安装。通过kibana数据的可视化,可以对访问实现jmx监控,以防止当KCD服务器出现宕机或者异常的访问登录。
最后,执行步骤S4、根据令牌信息与步骤S2中的关联信息确定用户对资源的访问权限。
优选的,该数据库包括opentsdb或者influxdb。Opentsdb是一个架构在Hbase***之上的实时监控信息收集和展示平台。influxdb是一个开源分布式时序、事件和指标数据库。其使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展,并具有以下主要特性:(1)Time Series(时间序列):可以使用与时间有关的相关函数(如最大,最小,求和等);(2)Metrics(度量):你可以实时对大量数据进行计算;(3)Events(事件):它支持任意的事件数据。
token本身是一份文件的方式存在的。当token信息持久后,如果KDC服务器故障,可以通过token信息进行故障恢复,用户可以通过表一与表二信息来获取权限,例如:查看或者访问目录与云主机等资源等等。同时,由于token有一定的失效时间,因此,一旦token发生失效,与该token所关联的角色就不能对资源进行访问,而需要重新申请认证,这样能最大程度保证资源隔离性。
具体的,在本实施方式中,资源包括文件***、物理机资源、虚拟机资源。同时,在步骤S4之后还包括通过ELK或者grafana将被用户所访问的资源推送至用户的web客户端。用户可以对待访问的资源进行实时监控,并可为接下来的大数据用户行为分析奠定基础。
该网络安全认证方法可支持x509、oauth2等安全认证协议。
参图2所示,接下来,以oauth2在发明中的认证过程作具体阐述。
(1)普通用户申请令牌(Request Token),服务提供者验证通过后将令牌返回。这个过程由web应用服务器发起,对用户透明。
(2)普通用户使用令牌让浏览器重定向到服务提供方进行登录验证和授权。服务提供方校验令牌,用户同意授权,服务提供者发放已授权令牌并将用户引导到当前应用的注册地址。
(3)普通用户使用已授权令牌向KDC服务提供方换取token。在本方案中,token的保存由web应用服务器来获取和保管token,这样不需要人为来管理保存,非常方便用户对token的管理使用。
(4)用token作为令牌访问受保护资源。token包含了某个用户对某个应用或者数据授权凭据,token对应用户授权时所赋予的一系列权限的集合。token信息保存在持久化节点中,而token保存在文件中,两者分别存储,除了校验token的合法性之外,服务提供方还需对该token是否拥有足够的权限执行被保护操作进行判断,为用户的资源提供了安全级别更高的保护机制。
用户访问资源监控流程:
(1)当web应用服务器开启资源访问监控后,用户通过shell登录大数据和云主机或者通过URL方式访问某个资源时,每次请求都会记录下来并存储于数据库中。用户自web客户端所发起的访问请求所形成的数据结构如下所示:用户id+登录时间+访问资源内容+token是否许可,每次访问记录变成一天文本记录保存在数据库,并以时间序列方式存储,通过UI实时显示(参图6与图7所示),管理员可以直接通过web页面进行对资源访问情况进行实时监控。
(2)通过基本逻辑回归,设定用户正常访问资源时取值为0,设定用户非正常访问资源时取值为1,进行资源访问监控建模。资源访问监控建模的流程如下:(a)首先对上述步骤(1)中用户自web客户端所发起的访问请求所形成的数据结构(以下简称原始数据)进行分析,遍历原始数据中的各个数据变量的含义并分析数据质量;(b)基于上述遍历结果,形成用户访问资源的记录,从而由多个记录形成图6或者图7所示出的曲线图;(c)对部分连续型指标采用单变量决策树的方法进行分栏处理,从而对web应用服务器进行关于用户对特定资源进行访问习惯的学习与记录,从而把角色与资源实现模型化处理,并有助于发现并记录用户对特定资源的访问习惯或者用户模拟行为(例如:某个用户在web客户端对某个网站持续性的访问),从而提高KDC服务器对资源与用户、权限角色进行关联以构建出关联信息的效率,防止资源的任意分配,并为web应用服务器提供有效决策;(d)利用上述构件的逻辑回归算法构建资源访问风险评估模型,并向web应用服务器提供;(e)管理员在web应用服务器上对各逻辑回归算法所构建的模型、用户对特定资源的访问习惯或者用户模拟行为进行评估和分析。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。