论软件的安全性设计

摘要:

2018年5月我参与了某省电信智慧BSS系统的运营管理平台(NOSP)项目的开发。该项目为解决BSS系统的日常运营中提前发现故障、快速定位问题、保障服务稳定运行等方面提供全方位的软件支撑,我在该项目中担任系统架构师,主要负责系统的总体架构设计和技术选型。本文以该项目为例,主要论述了安全技术和解决方案在项目中的具体应用。通过设置防火墙和加密技术保证内部网络的安全。在应用层采用RBAC模型和Token机制,解决了系统认证环节安全性;在数据层采用容灾备份和加密机制,解决数据抗突发风险的安全性问题;事实证明,采用这些安全技术后,系统在安全性、可扩展性、实时性等方面都达到了预期目标。系统自2019年2月上线后运行平稳,得到了领导和用户的一致好评。

正文:

随着2016年中国电信提出构造新一代运营商领先的智慧BSS3.0,以满足未来5年以上的市场营销与服务要求。2017年某省电信采用集团规定的平台+应用的方式重构了BSS核心系统,由于重构后的BSS系统涉及到PaaS平台的众多中间件和18个能力中心;同时采用容器化、集群的方式部署在超过140台物理主机、2000个容器中。整个BSS系统在性能和可扩展性等方面得到了极大的提升,但也增大了系统的运维难度,急需配套的运营系统来从整体上全方位的掌握BSS运行情况。由于我们不仅承建了该省的BSS核心系统,同时我们还深度参与了集团PaaS平台的开发,因此2018年5月我公司被该省电信委托建设新一代智慧运营管理平台(NOSP),以下简称该系统。该系统包含资源管理中心、组件管理中心、数据运营中心、监控告警中心、运营日志中心、运营分析中心等子系统。我以系统架构师的身份负责系统的总体架构设计和技术选型,7月份完成架构设计工作和基础开发框架的搭建,整个项目历时9个月,2019年2月顺利上线并通过验收。

信息安全体系结构包括鉴权服务、访问控制、数据完整性、数据保密性和抗抵赖性。其中鉴权服务一般采用用户名+口令、数字证书等方式实现;访问控制通常采用RBAC基于角色的访问控制;数据完整性包括阻止对介质访问的机制和限制非授权修改的机制,前者一般采用隔离、访问控制列表、路由控制,后者一般采用数据前面、数据指纹等方式;数据保密性一般通过加密实现。

该系统作为BSS核心系统的运营支撑系统,包括CRM应用性能监控、各类订单的状态统计、慢SQL的监控、配置数据的一致性实时同步等核心服务,涉及到业务核心报表、主机和网络等底层资源、卡号等非实物资产数据,这些核心数据要求必须在安全可控的环境下访问。所以我们在设计阶段考虑从网络部署、数据库和应用层三个维度采取了相对的解决方案,具体阐述如下:

  1. 网络部署安全

首先,因为网络和硬件是系统的运行基础,也是很多外部攻击的首要目标,所以我们在设计阶段合理规划,将网络拓扑划分为外部网络、DMZ区和内部DCN网络三部分。我们将应用服务器和数据库服务器统一部署在内部DCN网络中,在DMZ区域部署反向代理服务器Nginx集群,Nginx负载均衡到应用服务器。为了防止来自外部的恶意攻击,我们再在外部网络和DMZ区网络之间设置了硬件防火墙。在Nginx集群中,我们配置只需要暴露的VIP,这样可以尽量降低我们内部应用服务器被攻击的可能性。由于我们应用采用前后端分离方式开发,前端静态页面和其他资源都部署在Nginx集群中,所以我们在Nninx中启用了HTTPS安全协议,通过建立信息安全通道,来保证数据传输的安全,防止内容被第三方冒充或者篡改,确保数据的完整性。对于DCN网络中的应用服务器和数据库服务器,我们限制不能直接通过IP地址访问,必须在4A系统登录认证后,通过跳板机才能访问,阻止了外界通过内部客户端代理的访问对服务器发起攻击。

2.应用层安全

其次,我们整个系统采用微服务架构风格,每个子系统采用了3层B/S架构风格。由于涉及的子系统人员和角色众多,我们采用RBAC授权模型,这样既增强了系统安全性,满足业务需求,同时也减轻了角色维护的负担。我们直接采用公司的架构中心已封装了统一认证组件,该组件在登录页面提供了用户名、密码和验证码,或者手机和动态验证码结合的访问方式,以此来达到防止非法访问的系统认证安全。密码在入库时采用MD5+salt加密,这样即使数据库中的密码泄露,也不会被解密。用户登录后访问具体的功能,需要调用API地址,所以API接口设计是该系统通信的安全基础,为了验证访问的有效性和时效性,防止外部人员非授权登录直接调用和窃取信息,我们采用Token机制保障每次调用的安全性,即在统一认证组件登录后,会生成token令牌,然后经过微服务的API网关组件调用API时,会获取到该token,解析出其中的时间戳和用户ID,然后调用统一认证组件的接口来验证其是否已登录和时间戳的有效性,充分保障了接口调用的安全。

  1. 数据层安全

最后,数据是整个系统平台的核心,其中涉及大量重要的信息资产,安全不容忽视。我们主要从数据存储、数据访问和数据容灾几方面进行了设计。由于该系统实现了配置数据的集中管理,包含了例如卡号信息和服务器访问信息等敏感数据,为了防止泄露,我们在存储时进行了加密处理。虽然在处理中损失些性能,但是,提高了数据的安全性和保密性。在数据访问层面,我们的应用程序经过统一访问层组件UDAL才能访问MySQL数据库,在统一访问层设置了分表、分片策略和路由控制机制,实现了逻辑透明性,具有很好的伸缩性;同时在统一访问层设置了允许接入的应用服务器和容器的IP列表;在MongoDB数据库也设置了允许访问的IP白名单列表,同时开启了安全认证。通过限制IP列表的方式可以有效提升数据的完整性。针对我们采用的MySQL数据库和MongoDB数据库,采用主备集群的方式部署,还制定了定期的全量、增量、差量的备份计划,保证数据能及时恢复,充分保证数据抗突发风险的安全。

实践证明,采用以上技术后,系统达到了安全性的要求,该系统已于2019年2月上线运行到目前为止,各服务运行状态良好,能够较好的满足用户的要求,在护网行动期间也没发现安全漏洞,得到了客户和领导的一致认可。目前已完成了所有存量资源数据的接入,可以满足CRM和计费系统的日常运营要求,在月底业务高峰期间,能定位和发现存在性能瓶颈的服务和故障节点,指导相应系统及时采取扩容和灾备方案。但在系统开发过程中也面临两方面不足之处:第一在资源管理的数据建模阶段,没有完全识别出所有用户需求,导致集群模型在CRM系统和PaaS平台上理解有偏差,资源树的展现时无法串联;后期我们重新定义Mongodb文档的字段,修改相应功能的查询语句,就满足了要求。第二由于配置管理是采用蓝鲸开源系统二次改造而来,在多模型关联查询时,性能有待改善;我们采用线程池和并发查询策略直接操作蓝鲸系统的数据库,使得查询性能控制在1s以内。

通过该项目的顺利实施,让我在系统架构设计方面有了新的收获和提高,同时也还需要加强对知识结构的梳理,以及拓宽知识和技能的深度和广度,以便做到融会贯通,更好地做好下一个项目。

来源:正说杂谈

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月15日
下一篇 2019年11月15日

相关推荐