设为首页收藏本站优领域

优领域

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
优领域 优领域 IT领域 编程开发 软件工程 查看内容

软件生命周期中的信息安全管理

2014-5-22 13:56| 发布者: dzly| 查看: 731| 评论: 0|原作者: 周 蓓

摘要: 信息安全越来越受到重视,而数据或多或少地存在于系统之中,为了确保系统和数据的安全,信息安全策略和思想就必 须融入到软件生命周期中去,信息安全也成为软件质量的一个重要组成部分。在当前流行的信息安全评价体系中,无不直接或 间接涉及到软件生命周期中的信息安全管理问题,而各个评价体系有各有侧重,本文综合各评价体系的要求,总结为九个方 面,就如何全面地将信息安全管理融入到软件生命周期中,以满足企业自身或第三方评价需要提出了设计和实施建议。
  0 引言
  软件生命周期,或系统生命周期(System DevelopmentLife Cycle, SDLC),描述了软件从产生直到报废的生命周期,是软件工程中的一种思想原则。而信息安全指的是包含系统及系统信息免受未经授权的访问、使用、更改或中断,确保信息的保密性、完整性和安全性。为什么要把信息安全融入到软件生命周期中呢,原因主要源于以下几个方面:(1) 由于系统质量问题破坏或违反信息安全可能带来非常严重的后果,需要大量的时间、金钱和精力去减轻和弥补;(2) 虽然很多公司意识到信息安全的重要,但更多的关注于网络层面或者病毒层面而忽视了应用层的信息安全管理;(3) 据Gartner Group 统计,75% 的信息安全事件源于与应用层信心安全管理相关;(4) 在软件生命周期的前期对信息安全隐患进行识别和纠正的成本远远小于系统实施后对系统进行修改。
  因此,采取必要的控制措施,确保开发出来的系统可以满足公司整体信息安全的需要,就成为了提高系统质量以及信息安全管理的必然要求。
  1 软件生命周期中信息安全管理控制
  在各主流IT 或信息安全评价体系中,都或多或少对软件生命周期中的信息安全控制进行了要求和规定,本文综合了流行的ISO27000,Cobit5, PCI-DSS 等评价体系,结合国家信息安全标准,及审计咨询公司常用的SOX, SAS70 等第三方评价标准,就如何设计与实施软件生命周期中信息安全的相关控制点归纳总结如下1.1 软件生命周期中信息安全的整体要求
  (1) 制定并发布正式的软件生命周期控制文件:明确说明开发过程的控制方法和人员的行为准则,并应充分考虑对信息安全方面的要求,确保开发出来的系统可以满足公司整体信息安全的需要、相关法律法规的信息安全要求,以及特殊部门或流程的信息安全需要。
  (2) 软件生命周期中对信息安全的总体要求:虽然由于系统所对应企业、部门、业务或流程的差异,每个系统的安全要求有所不同,例如通常来讲,金融行业对安全的要求较高,金融行业里,涉及客户信息、财务信息的系统安全要求较高等等。每个企业、部门必须根据自己的流程评估风险,确定对数据完整性、安全性、可用性的要求,从而进一步确定信息安全要求。
  1.2 对环境的要求
  (1) 确保开发环境与实际运行环境物理相分离,开发环境应该由一系列足以支持开发工作且尽量与生产环境接近的设备搭建而成,所有的开发和测试工作均应该在此开发环境中进行。
  在实际工作中,也可以实行开发环境、测试环境及生产环境的分离控制,或开发环境、测试环境、用户验收测试环境及生产环境的分离控制。在上述环境中,开发环境可以相对较弱,以可以支持代码开发、进行模块测试及基本的集成测试为标准;测试环境,特别是用户验收测试的测试环境,则要求较高,应与实际环境保持一致或尽可能接近。
  (2) 对开发环境(及测试环境)实施安全控制:例如未经授权的人员不得访问开发环境(测试环境),对开发(测试)中的软件实施严格的版本控制,开发(测试)环境的机器必须安装杀毒软件并及时更新病毒库,并及时对操作系统及相关应用软件进行补丁修正和升级。
  1.3 对人员的要求
  (1) 软件生命周期中的工作人员必须具有足够的专业胜任能力及职业道德素养,足以从事相关工作。
  (2) 对开发人员和测试人员实施职责分离,开发人员未经授权不得访问或修改生产环境的程序或数据。
  1.4 业务需求阶段
  在业务需求制定阶段,应注重对信息安全方面的需求制定。
  在业务需求书中,应明确对系统安全的详细要求,并在系统设计阶段开始之前,由各利益相关方(含信息安全的负责人)书面确认。业务需求阶段完成后,任何对系统安全需求的修改,也应视为对业务需求书的修改,需经过正式的系统变更流程。
  1.5 系统设计阶段
  (1) 对系统进行整体设计和详细设计,通过分析系统的数据流,包括数据录入、系统内部模块间的数据传输、信息存储、数据库访问及管理、系统间数据传输,、数据输出等,确保实现所有过程中对数据的全面保护,特别是对特定业务的特定数据进行保护,例如密码,客户信息,财务数据等,对重要数据的存储和传输设置权限和校验,并进行加密。
  (2) 在软件的应用层面应至少包含如下的控制设计:i)输入检查:对系统的输入数据进行验证,比如设置强制输入完成才可进一步处理的字段;对输入数据的类型或范围进行检查,例如日期;对输入数据的长度进行检查,例如手机号码位数;对数据进行正确性校验,例如利用身份证校验码策略检查身份证号码,对比身份证号码与出生日期。ii) 数据处理过程中的检查:对系统处理过程中的数据进行检查,比如在自动化转换或传输过程中,比对数据记录的总条数和数据总和;设置流程,提醒将系统数据与纸质数据进行比对验证。iii)输出检查:对输出结果的合理性进行系统检测,以及设置流程提示将系统输出数据与手工证据进行核对等。
  1.6 系统实施阶段
  制定代码编写安全规范,要求开发人员参照规范编写代码;严格禁止不安全的实施方法,例如将用户名或密码编写在程序中,使用未经审核过的代码包,使用未授权的网络工具等。对源代码的访问和修改必须严格控制,例如通过配置管理工具进行代码访问及代码版本控制。
  1.7 系统测试阶段
  (1) 系统测试整体要求:对系统测试验收的控制方法和人员行为准则应进行书面规定,确保系统在开发期间直至验收需对软件、硬件、服务等元素进行一系列的测试,确保系统及数据的完整性和可用性。对源于生产环境的测试数据去敏感化,如客户身份证信息等,在传输过程中进行加密,并确保在测试后被完全清除。
  (2) 测试通常应覆盖业务需求书中的所有要求,包括系统功能、软硬件性能、平台兼容性、系统容量、系统恢复等,也应特别保护对信息安全的测试,如防攻击测试、穿透性测试等。
  (3) 用户接受测试:接收测试的测试人员应由非开发人员担当,且必须包含业务人员。测试范围应涉及系统所有的功能,包括数据库及操作系统。接收测试也应特别注意对系统安全方面的测试,例如审查关键代码,查找后门程序及穿透性测试等。
  (4) 测试结果:测试结果需书面记载,与用户期望结果进行比对和确认。此记录及确认中需包含对信息安全方面的测试结果,确认测试结果符合系统设计及公司整体的信息安全需要,或已经授权采取了充分、恰当的补偿性措施。
  1.8 系统上线
  (1) 系统上线前需进行如下确认,信息安全评估已充分进行,安全方面的缺陷已被充分确认及记录,系统的性能和容量可以满足要求,所有与系统相关的补丁或更新已经实施,所有开发中遇到的问题已得到妥善解决,建立了充分恢复措施,测试数据已被擦除,服务水平协议已经建立,以及各利益相关者已经对系统上线做了批准等。
  (2) 系统上线时需进行的操作:对初始数据迁移或输入的确认,对技术人员及用户进行培训,设置恰当的上线窗口期并对可能产生的业务中断进行准备,明确新旧系统交接程序,制定详细的系统交付清单,提供软件的使用指南,确保上线后对系统提供持续性支持(例如IT 服务台)。另外,对旧系统信息,包括系统配置、操作手册、支持软件、系统数据等进行归档。
  (3) 上线后审核:系统运行一段时间后对系统进行评估,评价系统对业务的满足情况,其中包含信息安全的符合情况、信息安全控制措施的运行效果和效率,发生的信息安全事故以及潜在的需要改进的信息安全措施。
  1.9 质量控制
  在整个软件生命周期中实施质量控制以确保信息安全策略的有效实施,包括评价系统风险(例如与业务需求、技术、效果、成本、时间相关的风险),评估及定义系统的安全需求,且在整个软件生命周期的节点上进行检查,以确保安全需求在开发的系统中进行了充分实施。
  2 结论
  本文通过九个方面,就如何在软件开发生命周期中进行信息安全管理,提出了较为全面和系统的设计与实施办法,可以满足当前流行的绝大多数信息安全评价体系的要求,对企事业单位的信息安全和软件质量管理有一定的参考意义。__
  

网站统计|优领域|优领域 ( 粤ICP备12011853号-1 )  

GMT+8, 2019-6-16 17:42 , Processed in 0.043803 second(s), 12 queries .

Copyright © 2008-2014 优领域

回顶部