软件开发管理制度

发布者:信息化建设与管理中心发布时间:2015-09-16浏览次数:254

软件开发管理制度

1总则

  1. 为规范研发人员自有应用开发以及外包应用开发的安全管理工作,特制定本制度。

  2. 本制度中应用开发指新系统、软件开发和现有系统重大改造。

  3. 信息安全在应用开发的整个生命周期中都十分重要,在设计阶段采取安全控制措施远比在实施过程中或者实施结束之后落实安全控制措施更低廉。若在系统设计阶段未充分考虑系统的安全性,则系统本身就存在着先天不足。因此,在应用开发和维护阶段,正确识别、确认、批准和落实所有安全需求,是保证应用安全的最有效方式。

  4. 本制度是保护应用开发过程的安全。具体地说就是保护应用开发过程免受未经授权的访问和更改,保护开发中系统软件和信息的安全,确保开发项目顺利正确的实施并对开发环境进行严格的控制。同时确保应用开发外包中的各项安全。

  5. 本制度适用的范围包括了整个应用开发过程中的安全。包括了开发可行性,需求分析阶段的安全,设计阶段的安全,开发阶段的安全,测试阶段的安全,培训和文档阶段的安全以及开发外包的安全规范。

2立项管理

  1. 提出开发需求的部门需参与立项,进行立项的技术可行性分析,并编写《立项分析报告》,开展前期筹备工作。《立项分析报告》应明确项目的范围和边界。

  2. 应用主要使用部门将《立项分析报告》上交分管校领导进行立项审批,以保证系统项目与整体安全策略规范相一致。

  3. 《立项分析报告》得到批准后,成立项目组(如果是外包开发,则成立外包商项目组;如果是合作开发,则与外包商共同成立合作开发项目组,以下统称“项目组”),项目组应包括业务组(由相关业务部门组成)和IT组(自行开发为办公室网络管理员;外包开发为外包商成员;合作开发为网络管理员和外包商成员),以及安全管理组(南京特师信息安全管理员及第三方专业信息安全服务商组成)。安全管理组负责对整个开发过程中的信息安全进行审核和监督。项目组人员的选择应满足项目对业务及技术要求,项目组人员应有足够的业务、IT技术、信息安全等方面的专业知识来胜任项目各方面的工作。

3需求分析

  1. 从一开始就要保证信息安全是应用不可分割的一部分。所有的安全需求一定要在应用开发的需求分析阶段被正确识别、确认和批准,并且记录在应用开发的需求分析文档中。

  2. 立项后业务组对用户需求进行汇总整理,出具《业务需求说明书》,确保《业务需求说明书》中包含了所有的业务需求、关键的安全功能需求和明确对数据安全保护的要求,并交至安全管理组进行安全审核,审核通过后,再经应用使用部门审批确认,作为业务需求安全部分基线。

  3. 安全管理组在审核过程中,需要对该需求进行可行性分析,以判断需求是否明确,是否符合实际,是否在一定的时间范围内可以实现。

  4. IT组在获得《业务需求说明书》后,提出技术需求和解决方案,并对系统进行定义,出具《系统需求规格说明书》。《系统需求规格说明书》需详细列出业务对系统的要求(界面、管理功能、安全需求、运作模式、关键指标(KPI)等)。《系统需求规格说明书》需要由业务组提交给相关业务流程负责人确认。

  5. 对于合作开发的项目,当业务需求发生变更时,业务组应提交相应的需求变更申请,IT组组长审批后,交由安全管理组进行审核,通过后,交给合作开发商实施。

  6. 项目组应对需求变更影响到的文档及时更新。

