摘要
2016年7月公司承担了某企业集团财务共享中心系统项目的开发,我在该项目中担任系统架设计师职务,主要负责设计系统框架和指导后续开发与实施。该项目要求集团对选择的多分中心模式进行有效支持,既要满足集团级统一标准和监管的要求,又要能对各二级单位财务共享业务进行个性化支撑,并有利于未来的系统运维、数据和业务标准化管理,从软件架构、集成架构、部署架构等方面对系统建设目标进行支持。因项目主要业务都是围绕资金等敏感数据展开,所以在整个项目开发过程中系统的安全性和保密性至关重要。本文结合作者实践以财务共享中心系统为例,讨论信息系统的安全性与保密性,包括网络隔离、用户登录控制、接口授权、数据加密、日志跟踪、数据库备份等方面。
一、项目背景
我所在的单位是一家长期致力于为政府部门和企业客户提供管理软件、数字传播及互联网综合信息服务的公司,2016年7月公司承担了某企业集团财务共享中心系统项目的开发,以下简称财务共享系统,我在该项目中担任系统架设计师职务,主要负责设计系统框架和指导后续设计与实施。该项目依据集团公司现状及建设必要性,围绕“搭建一个财务共享服务平台”、“建成两级财务共享服务中心”的核心要求,结合集团公司信息化总体架构制定架构设计方案。财务共享中心系统的部署方式须对集团选择的多分中心模式进行有效支持,既满足集团级统一标准和管控监控监管的要求,又能对各二级单位财务共享业务进行个性化支撑,并有利于未来的系统运维、数据和业务标准化管理。因此需要从软件架构、部署架构、集成架构等方面对系统建设目标进行支持,并考虑安全性、保密性等因素。
二、面临的安全与保密性问题
因项目主要业务都是围绕资金等敏感数据展开,所以在整个项目开发过程中系统的安全性和保密性至关重要。系统不安全因素主要包括安全威胁和安全隐患两部分。安全威胁包含两方面:一是对系统中软件和数据的威胁,主要是合法用户误操作造成数据丢失和内部人员越权使用软件;二是对硬件设备的威胁,主要是不可抗力因素造成的数据丢失、设备损坏和线路中断等。安全隐患主要是网络安全隐患,协议开放性以及服务器提供了不安全服务等情况给非法入侵者提供了条件。
三、技术方案
在系统架构方面,因财务共享系统本身的部署方式,以及对可用性、易维护性和可扩展性的要求,我使用了多层分布式结构开发此系统。在多层分布式结构中,客户端和服务器之间可以加入一层或多层应用服务程序,开发人员可以将应用的业务逻辑放在中间层服务器上,而不是客户端,从而将应用的业务逻辑与用户界面隔离开。中间层的出现使得客户无法直接访问底层数据库服务,提高了数据库的安全性。
在对软件和数据的威胁方面,在数据交互界面上我们使用了友好的导航提示和验证措施,对用户操作流程做了严格把控,在数据提交前、提前中和提后做过程审核,最大程度避免了用户误操作造成的数据问题;在权限控制上我采用了严格的角色控制策略,我们把用户按组织身份和业务身份划分出不同角色,不同的角色对系统中的基础数据资源、单据资源、工作流程、工作看板、业务审核等资源都有严格的设置。另外因为系统采用了多层分布式架构,我在中间层上把业务按组织和角色分担到不同的物理服务器上,从物理层面就把数据隔离开来,通过控制策略可以指定用户登录后只能访问他应该访问的服务器资源,而当需要跨服务访问资源时需要走工作流审批流程,这样就在一定程度上避免了用户越权使用而导致系统数据错乱。
在对硬件设备威胁方面,主要是提高服务的高可用性,在系统部署方面搭建集群,Nginx是一款轻量级、占用内存少、并发能力强的Web服务器和反向代理服务器,借助这款软件搭建集群与负载均衡环境,能保证系统安全、可靠、高效的运行。当集群中某个节点发生故障会迅速切换到另一个节点而不影响用户使用系统。在数据库层面采用了双机热备的运行方式,在服务端运行一主一备两台数据库服务器,数据库之间互为主从热备保证数据的一致性,主备服务器间采用“心跳”机制来检测对方的状态,当一台机器出现故障时,自动切换到另一台服务器,从而保证业务系统的可用性。
在安全隐患方面,我主要从网络安全层面对用户登录和跟第三方系统交互做了控制。虽然集团内部有自已的一套专用网路,而且80%的业务往来都是在专用网上进行,很大程度上解决了网络安全问题,但还有20%的业务可能需要用户从外网登录或跟外部系统交互。对此我们针对外网的用户登录使用https加密传输技术,https在不安全的网络上创建一条安全信道,使用适当的加密包,在服务器证书可被验证且可被信任时对传输的数据提供合理的保护。针对和第三方系统的交互我采用了OAuth2.0开放协议,OAuth是一个开放标准,允许系统无需将用户名和密码提供给第三方系统的情况下,让第三方系统访问该系统上存储的私密的资源。OAuth2.0有四种模式:授权码模式、简化模式、密码模式和客户端模式,其中功能最完整、流程最严密的是授权码模式,也是我采用的模式。
在系统配置安全层面,因财务共享系统启动过程中需要初始化数据库链接信息,管理员控制台密码等敏感信息,而这些信息都是放在服务器某个目录下指定文件中。为了配置文件的安全性,我们在明文配置之后会在系统启动过程中对配置文件做加密处理。同样的,在数据库中用户的登录密码会采用MD5方式加密,用户的其他敏感属性也会采用对称加密方式加密。同时在敏感业务数据安全方面,不管是用户操作还是和第三方系统的交互,我们都会记录下操作日志,以便在系统出现问题时有可追踪问题的途径。
四、总结
由于系统设计得当,并在项目遇到问题时采用了有效的方法解决,最后财务共享中心系统项目按计划完成,顺利投产。但在总结经验的同时我们也发现了设计中的不足之处。
在网络层面,外部用户https方式登录系统后操作系统会比http方式慢,对此我考虑对系统业务按数据重要程度重新做区分,比如登录和对敏感数据查询与修改的时候才用使用https方式异步从其他服务上获取数据展示,而普通的系统操作还是使用http方式;在与第三方系统做数据交互时授权部分也带来一些性能问题,尤其是在数据量大,交互频繁的时候。我考虑是增加信任机制而减少授权流程,一方面使用OAuth2.0的客户端模式,另一方面在专用网上放置一台前置机,前置机可与外网互通,在前置机上我们部署一套ESB系统,ESB除了提供总线服务以外再在上面扩展一个应用注册功能,第三方应用需要在此功能上注册绑定IP或域名等信息,而且访问时携带这些信息才可以访问前置机上的ESB,通过这种信任机制从而增加对系统的交互性能;
在数据灾备方面也有考虑不周之处,一开始我考虑到网络原因会带来传输等问题,采用做增量冷备份方式传输到异地存储,但毕竟不是实时备份,一旦出现不可抗力因素造成整个机房数据丢失,再恢复也会丢失一部分数据,最好的方式是异地热备,但从项目上对技术和硬件资源等方面的投入成本考量,我考虑与电信合作使用更专业的云备份方案。云备份是一种基于云计算的应用程序,能够为系统提供自动的文件、应用程序、虚拟机或服务器备份,并安全地存储,并在灾难发生时,能够恢复所有数据,云备份是系统数据和业务连续性的保障。