夜雨聆风学习资料网

ARTICLE · 1219422

等级保护建设:安全建设管理—自行软件开发

等级保护建设:安全建设管理—自行软件开发

等级保护安全建设管理中的“自行软件开发”建设要求解析

——基于信息系统建设逻辑理解安全软件开发生命周期(SSDLC)、DevSecOps与软件供应链安全管理

在网络安全等级保护制度中,自行软件开发是安全建设管理的重要控制要求,也是保障应用系统源头安全的核心措施。等级保护要求:“应将开发环境与实际运行环境物理分开,测试数据和测试结果受到控制;应制定软件开发管理制度,明确说明开发过程的控制方法和人员行为准则;应制定代码编写安全规范;应具备软件设计文档和使用指南;应在开发过程中开展安全测试并检测恶意代码;应对程序资源库修改、更新、发布进行授权审批和版本控制;应保证开发人员专职,开发活动受到控制、监视和审查。” 这一要求体现了现代软件安全建设中的安全开发生命周期(Secure Software Development Life Cycle,SSDLC)、DevSecOps和软件供应链安全(Software Supply Chain Security)理念,即软件安全不是上线前一次漏洞扫描,而是在需求、设计、编码、测试、发布、运维全过程持续落实安全控制,使安全成为软件开发的内生能力。

从信息系统建设的角度来看,现代信息系统的安全问题越来越多来源于应用程序本身。SQL注入、跨站脚本(XSS)、远程代码执行(RCE)、反序列化漏洞、越权访问、身份认证缺陷、逻辑漏洞以及API安全问题,大多数都属于软件开发阶段遗留的问题。如果开发阶段没有建立完善的安全管理体系,即使部署再多的安全设备,也难以彻底消除应用层风险。因此,等级保护强调将安全控制前移到软件开发阶段,实现"源头治理"。

等级保护首先要求,将开发环境与实际运行环境物理分开。这体现了环境隔离(Environment Segregation)原则。现代软件通常包括开发环境、测试环境、预生产环境和生产环境,各环境承担不同职责。开发人员只能在开发环境编写和调试程序,测试人员在测试环境开展验证,生产环境仅供正式业务运行,任何未经审批的开发活动不得直接进入生产环境。

环境隔离不仅防止开发人员误操作生产系统,更能防止恶意程序、测试代码、调试接口以及未完成功能进入正式业务系统。同时,测试环境应使用脱敏数据或模拟数据,避免直接复制生产环境中的真实个人信息、重要业务数据或敏感配置,从源头降低数据泄露风险。

近年来,许多数据泄露事件正是由于开发人员将生产数据库复制到测试环境,而测试环境缺乏完善安全保护导致。因此,现代开发管理越来越强调测试数据脱敏(Data Masking)和测试数据管理(Test Data Management)。

等级保护进一步要求建立软件开发管理制度。这意味着软件开发不能依赖个人经验,而应建立覆盖需求管理、设计管理、编码管理、测试管理、发布管理、变更管理、缺陷管理、安全管理以及文档管理的完整制度体系。制度应明确各岗位职责、审批流程、安全要求、开发规范以及违规处理机制,使整个开发过程规范、有序、可追溯。

现代软件开发通常结合ISO/IEC 12207软件生命周期标准、CMMI、ITIL、DevOps管理体系建立研发管理制度,将需求评审、设计评审、安全评审、代码审查、上线审批等活动纳入统一流程,实现全过程质量和安全控制。

等级保护要求制定代码编写安全规范。这是应用安全建设的重要基础。安全编码规范通常要求开发人员遵循OWASP Secure Coding Practices、CWE(Common Weakness Enumeration)、CERT Secure Coding Standard以及企业内部编码规范,避免使用危险函数,防止SQL注入、命令注入、XSS、CSRF、越权访问、路径遍历、反序列化漏洞、不安全随机数以及敏感信息硬编码等常见安全问题。

近年来,随着微服务、容器、云原生和API开发不断普及,安全编码规范还逐步扩展到API认证、JWT管理、OAuth授权、Token保护、容器镜像安全以及云服务接口安全等新内容,使开发规范能够适应现代软件架构的发展。