4设计阶段

  1. 系统设计应分为概要设计和详细设计,系统设计要遵循完备性、一致性、扩展性、可靠性、安全性、可维护性等原则。

  2. 应用系统在设计阶段一定要满足的安全要求主要包括两方面:一方面是对应用系统的整个支撑环境(外部系统)的安全要求,即该环境必须具备一定的安全特性;另一方面,对应用系统设计开发过程本身也要进行控制,如在不同的设计开发阶段进行评审和验证,确保设计开发的系统满足规定的质量和安全要求(内部系统)。

  3. 外部系统的安全要求主要包括对基础架构的安全要求、和其他系统数据交换方式、通信协议、传输加密等,这些方面的安全需求在其他安全相关的设计和建设工作中进行定义和实现。同时对于开发工具、软硬件产品(如软件版本、硬件支持类型等)的选型要考虑是否有潜在的EOLEndof Life)的情况。

  4. 在系统设计阶段,需要考虑以下内容:

  • 应用系统在设计阶段一定要规划好用户身份识别和认证方面的安全要求,包括认证方式、帐号管理和密码强度等因素。

  • 应用系统设计一定要充分考虑内部系统在访问控制和授权方面的安全要求。

  • 应用系统设计过程中要充分考虑对输入应用系统的数据进行验证,以确保输入的数据是正确的和合适的。输入数据验证是应用程序开发人员需要解决的首要问题。正确的输入验证是防御目前针对应用程序攻击(SQL注入、缓冲区溢出等)的有效方法。

  • 应用系统设计过程中要考虑如何把因为应用内部处理错误而导致丧失数据完整性的风险降低到最小。

  • 应用系统输出的数据应该经过验证,以保证处理过程是正确的。

  • 在应用系统设计阶段,要确定应用系统本身配置管理的安全要求,包括配置权限的控制和配置文件的保护。

  • 对于涉及敏感数据的应用系统,在设计阶段要考虑在数据采集、传输、处理、存储等处理过程中对数据的进行加密,以保护其保密性和完整性。

  • 在设计应用系统的异常处理时,要避免泄漏应用系统内部信息和敏感数据。

  1. 项目组进行详细设计,出具《设计说明书》和《单元测试用例》。《设计说明书》中需要定义系统输入输出说明和接口设计说明。南京特师网信办组织相关人员对概要设计进行评审,出具《设计评审报告》。业务组组长、IT组组长和安全主管应参加此评审并对评审意见签字确认。

  2. 设计评审均以《业务需求说明书》和《系统需求规格说明书》为依据,确保系统设计满足全部需求。

  3. 对已确认通过的系统设计进行修改需获得管理部门、业务组组长和IT组组长的审批后方可进行。

  4. 对系统设计的修改的文档须由文档管理人员进行归档管理。

5开发阶段

  1. 应用系统的开发环境(网络、服务器和终端)要具备必要的安全要求。

  2. 整个应用系统开发过程的各阶段都应有开发文档的输出,应对文档的安全性方面内容以及文档本身的安全性予以规定。

  3. 在应用系统的开发过程中,必须严格遵守代码安全的各项要求。

  4. 应用系统开发任务外包给第三方时,应将系统的安全要求在双方认可的合同或协议中给予明确规定。

  5. 开发人员应遵循以下安全要求:

  • 应根据该员工在整个开发项目中所负责的开发内容授予其相应的权限和所应承担的责任。

  • 开发人员必须负责其开发内容的保密性,不得私自将开发的相关信息泄漏出去,即使对家人或开发团队中的其他开发人员也不得泄漏。但开发人员有责任将开发的相关信息告诉项目的负责人员或开发小组的负责人员。

  • 以书面的方式将员工的权限和相应的责任提交给员工本人。必须严格规定在为企业工作期间,所有和工作相关的开发成果的所属权都归企业所有。

  • 应根据员工权限和责任的大小确认是否需要签署相关的保密协议。

  • 应在日常工作中记录员工与开发相关的日志信息。

  • 员工一旦离职或调动岗位应立即收回或调整其相应的权限。

  1. 开发人员必须参加训练开发安全代码的能力

  • 在整个开发的过程中必须完整持续地进行代码错误处理所规定的流程。

  • 错误问题报告应力求通俗易懂,不应在其中包含任何系统细节问题。

  • 应对重要的敏感信息进行加密保护。

  • 应使用一些相对复杂的加密和密钥生成机制。

  • 应单独编写安全性设计说明概要

  1. 安全管理组应实时检查跟踪整个开发过程,检查开发过程中是否存在违规行为,并对开发过程的输出的文档进行审查。

