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测试数据的保护控制
测试数据应认真地加以选择、保护和控制。

控制解析:

  1. 应建立组织内软件安全开发策略,如在项目启动阶段,需要进行安全团队建设与培训、对软件定级、以及制定安全规划;在需求分析阶段,需要进行安全需求定制和评审等。
  2. “A.14.2.2 系统变更控制规程”应与“A.12.1.2 变更管理”结合实施,应对软件开发过程中的变更进行控制,任何变更都需要经过必要的风险评估和影响分析后,经过授权进行变更,相关内容需要在文件《信息安全变更管理规范》中明确。
  3. 正在运行中的平台(系统)进行变更(如CRM系统的版本升级)后,需要对关键应用(如用户访问权限的隔离)进行评审和测试,避免相关控制(用户访问权限控制)失效,发生信息安全事件(如信息泄密事件)。
  4. 原则上需要禁止对软件包进行修改,使用厂商提供的软件包而不做修改。如果有修改的必要,需要评估相关风险、获得厂商授权、以及与其他软件兼容性问题。
  5. 对于任何软件开发,需要建立系统安全工程,如建立软件开发安全体系框架,包含组织体系、制度体系、标准体系以及技术服务体系等。
  6. 要对开发环境的安全进行控制,如开发区域人员的管控,代码编码环境的安全,源代码存储环境安全等。
  7. 应对软件开发外包活动的安全进行督导和管理,如对入场外包人员的管理(背景调查、资料备案以及保密协议签订等)、运行安全管理(场地安全、网络安全、终端安全、安全意识等)以及信息安全检查等。
  8. 应在软件开发测试阶段对设计的安全功能进行测试。
  9. 新的信息系统、升级及新版本的信息系统在上线前,应进行相关测试(包括但不限于代码检测、漏洞扫描、渗透测试等),应制定测试方案和测试准则,并按照方案和准则进行测试。
  10. 从正式环境中获取数据用于测试,每次应单独授权,敏感信息(如个人信息等)应进行脱密处理。测数数据测试完后,应进行清除处理,避免造成数据泄密。

实施本控制应输出的文档:

  1. 软件安全开发策略、《软件安全开发管理程序》和《信息安全变更管理规范》。
  2. 变更方案、变更风险和影响评价记录、变更授权记录、变更测试记录等。
  3. 系统安全工程文档,如组织体系、制度体系、标准体系以及技术服务体系等。
  4. 软件外包管控记录。
  5. 代码检测、漏洞扫描、渗透测试记录等。
  6. 测试数据获取授权记录,测试数据清除记录等。

本控制审核要点:

  1. 是否形成书面的软件安全开发策略。
  2. 是否有系统变更管理规范,变更是否有经过必要的风险评估和影响分析,经过授权、评审和测试,并是否能提供相关记录。
  3. 软件开发过程,是否有按照系统安全工程进行管理。
  4. 软件开发过程中是否有对安全功能进行测试,并提供测试记录。
  5. 新的信息系统、升级及新版本的信息系统在上线前,是否有进行相关测试(包括但不限于代码检测、漏洞扫描、渗透测试等),并提供相关测试记录。
  6. 查看测试数据获取授权记录,测试数据清除记录等。