1.
目的
为规范公司的开发管理,进一步加强应用系统软件开发过程 及开发交付的安全性,特制定本管理办法。
2. 适用范围
适用于公司软件开发过程的安全管理。
3. 依据标准和文件
GB/T 22080-2016/ISO/IEC 27001:2013《信息技术安全技术信息安全
管理体系要求》
GB/T 22081-2016/ISO/IEC 27002:2013《信息技术安全技术信息安全
管理实用规则》
4. 职责分工
信息安全工作小组:负责组织编写并推广本管理办法;
各开发部各产品(项目)或系统开发组:负责软件开发。
测试部:开发完成后的测试和试运行。
系统服务部:正式运行的维护工作。
5. 术语和定义
1)缓冲区溢出:指当计算机向缓冲区内填充数据位数时超过了缓冲区本身 的容量溢出的数据覆盖在合法数据上;通过往程序的缓冲区写超出其长 度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或 使程序转而执行其它指令,以达到攻击的目的。
2)静态代码分析:指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全可靠性、可维护性等指标的一种代码分析技术。
6. 管理细则
6.1. 开发条件及方式
6.1.1.开发条件
符合开发条件的软件项目应该是能够有效利用现有的资源,开拓新业务;或能有效地提高生产效率,减少工作中机械繁琐操作的项目。
6.1.2. 开发方式
软件开发可以采用下列三种开发方式之一:
a)自主开发:由需求部门或公司自主开发。
6.2. 软件开发项目管理
软件开发项目的整体流程包括项目建议及审批、需求分析、系统设计、系统实现、测试及试运行、系统验收、上线运行维护升级等阶段。
6.3.开发安全管理
6.3.1.安全需求分析
安全需求分析在项目需求分析阶段完成,具体要求如下:
1)项目组首先在应用系统实现的业务功能的基础上进行风险评估,识 别应用系统所涉及的重要的信息资产,分析由于故障或安全问题可能导致的潜在损失,分析为保护这些信息资产、避免重大损失而应采取的控制措施。
2)项目组人员应调研应用系统开发完成后的系统维护人员、系统应用 人员及网络安全管理人员,提取硬件部署、平台搭建、网络架构等方面的安全需求,将相关的安全需求和建议作为获取安全设计的依据。
3)根据风险分析以及充分调研的结果,对应用系统的基本安全功能和 安全功能的强度进行需求确认。
4)安全需求分析应在项目详细的需求分析文档中用章节进行详细 描述,包括对每个基本安全功能实现的必要性陈述以及不能实现某 种安全功能的原因。
6.3.2.系统设计安全
系统安全设计是系统设计阶段重要组成部分,具体要求:
1)应用系统应满足系统对于身份认证的需求,应明确提出用户身份认 证的强度以及认证失败后的处置方式。
2)应用系统应包含用户权限分配和管理功能,应根据系统所处理的业 务数据的保密性和完整性要求,确定系统采用的用户权限访问控制 模型和权限的划分。
3)应用系统应包括安全日志记录功能,应明确对于日志内容的要求, 审计日志应涵盖用户创建、登录审计、访问和被拒绝记录等。
4)应用系统应包含可能出现的各种异常情况的安全处理设计。
5)应用系统总体结构的设计或部署必须考虑重要子系统、部件的备份, 避免单故障点。
6)应用系统应满足数据安全的需求,重要而敏感的数据应当进行加密 和完整性保护,在传输过程中全程加密,并实现数据不落地传输的控制过程。
7)其他具体的开发安全技术要求,参照《信息系统获取、开发与维护管理制度》。
6.3.3. 系统开发安全
1)应定期对软件工程师进行信息安全培训。
2)为软件开发和测试划定专门的安全域,将开发和测试环境与正式运行环境进行分离。
3)软件开发过程的每个阶段都应有相应的开发文档输出。
4)应遵循开发安全编码策略,提高软件的健壮性。
5)对文档和代码采取版本管理和控制,对其访问权限应具有严格的控制,防止非授权修改文档和代码。
6)应用系统开发任务外包给第三方时,应与开发方签署保密协议,软件的安全要求应在双方认可的合同或协议中应给予明确规定。
6.3.4.系统安全测试
6.3.4.1. 应要求开发方对应用软件的安全性进行测试并形成测试报告,测试须验证系统的安全性是否符合安全设计及安全需求。安全测试至少包括以下内容:
a)在与其他系统的互操作性测试中,应充分考虑对其他系统的影响,选择适当的时间、方法。
b)测试环境所安装的软件是否已是当前最新版本,不存在已知的安全漏洞。
c)由开发人员进行代码审核,检查、消除程序代码潜在的安全漏洞。
d)对应用系统存在的弱点威胁进行安全检查,如:假冒身份、恶意篡改、信息泄露、拒绝服务、提升等。
e)如条件许可,建议开发方运用静态分析代码扫描工具,检测可能导 致漏洞的编码缺陷,包括缓冲区溢出、整数溢出和未初始化变量等。
f)测试数据如果选择的是真实数据,测试完成后必须删除全部数据。
g)测试完成后,应该消除测试用的后门、用户名及口令等。
h)应确保测试用例、测试内容和测试结果的保密性。
6.3.4.2. 应用系统测试及试运行阶段,安全测试的具体要求:
a)测试人员和开发人员的职责应是分离的。
b)应对应用系统进行单元测试和综合测试,包括流量压力测试,对所有的Web应用系统都必须经过安全测试。
c)对应用系统所有的基本安全功能及其强度进行测试。
d)测试人员应在不同的环境下测试应用系统,特别是将操作系统、数据库系统等设为相对安全状态,即修补所有已发布的安全补丁后进行功能测试。
e)生产和测试环境(包括网络)必须是隔离的,禁止使用生产环境和生产数据进行测试,若特殊情况下测试环境与外部公共环境或生产
环境连接测试时必须进行必要的网络访问控制。
f)项目全部测试通过后才能进入试运行阶段,在进行试运行前项目组相关人员应制定详细、充分的应急方案。
g)系统上线前应按《信息系统获取、开发与维护管理制度》中相关要求进行安全审批。
h)试运行期间项目组相关人员应对系统进行严格的监控,以便出现故障后能及时恢复。
6.3.5.系统移交维护
应用系统开发完成并测试通过之后,项目组移交应用系统至系统维护人员进行维护管理。具体要求:
1) 系统移交维护时,开发人员应将相关技术文档等交接到系统维护人员手中,同时对系统维护人员进行必要的基础功能、系统架构、 基本的排错纠错等方面的培训。
2)系统运行阶段,系统主机内禁止保存应用系统的源代码程序。
3)没有事先受到许可的开发人员不能访问生产系统及其相关信息,除非有严格的紧急维护、变更控制或支持手续才可以访问上述系统。
4)对于自主开发的系统,应用系统依赖的操作系统、数据库等环境出现严重安全漏洞后,应用系统开发人员应负责测试补丁是否对应用系统有不良影响,并在三天之内通知系统维护人员结果。
5)项目交付前应修改测试帐号及测试口令。
本制度相关修改及解释权属于研发服务体系
文档编号(由总裁办填写) | |||
密级 | 内部公开 | ||
文档发布级别 | 公司级 | ||
文档发布及实行范围 | 全员 | ||
制度试行日期(可选) | |||
制度执行日期 | |||
文档起草人 | 签字: | ||
文档修订人: | 签字: | ||
修订说明: | 备注: | ||
文档负责人: | 签字: | ||
文档审批 | |||
信息安全管理者代表 | 签字: | ||
文档审批人 | 签字: |