信息系统获取、开发与维护程序1.目的为确保安全成为所开发的信息系统一个有机组成部分,保证开发过程安全,特制定本程序。
2.范围
2.1适用于本公司所有信息系统的开发活动中,信息系统内在安全性的管
理。
本程序作为软件开发项目管理规定的补充,而不是作为软件开发项目管理的整体规范。
2.2开发过程中所形成的需求分析文档、设计文档、软件代码、测试文档
等技术信息的管理应遵从信息资产密级管理的有关规定,本程序不在另行规定
3.术语及定义
无
4.引用文件
4.1下列文件中的条款通过本规定的引用而成为本规定的条款。
凡是注日
期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励各部门研究是否可使用这些文件的最
新版本。
凡是不注日期的引用文件,其最新版本适用于本标准。
4.2ISO/IEC 27001:2005 信息技术-安全技术-信息安全管理体系要求
4.3ISO/IEC 17799:2005 信息技术-安全技术-信息安全管理实施细则
4.4信息资产密级管理规定
5.职责和权限
开发部是信息系统开发过程中的安全管理部门, 负责保证开发过程安全。
6.工作程序
6.1控制措施-对信息系统进行安全性需求分析与相关规格说明
6.1.1目标:在描述新系统或改进原有系统的业务需求时,应收
集、分析系统在安全性方面的需求,并在系统需求规格说明书详细
描述。
6.1.2安全性需求包括两方面的内容,一是对系统本身的安全需求,如
系统具备数据通信加密、用户身份鉴别等功能,在确定安全要求
时,要考虑系统中的自动安全控制和支持人工安全控制的要求;
二是对系统设计开发过程本身也要进行控制,例如在不同的设计
开发阶段的评审与验证,确保对程序源代码的保护、对设计人员
的控制等。
6.1.3安全要求在软件开发生命周期中的分布如下图所示:
6.1.4在使用新的应用程序或增强现有的应用程序时必须做安全性影响分
析, 由信息系统项目经理提交安全需求分析。
内容可包括以下
项:
1)确认需要保护的资产。
2)评估这些资产需要采取什么安全控制措施。
3)考虑是否在系统中加入自动安全控制措施还是建立人工安全控
制措施。
4)在软硬件采购时,应尽量使用经过专业评估和认证的产品。
6.2在应用中建立安全措施
6.2.1控制措施- 输入数据验证
6.2.1.1控制描述- 输入应用系统的数据应加以验证,以确保数据是
正确的。
6.2.1.2实施指南- 应该校验应用于业务交易、常备数据和参数表的
输入信息。
需要考虑下列(但不仅限于)内容:
1)输入校验,诸如边界校验或者限制特定输入数据范围的域,以
检测下列错误:
a)范围之外的值;
b)数据字段中的无效字符;
c)丢失或不完整的数据;
d)超过数据的上下容量限制;
e)未授权的或矛盾的控制数据;
f)业务流程、系统安全运行、法规政策等方面所要求的数据
校验;
2)定期评审关键字段或数据文件的内容,以证实其有效性和完整
性;
3)检查硬拷贝输入文档是否有任何未授权的变更 (输入文档的所
有变更均应予以授权);
4)对输入数据验证错误后的处理程序;
5)测试输入数据合理性的程序;
6)定义在数据输入过程中所涉及的全部人员的职责。
7)创建在数据输入过程中所涉及的活动的日志。
8)其它信息-适当时,可以考虑对输入数据进行自动检查和验
证,以减少出错的风险和预防包括缓冲区溢出和代码注入等普
通的攻击。
6.2.2控制措施- 内部处理的控制
6.2.2.1控制描述- 应用中需要验证检查由于处理错误或故意行为造
成的信息讹误。
6.2.2.2实施指南- 应用系统的设计与实现应尽量减少处理故障时对
数据完整性的损坏。
需要考虑下列(但不仅限于)内容:
1)通过添加、修改和删除功能实现数据变更;
2)防止程序以错误次序运行;
3)使用适当的程序恢复故障,以确保数据的正确处理;
4)防范利用缓冲区超出/ 溢出进行的攻击。
6.2.2.3应准备适当的检查列表,将检查活动文档化,并应保证检查
结果的安全。
需要考虑下列(但不仅限于)检查例子:
1)验证系统生成的输入数据;
2)检查在中央计算机和远程计算机之间所下载或上载的数据或
软件的完整性、真实性或者其他任何安全特性;
3)记录文件字节大小;
4)检查以确保应用程序在正确时刻运行;
5)检查以确保程序以正确的次序运行并且在发生故障时终止,
以及在问题解决之前,停止进一步的处理;
6)创建处理时所涉及的活动的日志。
6.2.2.4其它信息-正确输入的数据可能被硬件错误、处理错误和故
意的行为所破坏。
所需的验证检查取决于应用系统的性质
和毁坏数据对业务的影响。
6.2.3控制措施- 消息完整性
6.2.2.5控制描述- 应用中应该识别确保消息真实性和保护消息完整
性的要求,实施适当的控制措施。
6.2.2.6实施指南- 应进行安全风险的评估以判定是否需要消息完整
性验证,并确定最合适的实施方法。
6.2.2.7其它信息- 密码技术可被用作一种合适的实现消息鉴别的手
段。
6.2.4控制措施- 输出数据验证
6.2.4.1控制措施-从应用系统输出的数据应加以验证,以确保对所
存储信息的处理是正确的且适于当前运行环境的。
6.2.4.2实施指南-输出验证可以包括(但不仅限于)以下内容:
1)合理性检查,以测试输出数据是否合理;
2)调节控制措施的数量,以确保处理所有数据;
3)为读者或后续的处理系统提供足够的信息,以确定信息的
准确性、完备性、精确性和分类;
4)对输出数据验证结果进行处理程序;
5)定义在数据输出过程中所涉及的全部人员的职责。
6)创建在数据输出验证过程中活动的日志。
6.2.4.3其它信息-一般来说,系统和应用是在假设已经进行了适当
的验证、确认和测试的条件下构建的,其输出总是正确
的。
然而,这种假设并不总是有效;例如,已经过测试的
系统仍可能在某些环境下产生不正确的输出
6.3开发和支持过程中的安全
6.3.1系统测试数据的保护
6.3.1.1控制措施- 测试数据应认真地加以选择、保护和控制。
6.3.1.2实施指南- 应避免使用包含个人信息或其它敏感信息的运行
数据库用于测试。
如果测试使用了个人或其他敏感信息,那
么在使用之前应去除或修改所有的敏感细节和内容。
当用于
测试时,应使用下列(但不仅限于)指南保护运行数据:
1)应用于运行应用系统的访问控制程序,还应用于测试应用系
统;
2)运行信息每次被拷贝到测试应用系统时应有独立的授权;
3)在测试完成之后,应立即从测试应用系统清除运行信息;
4)应记录运行信息的拷贝和使用日志以提供审核踪迹。
6.3.1.3其它信息- 系统验收测试常常要求相当多的尽可能接近运行
数据的测试数据。
6.3.2对程序源代码的访问控制
6.3.2.1 控制措施-应限制访问程序源代码。
6.3.2.2实施指南-对程序源代码和相关事项(诸如设计、说明书、确
认计划和验证计划)的访问应严格控制,以防引入非授权功
能和避免无意识的变更。
对于程序源代码的保存,通过代码
集中存储控制来实现,放在公司统一的配置管理库中。
应考
虑下列(但不仅限于)指南:
1)若有可能,在运行系统中不应保留源程序库;
2)程序源代码和配置管理库应进行规范管理;
3)应限制支持人员访问配置管理库;
4)更新配置项,向程序员发布程序源码应在获得适当的授权
5)应维护对配置库所有访问的审核日志;
6)维护配置库应该有规范的制度。
6.3.2.3其它信息-程序源代码是由程序员编写的代码,经编译(和链
接)后产生可执行代码。
特定程序语言不能正式区分源代码
和可执行代码,这是因为可执行代码是在它们被激活时产
生的。
6.3.3 外包软件开发
6.3.3.1 控制措施- 组织应管理和监视外包软件的开发。
6.3.3.2 实施指南-在外包软件开发时,应考虑下列(但不仅限
于)各
1)许可证安排、代码所有权和知识产权;
2)所完成工作的质量和准确性的认证;
3)第三方发生故障时的契约安排;
4)审核所完成的工作质量和准确性的访问权;
5)代码质量和安全功能的合同要求;
6)在安装前,测试恶意代码和特洛伊木马。
7.相关支持文件
8.记录
9.附录。