6系统实现

  1. 项目组根据《设计说明书》制定系统实现计划,并提交项目经理对计划可行性进行审批。

  2. 系统实现包括程序编码、单元测试和集成测试。

  3. 项目组保证开发、测试和生产环境独立,为各环境建立访问权限控制机制,并明确项目成员的职责分工。对开发环境、测试环境与生产环境在物理或逻辑方面应该做到隔离;如果环境的分隔是通过逻辑形式实现的,应定期检查网络设置。安全管理组对已授权访问生产环境的人员进行详细记录,并对该记录进行定期检查,确保只有经授权的人员才能访问到生产环境。

  4. 项目组进行单元测试和集成测试,测试人员签字确认测试结果。

7测试阶段

  1. 项目组制定《系统/用户测试计划》,并提交项目经理对计划可行性进行审批。

  2. 《系统/用户测试计划》必须定义测试标准,并明确各种测试的测试步骤和需要的系统设置要求,测试内容包括但不限于:现场功能测试、渗透测试、压力测试等,并对应用系统进行攻击性测试,包括但不限于:注入、-跨站脚本(XSS)、错误的认证和会话管理、不正确的直接对象引用、安全性误配置、未验证的重定向和传递等。从而验证应用系统的安全性是否符合安全设计及安全需求。

  3. 项目组向数据拥有部门申请获取测试用业务数据的使用权,对获取的数据进行严格的访问控制,确保只有相关项目人员才能访问及使用。

  4. 项目组负责测试数据准备,测试用数据要足够模拟生产环境中的实际数据。对已评定为敏感信息的数据进行敏感性处理和保护。

  5. IT组或合作开发商建立测试环境进行系统测试。在系统测试中对新系统内部各模块之间的接口和与其他系统的接口进行充分测试。出具《系统测试报告》,测试人员签字确认测试结果。

  6. 系统测试通过后,IT组配合业务组建立用户测试环境,业务组根据用户测试用例进行用户测试,出具《用户测试报告》,业务组组长和IT组组长应在用户测试报告中签字确认。

  7. 项目组完成系统帮助文档(其中包括《用户操作手册》和《安装维护手册》)。凡涉及应用系统的变更,应对系统帮助文档及时更新。

8试运行

  1. 系统主要使用部门根据项目规模及影响决定试运行策略。

  2. 项目组制定《试运行计划》,并制定试运行验收指标,上报使用单位分管领导审批,并有网络安全负责人进行安全审核。《试运行计划》中应包含问题应对机制,明确问题沟通渠道和职责分工。

  3. 项目组联合试运行单位进行相关系统部署工作,准备培训资料,对相关用户和信息技术人员进行培训。用户培训的完成度应为实施后评估的指标之一。

  4. 项目组根据《试运行计划》进行系统转换和数据迁移。系统转换前,检查系统环境,确保运行环境能满足新应用系统的需要。系统转换时必须详细记录原系统中的重要参数、设置等系统信息,并填写试运行报告相关内容。系统参数、设置的转换工作作为系统上线的验收的评估指标之一。

  5. 数据迁移前,应制定详细的《数据迁移计划》,《数据迁移计划》中应包含迁移方案、测试方案、数据定义,新旧数据对照表、迁移时间、回退计划等信息。数据迁移计划需经项目经理和主管领导签字审批,并交由安全主管进行监督审核。

  6. 数据迁移后,项目组对数据迁移的完整性和准确性作出检查,出具《数据迁移报告》,其中包括数据来源、转换前状态、转换后状态,数据迁移负责人、对完整性检查情况、对准确性检查情况等内容。各相关部门验收转换结果后在该报告上签字确认。

  7. 系统转换和数据迁移由试运行单位业务部门和安全主管共同监督并进行验收。

  8. 系统转换和数据迁移验收通过后,正式启动试运行。在试运行过程中,试运行单位办公室把系统运行情况(系统资源使用,反应速度等)记录到试运行报告中。必要时,项目组应根据系统运行情况对应用系统进行优化。

  9. 试运行达到试运行计划规定的终止条件时,项目组编写《试运行报告》。此报告应由项目组和试运行单位签字确认,并提交安全主管审阅。安全主管审阅试运行结果,决定试运行结束或延期。

