A.14.2 开发和支持过程中的安全 | ||
目标:确保信息安全在信息系统开发生命周期中得到设计和实现。 | ||
A.14.2.1 | 安全的开发策略 | 控制 针对组织内的开发,应建立软件和系统开发规则并应用。 |
A.14.2.2 | 系统变更控制规程 | 控制 应使用正式的变更控制规程来控制开发生命周期内的系统变更。 |
A.14.2.3 | 运行平台变更后对应用的技术评审 | 控制 当运行平台发生变更时,应对业务的关键应用进行评审和测试,以确保对组织的运行和安全没有负面影响。 |
A.14.2.4 | 软件包变更的限制 | 控制 应不鼓励对软件包进行修改,仅限于必要的变更,且对所有变更加以严格控制。 |
A.14.2.5 | 系统安全工程原则 | 控制 应建立、文件化和维护系统安全工程原则,并应用到任何信息系统实现工作中。 |
A.14.2.6 | 安全的开发环境 | 控制 组织应针对覆盖系统开发生命周期的系统开发和集成活动,建立安全开发环境,并予以适当保护。 |
A.14.2.7 | 外包开发 | 控制 组织应督导和监视外包系统开发活动。 |
A.14.2.8 | 系统安全测试 | 控制 应在开发过程中进行安全功能测试。 |
A.14.2.9 | 系统验收测试 | 控制 应建立对新的信息系统、升级及新版本的验收测试方案和相关准则。 |
A.14.3 测试数据 | ||
目标:确保用于测试的数据得到保护。 | ||
A.14.3.1 | 测试数据的保护 | 控制 测试数据应认真地加以选择、保护和控制。 |
控制解析:
- 应建立组织内软件安全开发策略,如在项目启动阶段,需要进行安全团队建设与培训、对软件定级、以及制定安全规划;在需求分析阶段,需要进行安全需求定制和评审等。
- “A.14.2.2 系统变更控制规程”应与“A.12.1.2 变更管理”结合实施,应对软件开发过程中的变更进行控制,任何变更都需要经过必要的风险评估和影响分析后,经过授权进行变更,相关内容需要在文件《信息安全变更管理规范》中明确。
- 正在运行中的平台(系统)进行变更(如CRM系统的版本升级)后,需要对关键应用(如用户访问权限的隔离)进行评审和测试,避免相关控制(用户访问权限控制)失效,发生信息安全事件(如信息泄密事件)。
- 原则上需要禁止对软件包进行修改,使用厂商提供的软件包而不做修改。如果有修改的必要,需要评估相关风险、获得厂商授权、以及与其他软件兼容性问题。
- 对于任何软件开发,需要建立系统安全工程,如建立软件开发安全体系框架,包含组织体系、制度体系、标准体系以及技术服务体系等。
- 要对开发环境的安全进行控制,如开发区域人员的管控,代码编码环境的安全,源代码存储环境安全等。
- 应对软件开发外包活动的安全进行督导和管理,如对入场外包人员的管理(背景调查、资料备案以及保密协议签订等)、运行安全管理(场地安全、网络安全、终端安全、安全意识等)以及信息安全检查等。
- 应在软件开发测试阶段对设计的安全功能进行测试。
- 新的信息系统、升级及新版本的信息系统在上线前,应进行相关测试(包括但不限于代码检测、漏洞扫描、渗透测试等),应制定测试方案和测试准则,并按照方案和准则进行测试。
- 从正式环境中获取数据用于测试,每次应单独授权,敏感信息(如个人信息等)应进行脱密处理。测数数据测试完后,应进行清除处理,避免造成数据泄密。
实施本控制应输出的文档:
- 软件安全开发策略、《软件安全开发管理程序》和《信息安全变更管理规范》。
- 变更方案、变更风险和影响评价记录、变更授权记录、变更测试记录等。
- 系统安全工程文档,如组织体系、制度体系、标准体系以及技术服务体系等。
- 软件外包管控记录。
- 代码检测、漏洞扫描、渗透测试记录等。
- 测试数据获取授权记录,测试数据清除记录等。
本控制审核要点:
- 是否形成书面的软件安全开发策略。
- 是否有系统变更管理规范,变更是否有经过必要的风险评估和影响分析,经过授权、评审和测试,并是否能提供相关记录。
- 软件开发过程,是否有按照系统安全工程进行管理。
- 软件开发过程中是否有对安全功能进行测试,并提供测试记录。
- 新的信息系统、升级及新版本的信息系统在上线前,是否有进行相关测试(包括但不限于代码检测、漏洞扫描、渗透测试等),并提供相关测试记录。
- 查看测试数据获取授权记录,测试数据清除记录等。