等级保护进一步要求具备软件设计文档和使用指南,并控制文档使用。这意味着软件开发不仅交付程序代码,还应交付完整的技术文档,包括需求说明书、总体设计、详细设计、数据库设计、接口设计、安全设计、部署文档、运维手册、用户使用指南以及应急恢复文档等。文档既是项目维护的重要依据,也是后续漏洞修复、安全审计、等级保护测评以及系统升级的重要支撑材料。

文档管理还应实施权限控制。涉及系统架构、安全配置、数据库结构、接口协议、密码实现等敏感内容,应限制访问权限,避免设计文档成为攻击者获取系统信息的重要来源。

等级保护要求在软件开发过程中开展安全测试,并在软件安装前检测恶意代码。这体现了现代SSDLC中的持续安全测试思想。安全测试不仅包括传统功能测试,还应包括静态代码分析(SAST)、动态应用安全测试(DAST)、交互式应用安全测试(IAST)、软件成分分析(SCA)、模糊测试(Fuzzing)、渗透测试以及漏洞扫描等多种技术。

随着开源软件广泛应用,现代开发越来越关注第三方组件安全。大量应用程序依赖Maven、NPM、PyPI、Docker Hub等开源组件,因此应开展软件成分分析(Software Composition Analysis),识别Log4j、Spring、Fastjson等存在漏洞的第三方库,及时升级修复,降低软件供应链风险。

恶意代码检测不仅针对开发人员自主编写代码,也包括第三方SDK、插件、脚本、安装包以及发布文件,防止木马、后门程序、恶意脚本或供应链污染进入正式系统。

等级保护进一步要求,对程序资源库修改、更新和发布实施授权审批和版本控制。这体现了现代软件配置管理(Software Configuration Management)思想。程序代码应统一存放于版本管理系统,如Git、GitLab、GitHub Enterprise、SVN等,所有代码提交、分支管理、版本发布、回滚恢复均应有完整记录。

任何重要代码修改都应经过需求审批、代码评审(Code Review)、测试验证、安全审核以及发布审批,不得直接修改生产环境代码。现代DevSecOps平台通常结合CI/CD流水线,实现自动构建、自动测试、安全扫描、自动部署以及审批控制,提高开发效率的同时保证安全质量。

近年来,软件供应链攻击频繁发生,攻击者通过污染代码仓库、篡改依赖组件、植入恶意代码等方式攻击目标系统。因此,现代开发越来越强调代码签名、发布签名、构建环境保护、SBOM(软件物料清单)以及构建可信性验证,确保软件发布全过程可信。

等级保护要求开发人员应为专职人员,其开发活动受到控制、监视和审查。这意味着开发岗位应职责明确,不宜长期由运维人员、管理员或供应商兼职承担,以降低权限滥用风险。同时,应建立开发行为审计机制,包括代码提交记录、代码评审记录、发布审批记录、开发日志、访问日志以及操作日志,实现开发全过程可追溯。

现代研发组织普遍采用研发权限管理平台、Git审计、CI/CD审计、研发行为监控以及代码审查制度,对开发活动进行持续监督,防止未授权修改、恶意代码植入或违规发布。

近年来,人工智能辅助开发(AI Coding Assistant)快速普及,开发管理也开始关注AI生成代码的安全问题。组织通常要求AI生成代码必须经过人工审查、安全扫描和测试验证,不得直接进入生产环境,以防止引入新的安全风险。

国际标准同样高度重视安全软件开发。ISO/IEC 27034《应用安全》提出应用系统安全开发框架;ISO/IEC 27001要求将安全贯穿系统开发生命周期;NIST《Secure Software Development Framework(SSDF)》建立了完整的软件安全开发框架;OWASP SAMM、OWASP ASVS以及微软SDL均强调将安全要求贯穿需求、设计、开发、测试和发布全过程。我国GB/T 25070《网络安全等级保护安全设计技术要求》、GB/T 22239《网络安全等级保护基本要求》以及相关行业标准共同构建了我国安全开发体系。

