信息系统开发与维护安全管理是为了提高软件开发安全水准,规范软件安全开发过程活动,适用于信息系统软件开发生命周期的安全技术及安全开发过程的全面管理。
01.软件开发生命周期及安全活动
整个软件开发生命周期分成六步:软件需求、软件设计、软件实现、软件上线、软件的运维、软件的废弃。在整个软件开发生命周期中的安全活动分成四类:安全目标确定、安全风险评估、安全控制实现、安全运行管理。
-
在软件需求与设计阶段进行的安全活动:安全开发培训、安全风险评估、安全需求分析、安全目标确定、安全需求审查、安全设计、设计审查。
-
在软件实现阶段进行的安全活动:安全设备采购、安全编码、安全测试、代码审查、过程文档审查。
-
在软件上线阶段进行的安全活动:配置检查、工具扫描、渗透测试。
-
在软件的运维阶段进行的安全活动:安全设计、安全管理培训、管理流程检查、工具扫描、渗透测试、安全监控、日志审查、风险分析、安全运行管理。
- 在软件的废弃阶段进行的安全活动:剩余信息检查和描述各项安全控制内容。
02.软件需求阶段安全管理策略
软件安全需求是为保障实现业务功能而对安全需求分析和安全需求方案制定提出机密性、完整性和可用性的要求。
在安全需求分析阶段,需进行业务安全性和合规性分析,确定软件的业务安全需求。在安全需求方案制定阶段,软件开发人员通过风险分析,提出软件的安全目标并最终体现在安全需求方案中。在软件安全需求阶段的主要安全活动有:
-
开发安全培训:对业务人员及技术人员提供安全需求、安全控制、开发流程、安全意识、安全技术方面的必要培训。
-
业务需求分析: 业务人员提出综合业务的合规性和安全性方面的需求,包括但不限于:数据安全需求、访问控制需求、交易安全需求、审计要求等。
-
安全风险评估:针对系统运行环境、业务合规性和安全性的需求进行分析,对系统进行初步风险评估:分析安全环境、标识资产及其面临的威胁、确定初步的安全目标。
-
安全需求目标:结合业务安全需求和合规性要求,提出应用系统的安全目标,形成安全需求方案报告。
- 安全需求审查:根据安全风险评估结果,制定适宜的和安全的需求方案报告。
03.软件设计阶段安全管理策略
在软件设计阶段,需要根据安全需求方案确定的安全目标,对初步风险评估确定的控制措施进行方案设计,其中包括概要设计和详细设计两个阶段。
- 概要设计阶段确定应用系统的安全整体架构,包括但不限于:安全体系结构设计、各功能块间的处理流程、与其它功能的关系、安全协议设计、安全接口设计等。
-
详细设计阶段作为安全功能的程序设计阶段,应当直接指导安全功能的编码工作。包括但不限于:模块设计、内部处理流程、数据结构、输入/输出项、算法、逻辑流程图等。
在软件设计阶段的安全活动主要有:
- 详细风险评估:从确定需要保护的信息资产出发,分析系统面临的脆弱点,从而确定系统风险。
- 控制措施选择:根据安全目标及详细风险评估的结果,从应用设计的角度选择必要的安全控制措施,并从成本、安全性、用户体验等方面综合选择最佳的控制措施。
- 安全技术实现:完成安全控制措施技术实现的设计工作,技术实现分为三步:结构设计、模块设计及详细设计。
-
设计审查:检查安全设计是否符合安全需求。
04.软件实现阶段安全管理策略
在软件实现阶段,需要根据安全设计规格说明书的要求,技术人员通过编写源代码,实现应用系统的目标码。在此过程中需要进行充分的测试工作,以保证软件的开发质量。软件实现主要包括开发与测试两个阶段:
- 开发阶段是编程人员通过书写程序语句、指令或编程语言进行编码,编码经编译器编译成计算机可以运行的二进制目标代码。
- 软件测试是根据软件开发各阶段的规格说明和程序的内部结构而设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。包括单元测试、集成测试、系统测试、验收测试。
在软件开发与测试阶段的安全活动主要有:
- 安全设备采购:通过购买相应的工具、软件或者设备来保障设计安全。
- 源代码规范:为了实现软件开发的一致性和规范化,需要定义相应的源代码编写原则和规范。
- 代码审查:根据业务控制风险的要求,应当对重要应用系统的输入/输出模块、数据库操作模块、身份鉴别与访问控制模块、异常处理模块和加密模块中进行必要的源代码审查,以防止开发人员舞弊行为的发生。
- 应用软件安全测试:对应用软件进行必要的代码静态测试、渗透测试和性能测试。
-
开发文档检查:包括风险分析报告、需求规格书、概要设计、版本控制、测试报告等。
05.软件上线试运行阶段安全管理策略
应用系统通过用户验收,并且在相关配套资源到位后,需求部门依据验收报告,提出系统上线申请,与运行部门、使用部门、开发部门会签后,方可实施上线。上线一般包括上线申请、上线审批、数据转换、上线试运行三个阶段。
在软件上线阶段的安全活动主要有:
-
配置检查:软件环境配置检查(如:操作系统/应用平台/网络/物理)、软件配置检查、数据库配置检查、密码设备/模块配置检查。
-
建立试运行环境:在系统初始上线时,应当把应用系统部署在试运行环境之中,利用真实的数据及生产环境进行最后适用性测试。
-
维护性开发:为确保系统的正确运行,在上线后的一段时间内,软件开发部门派人到运行现场参与维护,现场维护期的长短可根据系统运行的实际状况而定。
-
工具扫描:在试运行阶段,对网络、系统/平台、数据库、应用进行工具扫描,以发现生产环境可能存在的风险。
-
应用系统安全检查:对应用系统从系统开发、部署与运行管理、身份鉴别、访问控制、交易安全、数据保密性、备份与故障恢复、日志与审计等方面进行安全评估。
- 渗透测试:利用已知漏洞和社会工程的方法,模拟入侵攻击,以揭示可能存在的安全风险。
06.软件正式运维阶段安全管理策略
试运行结束后,在确定应用系统稳定可靠的基础上,可以正式启用。在软件运维阶段的主要安全活动:
- 安全管理培训:安全管理流程、软件安全维护、系统日常安全管理、应用系统数据交换、数据的备份与测试等。
- 安全监控:对应用系统操作日志、系统日志、访问控制授权及相关的中间件、数据库及操作系统运行的安全状态进行持续监控。
- 安全运行管理:1)用户管理:帐号、口令、权限;2)配置管理,变更管理;3)设备管理等。
- 管理流程检查:组织架构、工作职责、授权流程、应急响应、备份与恢复机制。
- 工具扫描:在试运行阶段,对网络、系统平台、数据库、应用进行工具扫描,以发现生产环境可能存在的风险。
- 应用系统安全检查:对新老应用系统从系统开发、部署与运行管理、身份鉴别、访问控制、交易安全、数据保密性、备份与故障恢复、日志与审计等方面进行安全评估。
- 渗透测试:利用已知漏洞和社会工程的方法,模拟入侵攻击,以揭示可能存在的安全风险。
-
日志审查:网络设备日志、安全设备日志、系统平台日志、应用日志。
07.软件废弃阶段安全管理策略
由于软件无法满足业务的要求,或者更新换代时,应将应用软件退出生产运行环境。软件废弃包括:软件废弃申请、软件废弃实施二个阶段。在软件废弃阶段的主要安全活动:
-
软件剩余信息检查:检查废弃系统或设备中是否含有敏感信息。
- 软件及数据安全清除:对废弃的软件及其相关数据通过的可靠的方式,在存储介质上进行安全擦除。