安全系统开发生命周期
安全系统开发生命周期 (SecSDLC) 是一系列按照特定顺序在整个软件开发过程 (SDLC) 中执行的活动。它的创建方式能够帮助开发人员以减少从一开始就存在的安全风险的方式来创建软件和应用程序。
安全系统开发生命周期 (SecSDLC) 类似于软件开发生命周期 (SDLC),但是每个步骤中执行的活动有所不同。SecSDLC 是一个过程,包括识别特定威胁以及这些威胁对系统构成的风险,以及必要地部署安全控制措施来预防、消除和管理所涉及的风险。另一方面,SDLC 过程主要关注信息系统的设计和实现。
系统开发生命周期 (SDLC) 是一种确保新系统或应用程序具有可接受的安全控制和要求的方法。将技术和实践整合到新系统和应用程序部署的创建中,允许从一开始就在解决方案中构建安全性,而不是在解决方案部署后进行改进。
为此,系统和应用程序部署的 SDLC 过程应该明确定义,并指定和执行包含安全检查的检查点,然后才能进入下一个项目阶段。如果没有明确应用 SDLC 并交付所需的可交付成果,则很难成功监督开发过程并确保正确处理与安全相关的关注点。
系统开发生命周期及其阶段
系统开发生命周期和软件开发生命周期有什么区别?端到端的员工、流程和技术部署(包括软件、基础设施和变更管理)都是系统开发生命周期的一部分。软件开发生命周期只关注软件组件,例如开发规划、技术架构、软件质量测试和软件部署。简单来说,系统开发的生命周期更全面、更彻底。
下面概述的分阶段行动通常反映在 SDLC 中。
项目启动
要开始所有系统开发和集成任务,请创建一个正式的项目请求。项目请求应包括项目目标、系统或应用程序的用户、保密性、完整性和可用性方面的关键性以及重要的完成时间段。
分析
通过进行可行性评估来确定是否应允许开发项目建议。可行性研究应包括以下内容:
对当前环境的影响评估;
人员发展和资源需求;
项目开发成本分析;
程序维护成本;
评估替代的项目实施方法,例如构建与购买以及外包。
描述推荐的解决方案策略;
建议方案的风险;以及
成本节约、错误减少、新增客户和改进的客户服务都是效益分析的一部分。
在此阶段,信息安全团队应开始参与项目,以验证可行性研究中是否已解决适当的安全问题。
业务和运营需求规范
制定业务和运营需求规范,以确保理解实现业务目标所需的项目要求。此方法通常由用户和开发团队领导。业务需求应解决以下问题:
支持系统或应用程序所需的数据,以及它与其他数据的关联方式
系统或应用程序的使用频率;
对于在线处理,需要响应时间。
功能之间的关系及其对其他组件的依赖性;
识别任何适用的法律或法规要求或限制;以及
系统或应用程序的预期寿命。
运营需求应解决以下问题:
安全要求;
应急条款;
分布式和集中式处理需求;
承担的责任和数据输入方法
数据保留要求
输出分发需求;
预期的交易量,包括项目交易量的增加;以及
系统性能标准至关重要。
本文件还应描述项目所代表的开发活动类型。维护、增强、新系统和紧急变更都是常见的项目类型。当开发活动被分配到这些类别中的一个时,应建立标准。
为了确保安全问题得到充分解决并在需求文档中得到体现,信息安全团队应在整个业务和运营需求阶段参与其中。在此阶段,主要实施风险评估方法,为项目团队提供早期安全见解。
功能需求
将业务和运营需求转化为功能需求,以体现系统或应用程序的预期用户体验。用户的观点已通过功能需求转移到早期设计中。维护和改进工作的目标是使用前后描述来记录正在发生的变化。
功能规范应包括以下内容:
数据流图显示数据在其所有处理阶段中的流动方式。
数据定义包括数据定义、链接和命名标准。
屏幕定义 – 输入字段定义、范围检查等;
数据来源、数据类型和数据描述都是输入。
报表定义 - 每个报表的描述、其包含的数据、数据值的计算方式以及使用报表的人员;
控制和安全要求包括输入编辑要求、来自起源点到处理点的关键数据的审计日志跟踪、特权使用的审计日志跟踪以及重要处理区域的识别。
此系统与其他系统之间的交互点、预期的输入和输出、响应时间预期以及其他系统间依赖性都是系统接口要求的一部分。
重新启动、备份和恢复 - 备份频率、备份理由、备份保留要求、指示程序应如何重新启动的重新启动要求以及恢复要求;
分析应用程序在影响公司之前可能停机的时间长度,以及识别必须在异地处理中心恢复的数据集、软件和其他元素;
通信需求、存储空间、处理设备和其他硬件要求;
正常运行时间要求、所需的响应时间、关键时期、输入截止日期、报表分发截止日期和其他服务级别要求;
交易量、预计增长和其他容量需求;以及
在新系统上生成数据的技术、在转换期间协调数据的技术、切换要求以及检查转换数据的过程都是转换需求。
信息安全团队通常在功能规范阶段扮演支持性角色,帮助项目团队捕获系统或应用程序的早期设计和功能描述。安全相关信息,例如技术特性(例如,访问限制)和操作标准,应包含在功能规范中(例如,意识和培训)。在详细设计阶段之前,信息安全团队应审查并提供对此文档的输入。
详细设计规范
创建详细的设计规范,将功能需求转换为逻辑和物理布局。详细设计规范是在 SDLC 的设计阶段创建的,详细说明了如何构建系统或应用程序以满足功能规范的需求。
详细设计规范应包括以下内容:
数据元素之间的关系;数据库需求
每个文件的描述、文件访问方法、记录中字段的列表、数据属性和预期的记录数量都是必需的。
系统流程图 - 显示程序执行的顺序,以及它们与输入、输出和安全措施的联系。
程序要求 - 使用的程序及其用途、公式和计算描述以及程序之间的相互关系;
作业流,包括处理的目的、使用的作业名称以及重新启动/恢复方法;系统操作需求
错误管理要求;
备份和恢复过程;
启动和关闭系统的过程;
指定拉取其他屏幕的屏幕、执行的输入检查以及错误消息描述的屏幕的逻辑流程;屏幕设计 - 每个屏幕中的字段、每个字段的目的、每个屏幕触发方式的描述、指定拉取其他屏幕的屏幕的逻辑流程、执行的输入检查以及错误消息的描述;
每个报表每个字段中包含的数据,以及如何获得每个数据结果的说明;以及报表设计
安全设计中描述了访问控制技术、审计日志规定、用户身份验证和加密要求。
在详细设计阶段,信息安全团队应再次协助项目团队努力构建系统以达到预期的解决方案。根据项目团队的要求,安全专家应参加重要的设计评审会议,包括安全设计评审。信息安全团队应在详细设计阶段审查安全需求是否得到妥善处理,以及是否制定了合适的测试程序。在进入下一步之前,他们应评估全面的设计需求。
开发
在整个开发过程中,系统或应用程序的安全方面都经过设计、配置和激活。使用程序规范来指定程序逻辑和处理需求。在编程开始之前,程序需求是在开发过程中创建的。这些需求概述了必须遵循的思维过程,以便建立必须采取的程序来编写程序。
信息安全团队应保留对系统或应用程序关键组件(例如用户身份验证、授权和财务交易)的源代码评估。在源代码审查期间,应更加关注第三方代码,例如离岸开发公司提供的代码。
SecSDLC 的阶段
系统调查 - 组织最高管理层的官员/主管启动此程序。为了执行此程序,必须首先确定项目的客观和目标。创建信息安全策略,其中包括对已部署的安全应用程序和程序的描述,以及它们在组织系统中的实现。
系统分析 - 此阶段对在系统调查阶段获得的文档进行全面的文档分析。检查现有的安全策略、程序和软件,以查看系统中是否存在任何弱点或漏洞。还考虑未来可能出现的威胁。此方法仅负责风险管理。
逻辑规划 - 逻辑设计阶段关注的是创建用于实施不同信息安全规则及其应用程序和软件的工具和蓝图。为了避免未来的损失,还创建了备份和恢复计划。还准备了发生灾难时应采取的程序。在此阶段,确定是否将公司项目外包。确定项目是否可以在组织内部完成,或者是否必须将其外包给另一家公司完成。
物理布局 - 技术团队获得软件实施和系统安全应用程序所需的工具和蓝图。在此步骤中,针对未来可能出现的任何意外问题研究了各种解决方案,并对这些解决方案进行了分析和记录,以解决在分析阶段被忽视的大多数漏洞。
实施 - 无论项目是内部完成还是外包,都会生成足够的文档来满足为项目设定的标准。在多个团队的协助下执行项目的实施和集成,这些团队严格验证产品是否符合系统文档中给出的系统需求。
维护 - 安全程序实施后,必须确保其有效运行并得到适当监控。为了应对在创建时可能未被注意到的新兴风险,必须使安全软件保持最新状态。