基于token令牌的水资源管理决策支持系统网络安全体系研究
2021-02-14漆瑞丰周建中
漆瑞丰,周建中,刘 懿
(1.华中科技大学土木与水利工程学院,湖北 武汉 430074;2.华中科技大学数字流域科学与技术湖北省重点实验室,湖北 武汉 430074)
0 引 言
以数据为驱动中心,一大批水利信息化系统,如防洪调度、大坝安全监测、水资源智慧调配等在各单位有效部署运行;这有力支撑了水利行业各项业务工作[1]。水文、气象、地形等数据由于其特殊性,往往具有较高的安全等级,在水利信息化快速发展的同时,保障这些数据在网络传输过程中的信息安全成为水利信息化进一步安全快速发展的必要条件。水利行业各级单位在网络安全法的基础上,统筹考虑水利信息化过程中可能遇到的各种安全问题,高起点顶层设计;初步建立起网络安全保障体系[2]。
传统的水资源管理系统采用单体式架构,每一个服务完整承担前后台功能,每个业务系统都是独立的整体。但随着水资源管理决策支持系统越来越多,数据安全等级越来越高,传统单体式架构已经难以满足当前业务需求,所以现在的水资源管理决策支持系统采取了前后端分离的微服务架构。
在微服务架构下,基于简单Session/Cookie的认证方式已无法满足分布式微服务系统的认证、鉴权需求。因此,为了适应如今系统框架和安全需求的变化和日益复杂的业务需求,需要将系统的认证鉴权模块独立出来。基于token令牌网络安全体系的随机性强、不可预测性高以及无法轻易破解等特点恰好满足了水资源管理决策支持系统专业化复杂业务应用对安全性的需要。
1 相关理论及技术
1.1 基于token的身份认证机制
身份认证是防止非法用户进入系统访问受保护资源、服务的重要方法,也是部分网络攻击的重要手段[3]。采用token身份认证机制,能较好解决当前水资源管理决策支持系统中的身份认证及权限鉴别等问题。当物联网客户端(用户或者终端设备)发起登录或连接请求时,系统服务器端会根据用户或者物联网终端设备的注册信息,生成一串用于用户访问凭据的字符串,并将其反馈给客户端作为token令牌[4]。
1.2 token验证步骤
基于token的身份认证,用户的密码等信息将不再存储在客户端或者服务端。在解决敏感信息存储问题的同时释放了服务器资源,而且服务端不用再耗费资源判断用户是否处于登录状态[4]。下面详细阐述基于token的身份认证方法[5-7]:
步骤1,客户端使用用户名和密码请求登录。
步骤2,服务端收到请求,去验证用户名与密码。
步骤3,验证成功后,服务端签发一个token,token与用户名对应。token一般可存储在缓存或数据库中,方便查询验证;再把token发送给客户端。
步骤4,客户端收到token后将其存储在数据库或者Local Storage中。
步骤5,客户端每次向服务端请求资源时,需要标识服务端签发的token信息。
步骤6,服务端收到请求后,验证客户端请求标识的token,如果验证成功,返回请求的数据(见图1)。
图1 token验证步骤
token技术是搭建水资源管理决策支持系统网络安全框架的关键技术。利用此技术,可以将受保护的后台水利专业模型资源和前端浏览器或者客户端隔离,从而保障后台的资源安全;同时,当水资源管理决策支持系统有拓展业务需求时,可以借助token进行鉴权,在保障安全的同时直接进行数据共享,避免了各个系统重新整合的麻烦。
2 网络安全体系框架
2.1 系统整体框架设计
分布式系统架构是将分散的计算机资源整合为一个整体,向用户提供一致性调用、监控和管理功能的系统结构;同时,将系统拥有的多种通用的物理和逻辑资源,根据任务需求动态分配,并通过计算机网络实现物理和逻辑资源的信息交换。
本文考虑到水资源管理决策支持系统采用基于面向服务(SOA)的架构技术,将水资源管理多专业模型服务统一部署,以小规模服务集群的方式运行,通过服务接口的方式提供给应用开发者。为此,采用token技术搭建统一权限中心,对整个系统的安全权限进行管理;同时,搭建统一数据服务系统,避免大量第三方应用直接读写数据库对数据库造成安全威胁。
2.1.1 安全框架构建
在上述的分布式架构中,为了保证前端浏览器和后台服务、后台服务与数据库的通信安全,防止用户信息(用户名/密码)泄露,设计了如图2所示的安全框架。
图2 安全框架示意
安全框架分为4个角色:
(1)资源拥有者(resource owner)。水利模型服务资源实际拥有者,拥有定义实际访问权限或授权许可的实体,通常是水利流域管理部门。如,各流域水资源部、梯调中心等,也可包括后续可接入系统的其他水利专业模型的开发部门。在本网络安全中框架,资源拥有者为流域管理者,是具有流域调度权限的调度部门。使用水资源管理支持系统的专业调度人员在获得流域管理者(资源拥有者)的授权后,便可以请求相应水利专业模型,并得到相关结果。流域调度人员可以通过Web浏览器、PC桌面客户端或者移动终端应用等支持REST服务的终端请求服务。
(2)资源服务器(resource server)。它用于存储用户受保护的数据和服务资源,如发电优化模型水电站96点日计划对应表、中长期预报最大最小值储存表等流域和水库运行相关信息;中长发电期优化调度、库群模拟及河道模拟等专业水利业务计算模型。流域调度员(客户端)通过授权令牌向资源服务器请求资源,资源服务器处理访问请求。受保护的水利专业模型等资源部署在资源服务器中,被封装成服务并对外提供可调用。
(3)统一鉴权中心(Unified Authentication Center)。统一鉴权中心拥有者为流域相关调度部门,由相关流域职能部门决定调度员是否具有相关水利模型或数据的调用权限。统一鉴权中心是网络安全框架的核心组件,它承担了系统登陆认证发放token、授权的核心功能。当外部请求水利专业模型服务接口时,会先被统一鉴权中心拦截,身份验证通过后发放token。
(4)统一数据服务(Unified Data Service)。该服务用于接收资源服务器的服务发送带token的数据库操作请求,解析请求头字段中的token信息,并向统一鉴权中心发送token验证请求,在接收到统一鉴权中心返回的token合法信息后,对数据库进行相应的增、删、改、查操作,返回数据信息或操作结果给资源服务器。
基于token令牌的网络安全体系框架,可将水资源管理决策系统中的后台重要服务资源和前端浏览器或客户分离,保障了后台服务和数据库数据的安全。同时,在网络传输过程中,不直接传输用户名和密码,而是用于证明身份的token值,进一步保障了用户的信息安全,提高了系统的整体安全性。
2.1.2 基于token的认证及鉴权
在水资源管理决策支持系统的实际应用中,一般用户只有访问一般后台服务的需求,而系统管理员承担着用户的创建、删除、修改等任务。针对此需求,应用系统给用户设计了不同的权限等级。不同用户登陆后,根据角色不同,可以请求到服务端不同的资源。用户登录是基于令牌身份认证的核心功能。具体登录过程时序见图3。
图3 登陆时序示意
基于token的水资源管理决策支持系统登陆过程和处理机制如下:当用户第一次登陆时,浏览器会将用户名密码加密,并用post请求将密文发送到资源服务器。在资源服务器接收到请求之前,授权服务器会将请求拦截,获取请求参数的用户名密码,调用认证服务。认证服务将会根据用户名从数据库中取出用户真实密码,对比两者的差异,若认证通过则生成token令牌。最后,认证服务器将验证结果和生成的token令牌返回给客户端或前端浏览器,客户端或前端浏览器将令牌存储在本地,作为请求资源的鉴权凭证。
当前用户再次请求后台受保护水利专业模型服务时,会将上次登陆时储存在浏览器缓存中token值加到请求头字段中一起发送给后台指定REST服务。后台服务接收到请求之后,首先解析请求头信息,提取对象信息和token值并将其发送给授权服务器。授权服务器根据用户信息在数据库中验证token的合法性并对其角色进行判断,确认令牌合法性和对应角色之后再请求对应的资源服务获取用户所需资源,并返回结果给资源控制器[6];最后将数据返回到前端。
随着现代水利信息资源的深入开发和利用,越来越多的专业模块集成到水资源管理决策支持系统;同时,还会有其他的系统或者服务调用本系统的接口或者计算数据。在这种应用背景下,重新将两个系统进行整合不仅难度大,费时费力,延误系统应用的最佳时期;而且将本系统水利专业模型服务接口全部暴露,增加安全隐患。而基于token的鉴权方案可以完美解决这一实际难题。若有第三方系统或者应用需要接入水资源管理决策支持系统时,系统管理员会分配给此应用一个client_ID。当其请求受保护资源时,将会被授权服务器拦截。授权服务器判断请求角色,判断角色是否具有访问权限,若具有访问权限则发放token,第三方携带token便可以请求资源服务器的相关水利专业资源。系统鉴权流程如图4所示。
图4 基于token的鉴权流程示意
2.2 框架技术实现
水资源管理决策支持系统网络安全体系框架提供了一套完整的身份认证鉴权流程及方法,以此为基础,开展了系统集成工作,并研究了安全框架的实现技术。
(1)Spring Security。Spring Security是一个能够为基于Spring的企业应用系统提供声明式安全访问控制解决方案的安全框架。其提供了一组可以在Spring应用上下文中配置的Bean及相关的配置文档,借助IOC(控制反转),DI(依赖注入)和AOP(面向切面编程)功能将用户身份认证进行统一的管理,从而实现对资源访问的综合管控与维护[8]。Spring Security本质是提供了一整套完整的过滤器链,方便快捷的拦截请求,将生成的token值添加到请求头发送至下一服务。全面利用Spring所提供出的强大功能,为各企业当中所使用的程序自身安全性能提供了有效且快速的解决方案[9]。采用Spring Security技术,可以为快速为水资源决策支持系统网络安全体系提供网络请求拦截技术,方便自定义生成token值。
(2)OAuth2.0协议。OAuth2.0协议是一种专门针对跨平台应用之间认证授权而设计的框架协议,其最新版本OAuth2.0于2012年10月发布,称为RFC 6749[10]。该协议允许在应用之间通过重定向方式让用户显示而明确地参与授权过程,并且保护用户关键的凭证(口令)信息[11-12],允许第三方应用程序使用该用户的私有资源(如个人信息、照片、通讯录等),而无需将用户名和密码直接提供给第三方应用程序。OAuth2.0协议已经成为互联网上主流的开放平台授权方式,得到了众多互联网企业支持[10-14]。OAuth2.0协议为水资源管理决策支持系统的可拓展性提供了技术支持,可以在保护用户信息和资源安全的前提下允许第三方应用访问,使得系统的应用更加广泛。
3 基于token令牌的网络安全体系应用案例
金沙江下游—三峡梯级水库群是长江流域最大的水库群,水能资源丰富。针对该水库群防洪、发电的复杂需求,需研发一套满足各方面综合需求的水资源管理决策支持系统。系统的所有数据全部存储在三峡梯调数据服务器的数据库中,涉及长江上游干支流流域气象水文数据,河道、水库、机组基础数据,以及金沙江—三峡梯级各水库的各个时间段的流量、出力、水头、发电量和水库运行工况等数据。采用本文研究方法,搭建的基于token令牌的水资源管理决策支持系统网络安全框架如图5所示。
图5 水资源管理决策支持系统网络安全框架
图6 请求得到token值
图7 请求服务时携带token值
基于token令牌的网络安全框架体系已集成到金沙江下游—三峡梯级水资源管理决策支持系统,并经过安装、测试、部署和试运行,目前已经在中国长江电力股份有限公司宜昌梯级调度中心上线应用。系统相关界面和应用效果以及相应token生成流程如图6、7所示。
4 总结与展望
本文通过分析传统基于Session/Cookie的网络安全认证流程及其认证方式的不足,阐述了基于token的网络认证方式的优势,结合水资源管理决策支持系统搭建了一套网络安全体系,既保护了后台资源、数据,提升了系统的安全性,又避免了用户重复登陆的繁琐操作,提高了用户体验。目前水资源管理决策支持系统网络安全体系生成的token值由OAuth2.0内置实现,后续还可以对token值的生成算法进行改进,增强个性化,为使用系统的用户建立更加完善的安全屏障。