9系统验收

  1. 系统主要使用部门及信息技术部门联合组成独立系统验收小组,也可授权原项目组作为验收小组。验收小组从功能需求及技术需求层面对系统进行综合评估。

  2. 验收小组应根据验收情况整理形成《系统验收报告》提交系统主要使用部门和信息技术部门审阅。

  3. 系统主要使用部门和信息技术部门负责人根据系统测试、试运行情况签署验收意见。

10系统上线

  1. 应用系统上线前的准备工作、上线过程和上线后处理等各个环节都要考虑并满足安全要求。

  2. 系统上线应遵循稳妥、可控、安全的原则。

  3. 通常情况下,系统上线包含数据迁移工作。

  4. 项目组制定《系统上线计划》,上报南京特师主管领导审批。在上线计划得到批准后才能开始部署上线工作。

  5. 《系统上线计划》内容应包括但不限于:

  • 部署方式和资源分配(包括人力资源及服务器资源);

  • 上线工作时间表;

  • 上线操作步骤以及问题处理步骤;

  • 项目阶段性里程碑和成果汇报(项目执行状态的审阅、进度安排等);

  • 数据迁移的需求和实施计划;

  • 完整可行的应急预案和“回退”计划;

  • 用户培训计划(包括:培训计划、培训手册、培训考核等);

  • 南京大学下发的系统标准参数配置。

  1. 上线单位在上线初期需加强日常运行状态监控,出现问题时应及时处理,对重大问题应启动紧急预案。

  2. 在完成上线后要填写《系统验收评估报告》,上报南京特师项目组汇总整理。《系统验收评估报告》内容包括:数据准确性、系统性能及稳定性、接口问题、权限问题、业务操作影响度、问题处理情况、备份、批处理等。

  3. 上线单位管理层要对《系统验收评估报告》进行审批签字。

  4. 南京特师主管领导批准结项后,业务组和IT组将整理的文档提交各自部门统一管理。

11维护阶段

  1. 应用系统维护阶段要求安全管理组定期进行安全性的检查和评估,变更管理要符合相关标准的要求。

  2. 应用开发人员不得拥有访问生产系统的权限,除非符合紧急访问规定和非紧急情况只读访问规定,并按照规定得到授权。

  3. 安全主管应定期检查运行维护执行情况。

12应用系统开发外包安全管理

  1. 如果对于外包(Outsourcing)应用系统开发过程缺乏有效的安全控制,组织就会面临很多的风险,例如应用系统本身的质量问题、应用系统本身隐藏了特洛伊木马或隐藏通道等。因此组织必须对开发外包进行一定的管理确保外包的安全,建议采取以下的控制措施:

  • 应选择一个信誉与质量保证能力卓著的软件开发商来为自己开发软件。例如开发商应通过了ISO9001质量管理体系认证或软件成熟度CMM等级。

  • 应与外包的供应商签订商务或技术合同或协议,明确软件的质量、知识产权与安全要求,以及软件本身的安全功能与开发过程的安全控制要求。

  • 应与外包的供应商确定软件开发后的使用许可、代码的所有权和相关知识产权的归属问题。

  • 开发商应出具所开发的应用系统的质量证明和完成工作的精确性。

  • 应在系统正式投入使用之前仔细测试代码中是否包含了特洛伊木马程序或隐藏通道。

  1. 项目经理负责监控外包开发商的项目管理及应用软件开发活动。外包开发商应按计划定期向项目经理报告进展状态,并提交阶段性成果文档。发生重大问题时,外包开发商需及时向项目经理汇报。

  2. 项目经理监控外包开发商的质量保证过程。而安全主管对开发过程中的安全实施情况进行监督检查。

  3. 项目组同外包开发商商定验收的标准和方法。

  4. 以上各要求需要在开发合同中明确。

13附则

  1. 本制度主要针对接入校园网及互联网的软件平台系统功能性验收,由网信办负责解释和修订。

  2. 本制度自发布之日起开始执行。

10/10