微型机与应用
WEIXINGJI YU YINGYONG
1999年3月 第18卷 第3期 vol.18 No.3



基于Client/Server模式的安全体系方案
刘玉莎　张晔
　　摘　要：通过开发同舟生命卡网上服务系统的实际经验，提出了在C/S模式下，针对系统安全性所采取的若干方法与技术，包括内核级透明代理、用户授权机制、智能型日志和备份恢复机制。
　　关键词：C/S　B/S　DML　网络安全
　　同舟生命卡网上服务系统是基于Internet/Intranet发展趋势，采用现今最为先进的开发工具，集结了C/S及B/S 2种体系结构，开发出的1套网上寻医问药智能型系统。拥有同舟生命卡的用户(分为贵宾和一般会员)，除了可以浏览各种医疗、保健、养生等信息之外，还实现了网上预约挂号、网上专家会诊、电子语音邮件等一系列服务。并计划在系统开发的二期工程中，充分结合多媒体信息技术，进一步拓宽网上医疗的服务范围，真正实现“足不出户，寻遍天下医”的远程医疗。
1　系统平台
　　图1为系统结构。

　　1.网络环境平台：内部网络采用快速交换以太网技术，并使用路由器和专用DDN线路与本地ISP相连。
　　2.服务器系统平台：采用IBM 330作为数据库服务器和Web服务器，内置256MB内存，双CPU结构，并采用双SCSI硬盘构成Raid1磁盘容错阵列实现系统热备份，以保证系统运行的高效、安全及可靠。
　　3.主机系统平台：采用联想PⅡ266作为工作站，内置32MB内存，2.3GB硬盘。
　　4.系统软件平台：服务器操作系统：WinNT 4.0；工作站操作系统：Win95、Win98;数据库服务器软件：Oracle 7.3.2；Web服务器软件：IIS 2.0；开发工具软件：Developer/2000 2.0,Backstage。
2　系统特点
　　1.C/S与B/S的完美结合。与C/S相比，B/S体系结构在多方面占有更大的优势(B/S结构的特点，请参阅其它资料)。然而，由于目前B/S开发工具的不成熟性，其在灵活性、安全性、效率等方面仍存在诸多问题。基于上述原因，系统被划分为支持会员使用的B/S系统(利用其高可维护性、跨平台性的特点)，及内部(包括各医院)使用的C/S系统(利用其稳定性、安全性及高效率的特点)。通过2种体系结构的有效集成，最大程度地发挥二者各自的优势。
　　2.与大型数据库Oracle的完美结合。尽可能地使用Oracle的完整性约束、触发子及存储过程，从而一方面提高了开发人员的工作效率，另一方面也大大减少了可能的网络I/O，增强了C/S系统的性能。
　　3.与多媒体技术的完美结合。由于会员/贵宾的照片及有些医疗资料(如X光片)须以图像形式入库保存，我们在系统的开发中充分利用Oracle所提供的非结构化数据类型“Long Raw”，为信息的多媒体化提供了必要的基础。此外，由于系统支持语音邮件，并将要支持一定的视频信息，客户机端配备了必要的话筒、耳机及摄像头等外设，力图以最快、最直接、最准确的方式将客户的现场状况，传递给医院、专家，从而真正发挥网上服务系统的潜在优势。
3　系统安全
　　由于这套系统涉及客户的各类医疗信息，而医疗信息在保密性、准确性及防篡改等安全方面较之一般信息，有着更高层次上的需求。因此，系统着重设计了一套严密的安全体系，并取得了卓有成效的成果。
3.1　内部系统安全(C/S系统的安全)
　　(1)内核级透明代理
　　2层C/S模式下的安全管理向来是一个众人关注的焦点。而其通常的做法是，直接为每一个系统管理人员或操作人员建立数据库帐号，并为其授权。然而，我们认为这种安全体系有着潜在的问题，尤其是在一个复杂系统中，由于存在着大量的数据库实体及拥有不同操作权限的用户，而每个用户对数据库实体的操作可以是增、删、改、查的任意组合，因此即使使用角色或工作组的方式为其授权，也会显得相当复杂，甚至存在着潜在的安全漏洞。而一旦用户绕过应用逻辑，直接利用自己的帐号操作数据库，那么这些潜在的漏洞将进一步暴露出来，直接威胁系统的安全。
　　针对这些问题，我们所采取的解决方案是：每个数据库应用只建立一个真正的数据库帐号(本系统为root)，它具有对系统应用所涉及的所有数据库实体进行操作的全部权限。与此同时，为每一位系统操作人员分别创建了1个“应用系统帐号”，实际上只是数据库中创建的名为USERS用户表里的1条记录。这样，每次应用程序在客户端执行时，首先会以root登录数据库，然后执行自行编写的登录程序，与USERS表结合，实现应用系统登录。
　　这种安全体系使得应用系统成为数据库的直接用户，而应用系统的所有操作人员(包括系统管理员)则是数据库的间接用户；换言之，应用系统除了完成其应用逻辑之外，还将系统用户和数据库彻底隔离开来，成为数据库的一道坚固的“防火墙”。由于在这种安全体系中，真正的数据库帐号泄露及扩散的可能性几乎为零，所有的用户必须通过应用系统这一“单点”访问数据库，所以可以得出结论：“只要应用程序是安全、可靠的，则整个系统是安全、可靠的”。这样，系统开发人员的精力可以高度集中到应用程序安全性的编写上。
　　然而，正是由于应用系统接管了原来数据库管理系统的一部分工作，因此也增加了一部分工作量。比如为了保护用户口令，USERS表中的口令字段需要加密保存。为了保证口令在网络上的安全传输，编写应用程序时必须遵守“先加密、后传输”的基本准则。
　　(2)增强的用户授权机制
　　由于在这种安全体系中，应用系统成为隔离用户和数据库的“防火墙”，其本身就必须具备相当的安全特性。尤其是用户授权管理机制，其严密性将直接影响整个系统的安全。
　　基于此，我们从功能出发将整个系统细分为若干个可分配的最小权限单元，这些权限具体表现在对数据库中所涉及的表、视图的数据操纵(DML：插入、修改、删除、查询等)的划分上。然后再运用角色或工作组的概念，结合各种系统使用人员的工作性质，为系统创建了4类基本等级：系统管理员、高级操作员、一般操作员、及医院操作员，并为每个等级相应地赋予了不同的权限，以此来简化权限管理工作。此外，为了增加系统安全管理的灵活性，授权管理模块还可以对属于某一等级用户的权限作进一步定制，达到所有权限均可任意组合的效果。
　　同时，为了进一步提高系统管理员的工作效率，系统为系统权限、用户等级及每种等级所对应的默认权限组合都建立了数据字典，以便在不同的应用环境下，管理员都能方便地增加等级，或改变某种等级的默认权限。此外，为了能暂时封锁某一帐号的使用，安全系统还提供了帐号冻结及解冻的功能。
　　通过这种方式，在统一管理之下，又具有相当的灵活性，有助于系统管理员更为方便、更为严密地控制整个系统的安全。
　　(3)智能型日志
　　日志系统具有综合性数据记录功能和自动分类检索能力。在本系统中，日志将记录：自某用户登录时起，到其退出系统时止，这段时间中所执行的所有操作，包括登录失败操作、对数据库的操作、及系统功能的使用。日志所记录的内容有执行某操作的用户名、执行操作的机器IP地址、操作类型、操作对象及操作执行时间等，以备日后审计、核查之用。
　　在这个系统中较有特色的是，不仅可以分类检索日志内容，系统还能根据已记录的日志内容，通过智能型推理，自动找出系统中可能存在的不安全因素，并实时触发相应的警告信息，以及时通知系统管理员及用户。以下为几种智能性检查：
　　①潜在“黑客”攻击检查
　　对于那些企图登录系统的“黑客”，在其3次登录失败后，系统便会自行关闭。由于使用了智能型日志系统，系统管理员便会及时得知有“黑客”攻击，尤其是针对同一帐号的攻击，在若干次尝试失败以后，系统将会自动冻结该帐号。在与帐号持有人取得联系后，管理员便可以根据日志文件的具体内容，如攻击点的确切位置、攻击时间等，采取相应措施，如更改帐号口令、封锁工作站等，以确保系统的安全性。
　　②单帐号多用户检查
　　在同一时段，如有若干个以同一帐号登录系统的用户出现，则说明某一帐号可能已被泄露，这在一定程度上将对系统安全构成威胁。为此系统将自动监视、统计这种情况，并及时通知系统管理员，以杜绝帐号扩散的可能，防患于未然。
　　③非工作时间操作检查
　　对于8小时工作时间之外的任何操作或是被管理员定义成非工作时所执行的任何操作，智能型日志也会视之为可疑现象而警告系统管理员。
　　④完善的备份及恢复机制
　　日志虽能记录任何的非法操作，然而要真正使系统从灾难中恢复出来，还需要1套完善的备 份及恢复机制。
　　为了防止存储设备的异常损坏，采用了可热插拔的SCSI硬盘所组成的磁盘容错阵列，以RAID 1的镜像方式进行系统的实时热备份。
　　为了防止人为的失误或破坏，还建立了强大的数据库触发器以备份重要数据的删除操作，甚 至更新操作，保证在任何情况下，重要数据均能有效地得以恢复。具体而言，对于删除操作 ，我们将被操作的记录全部存储在备份库中。而对于更新操作，考虑到信息量过于庞大， 仅仅备份了所执行的SQL语句。这样，既能查看到被更新的内容，又能相当程度地减小备份 库的存储容量。
　　而在需要跟踪、追溯数据丢失或破坏事件的全部信息时，则将系统日志与备份数据有机地结 合在一起，真正实现系统安全的“万无一失”。
3.2　外部系统安全(B/S系统的安全)
　　由于本系统是C/S和B/S的结合。因此，除了在C/S内部系统上设置了各种安全屏障外，在B/S 上也应当进行相应的安全防范措施。
　　为了防止应用系统遭受外部攻击，设置了Proxy Server，以提供代理服务器及防火墙的功能 。此外，考虑到使用网上服务系统的互联网用户在身份认证、数据传输时的安全问题，我们 运用了“一次性身份认证”的概念，自行开发了1套广域网身份认证系统。其基本构架如下 ：由Oracle数据库服务器产生随机数；再由客户端Java用随机数对用户PIN进行加密运算； 最后再将加密后的PIN及随机数作为参数传递给Oracle数据库中负责身份验证的存储过程进 行校验。这样，用户认证信息无论在内部网，还是在外部网上都是以密文的形式存在，而且 具有1次性的特点，具有极高的安全性。
　　在系统的二期工程中，我们将进一步增强B/S结构的安全性，设立系统认证中心，由其产生 并分发传输密钥和数字证书，以实现数据的加密存储、加密传输与数字签名技术，防止邮件 、医疗信息等被篡改或伪造。
　　同舟生命卡网上服务系统，是集结了目前最流行的C/S及B/S体系结构，并利用了国内外最先 进的技术和产品所建立起来的信息服务应用。随着用户在系统实际应用中需求的不断提高， 如何提供更为完善和安全的网上服务，将是我们开发者不懈追求的目标。 
作者单位:上海同济大学计算中心(200092)
参考文献
　1　Tanenbaum A S.Computer Networks(Third Edition).Prent ice-Hall International,Inc.,1997
　2　Strom D.Creating Private Intranets:Challenges and Prospects for IS.http :　　　//www.strom.com/pubwork/intranetp.html,1995
　3　北方交通大学自动化系统研究所.Oracle 7使用技巧.北京：科学出版社，1996
　4　刘清玉.计算机网络规划设计及实施方案.计算机与通信，1998；(3)
(收稿日期：1998-09-28)