等级保护测评对于自行软件开发,并不仅检查是否编写代码,而是重点关注是否建立了完整的安全开发管理体系。测评通常检查是否建立软件开发管理制度;是否区分开发、测试和生产环境;是否制定安全编码规范;是否开展代码审查;是否实施安全测试;是否开展漏洞扫描和恶意代码检测;是否建立版本控制系统;是否实施发布审批;是否保留设计文档、测试报告、代码评审记录、发布记录、版本记录以及开发审计日志等证据材料。

从信息系统建设全过程来看,自行软件开发贯穿系统生命周期。在需求阶段,应开展安全需求分析;设计阶段,应开展安全架构设计;开发阶段,应落实安全编码规范;测试阶段,应开展功能测试、安全测试和漏洞修复;发布阶段,应完成审批、签名和版本管理;运行阶段,应持续开展漏洞修复、安全更新和安全运营,实现软件全生命周期安全管理。

因此,等级保护中的自行软件开发,本质上是在解决"如何确保自主开发的软件从需求提出到最终运行全过程均符合网络安全要求,并建立可持续、安全、可信的软件研发体系"这一核心治理问题。一个成熟的软件开发安全体系,应形成制度规范、环境隔离、安全设计、安全编码、持续测试、版本控制、授权发布、行为审计、供应链可信、持续改进的安全开发管理机制,使软件安全真正成为信息系统建设的源头能力,为等级保护制度、数据安全治理、关键信息基础设施保护以及数字化转型提供安全可靠的软件基础。

安全物理环境

等级保护建设:物理环境选择

等级保护建设:物理访问控制

等级保护建设:防盗窃和防破坏

等级保护建设:安全物理环境—防雷击

等级保护建设:安全物理环境—防火

等级保护建设:防水和防潮

等级保护建设:安全物理环境—防静电

等级保护建设:安全物理环境—电磁防护

安全通信网络

等级保护建设:安全通信网络—网络架构

等级保护建设:安全通信网络—通信传输

等级保护建设:安全通信网络—可信验证

安全区域边界

等级保护建设:安全区域边界—边界防护

等级保护建设:安全区域边界—访问控制

等级保护建设:安全区域边界—入侵防范

等级保护建设:安全区域边界—恶意代码和垃圾邮件防范

等级保护建设:安全区域边界—安全审计

等级保护建设:安全区域边界—可信验证

安全计算环境

等级保护建设:安全计算环境—身份鉴别

等级保护建设:安全计算环境—访问控制

等级保护建设:安全计算环境—入侵防范

等级保护建设:安全计算环境—安全审计

等级保护建设:安全计算环境—恶意代码防范

等级保护建设:安全计算环境—可信验证

等级保护建设:安全计算环境—数据完整性

等级保护建设:安全计算环境—数据保密性

等级保护建设:安全计算环境—数据备份恢复

等级保护建设:安全计算环境—剩余信息保护

等级保护建设:安全计算环境—个人信息保护

安全管理中心

等级保护建设:安全管理中心—系统管理

等级保护建设:安全管理中心—审计管理

等级保护建设:安全管理中心—集中管控

等级保护建设:安全管理中心—安全管理

安全管理制度

等级保护建设:安全管理制度—安全策略

等级保护建设:安全管理制度—管理制度

等级保护建设:安全管理制度—制定和发布

安全管理机构

等级保护建设:安全管理机构—岗位设置

等级保护建设:安全管理机构—人员配备

等级保护建设:安全管理机构—授权和审批
等级保护建设:安全管理机构—沟通和合作
等级保护建设:安全管理机构—审核和检查
安全管理人员
等级保护建设:安全管理人员—人员录用
等级保护建设:安全管理人员—人员离岗
等级保护建设:安全管理人员—外部人员访问管理
安全建设管理
等级保护建设:安全建设管理—定级和备案
等级保护建设:安全建设管理—安全方案设计
等级保护建设:安全建设管理—产品采购和使用

相关学习资料