精编应用系统开发安全管理通则vfd_第1页
精编应用系统开发安全管理通则vfd_第2页
精编应用系统开发安全管理通则vfd_第3页
精编应用系统开发安全管理通则vfd_第4页
精编应用系统开发安全管理通则vfd_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

则vfd中国石油信息安全标中国石油信息安全标准编号:应用系统开发安全管理通则 (审阅稿)前言随着中国石油天然气股份有限公司(以下简称“中国石油”)信息化建设的稳步推进,信息安全日益受强信息安全的管理和制度无疑成为信息化建设得以顺利实施的重要保障。中国石油需要建立统一的信息安全管理政策和标准,并在集团内统一推广、实施。息安全相关标准与规范,提高中国石油信息安全的技术和管理能力。信息技术安全总体框架如下:息技术安全架构从逻辑上共分为7个部分,分别为:物理环境、硬件设备、网络、操2)对于13个《规范》中具有一定共性的内容我们整理出了7个《标准》横向贯穿整个架构,这7个《标准》的组合也依据了信息安全生命周期的理论模型。每个《标准》都会对所有的《规范》中相容。我们在行文上将这7个标准组合成一本《通用安全管理标准》单独成册。3)全文以信息安全生命周期的方法论作为基本指导,《规范》和《标准》的内容基本都根据预防本通则讨论了在企业内部自行开发一套应用系统或外包开发所必须考虑到的安全问题。开发应用系统的样,拥有越坚固的地基楼房越是稳定,因此如果在应用系统的开发阶段打好坚实的安全基础,那么以后的日常维护工作就会很轻松。以下我们主要从系统开发的各个阶段入手,阐述在标准的开发流程的各个阶段中所应注意的安全性考虑。本规范由中国石油天然气股份有限公司发布。本规范由中国石油天然气股份有限公司科技与信息管理部归口管理解释。起草部门:中国石油制定信息安全政策与标准项目组。II应用系统开发安全管理通则说明在中国石油信息安全标准中涉及以下概念:中国石油(PetroChina)指中国石油天然气股份有限公司有时也称“股份公司”。集团公司(CNPC)指中国石油天然气集团公司有时也称“存续公司”。为区分中国石油的地区公司和集团公司下属单位,担提及“存续部分”时指集团公司下属的单位。如:辽河油田分公司存续部分指集团公司下属的辽河石油管理局。中国石油信息网(PetroChinaNet)指中国石油范围内的计算机网络系统。中国石油信息网是在中国石油天然气集团公司网络的基础上,进行扩充与提高所形成的连接中国石油所属各个单位计算机局域网和集团公司网络(CNPCNet)指集团公司所属范围内的网络。中国石油的一些地区公司是和集团公司下属的单位共用一个计算机网络,当提及“存续公司网络”时,指存续公司使用的网络部分。各个下属各地区公司的网络部分,包括中国石油总部局域网、各个二级局域网(或园区网)和连接这些网络的专线远程信道。有些单位通过拨号线路连接到中国石油总部,不是利用专线,这样的单位和所使用的远程信道不属于中国石油专用网主干网组成部分。地区网地区公司网络和所属单位网络的总和。这些局域网或园区网互相连接所使用的远程信道可以是专是拨号线路。指,在一座建筑中利用局域网技术和设备建设的高速网络。园区网是在一个园区(例如大学校园、管理局基地等)内多座建筑内的多个局域网,利用高速信道互相连接起来所构成的网络。园区网所利用的设备、运行的网络协议、网络传输速度基本相同于局域网。局域网和园区网通的协议、传送速率都与局域网和园区网不同。传输信息的信道通常都是电信部门建设的。二级单位网络指地区公司下属单位的网络的总和,可能是局域网,也可能是园区网。经常保持连通状态的信道;拨号线路,指只在传送信息时才建立连接的信道,如电话拨号线路或ISDN拨号线路。这些远程信道可能用来连接不同地区的局域网或园区网,也可能用于连接单台计算机。石油专网与公网石油专业电信网和公共电信网的简称。最后一公里问题建设广域网时,用户局域网或园区网连接附近电信部门信道的最后一段距离的连接问题。这段距离通常小于一公里,但也有大于一公里的情况。为简便,同称为最后一公里问题。请参见《中国石油局域网标准》。应用系统开发安全管理通则V1概述72目标7 3适用范围7 4规范引用的文件或标准8 5术语和定义96应用系统开发总体原则117系统需求收集和分析阶段127.1可行性研究分析12 7.2开发人员安全管理14 7.3建立系统开发安全需求分析报告15 8系统设计阶段的安全规范17 8.1单点访问控制且无后门17 8.2人员职责和权限的定义178.3确保敏感系统的安全性178.4确保访问层的安全性178.5确保日志管理机制健全188.6新系统的容量规划18 9系统开发阶段安全规范19 9.1系统开发语言199.2系统开发安全相关工具管理规范279.3控制软件代码程序库29 9.4在软件开发过程变更管理31 9.5开发版本管理32 9.6开发日志审核管理34 9.7防御后门代码或隐藏通道34 10系统测试阶段安全规范36 10.1应用系统的安全性检测3610.2控制测试环境38VI应用系统开发安全管理通则 10.3为测试使用真实的数据39 10.4在软件转移至生产环境前进行测试3910.5应用系统安全质量鉴定3911系统培训及文档阶段安全规范4011.1新系统的培训4011.2撰写新系统和系统改进的文档4012应用系统开发外包安全控制41附录1参考文献42 附录2本规范用词说明43 1概述此2目标本规范的目标为:,3适用范围4规范引用的文件或标准下列文件中的条款通过本标准的引用而成为本标准的条款。凡是不注日期的引用文件,其最新版本适用于本标准。1.GB17859-1999计算机信息系统安全保护等级划分准则2.GB/T9387-1995信息处理系统开放系统互连基本参考模型(ISO7498:1989)3.GA/T391-2002计算机信息系统安全等级保护管理要求4.ISO/IECTR13355信息技术安全管理指南8应用系统开发安全管理通则6.英国国家信息安全标准BS77997.信息安全基础保护ITBaselineProtectionManual(Germany)10.信息系统安全专家丛书CertificateInformationSystemsSecurityProfessional术语和定义访问控制accesscontrol一种安全保证手段,即信息系统的资源只能由被授权实体按授权方式进行访问,防止对资源的未授权使用。应用系统applicationsystem认证authenticationa.验证用户、设备和其他实体的身份;b.验证数据的完整性。授权authorization给予权利,包括信息资源访问权的授予。可用性availability数据或资源的特性,被授权实体按要求能及时访问和使用数据或资源。缓冲器溢出bufferoverflow指通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。保密性confidentiality数据所具有的特性,即表示数据所达到的未提供或未泄露给未授权的个人、过程或其他实体的程度。隐藏通道covertchannel可用来按照违反安全策略的方式传送!数据的传输信道。完整性integrity在防止非授权用户修改或使用资源和防止授权用户不正确地修改或使用资源的情况下,信息系统中的数据与在原文档中的相同,并未遭受偶然或恶意的修改或破坏时所具的性质。敏感信息sensitiveinformation由权威机构确定的必须受保护的信息,因为该信息的泄露、修改、破坏或丢失都会对人或事产生可预知的损害。系统测试systemtesting用于确定系统的安全特征按设计要求实现的过程。这一过程包括现场功能测试、渗透测试和验证。后门代码trapdoor通常为测试或查找故障而设置的一种隐藏的软件或硬件机制,它能避开计算机安全。而且它能在非常规时间点或无需常规检查的情况下进入程序。特洛伊木马Trojanhorse一种表面无害的程序,它包含恶性逻辑程序,导致未授权地收集、伪造或破坏数据,以此破坏计算机安全与完整性的进程。验证verification将某一活动、处理过程或产品与相应的要求或规范相比较。例:将某一规范与安全策略模型相比较,或者将目标代码与源代码相比较。能够迅速恢复到正常的运行状态的能力。10应用系统开发安全管理通则6应用系统开发总体原则应用系统的开发应遵循一系列的总体原则,以确保开发过程中的安全。其中包括:a性而忽略了系统的实用。b)c)d)e)度。。f)应充分利用现有的资源。12应用系统开发安全管理通则7系统需求收集和分析阶段7.1可行性研究分析可行性研究宜从技术、需求面、投入和影响四个方面进行考虑:7.1.1技术可行性分析要求的系统功能。通常可从以下三个方面进行分析:a)人员技术能力分析,指公司内的系统开发队伍或外包的第三方开发公司是否b)计算机软件和硬件分析,指公司现有的软件和硬件的性能是否足够满足开发c)管理能力分析,指现有的技术开发管理制度和管理流程是否成熟且标准化,7.1.2需求可行性分析7.1.3投资可行性分析7.1.4影响可行性分析7.2开发人员安全管理7.2.1系统开发人员职责分配在系统开发的过程中,应明确不同人员的身份和职责。在系统开发过程中具体可分以下三种角色:7.2.2开发人员授权a)应根据该员工在整个开发项目中所负责的开发内容授予其相应的权限和所应b)开发人员必须负责其开发内容的保密性,不得私自将开发的相关信息泄漏出c)以书面的方式将员工的权限和相应的责任提交给员工本人。必须严格规定在d应根据员工权限和责任的大小确认是否需要签署相关的保密协议。e在日常工作中记录员工与开发相关的日志信息。7.2.3开发人员必须训练开发安全代码的能力a)在整个开发的过程中必须完整持续地进行代码错误处理所规定的流程。c)应对重要的敏感信息进行加密保护。d)应使用一些相对复杂的加密和密钥生成机制。e)应单独编写安全性设计说明概要14应用系统开发安全管理通则7.2.4分离系统开发和运作维护。发安全需求分析报告安全需求计划应能够达到期望的安全水平。其中包括了成本的预估,完成各个b)所有关于应用系统的更新或改进都必须基于业务需求,并有业务事件支持。这开发安全需求分析计划应由开发项目经理和公司内部的安全小组共同商议决应确保每一个应用系统的用户都意识到系统的更新或改进都与其自身密切相试评估,以保证不会对业务造成任何不良影响。f)业务需求是系统更新和改动的基础,因此必须清晰明确地定义业务的需求,禁8系统设计阶段的安全规范8.1单点访问控制且无后门8.2人员职责和权限的定义8.3确保敏感系统的安全性8.4确保访问层的安全性8.5确保日志管理机制健全序库的更新审核记录。8.6新系统的容量规划应考虑以下方面:系统的预期存储容量和在给定的周期中获取生成和存储的数据量。进程的数量和估计可能的占用资料16应用系统开发安全管理通则系统和网络的响应时间和性能,即端对端系统系统弹性要求和设计使用率(峰值,槽值和平均值等)24x7运作要求和可接受的系统宕机次数(维护或者设备更新导致的必须性宕机)估9系统开发阶段安全规范9.1系统开发语言9.1.1通用规范输入验证在客户机/服务器环境下,进行服务端的验证而不是客户端的验证(例如基于Javascript的验证)。通过在客户端和服务器之间放置一个代理服务器,可以很容易绕过客户端验证。有了代理服务器,攻击者可以在数据被客户端“验证”后修改数据(与“man-in-the-middle”攻击类似)。在实际的校验中,输入校验首先定义一个有效(可接受)的字符集,然后检查每个数据的字符是否边界检查(例如字符串的最大长度)应在字符有效性检查以前进行。边界分析可以防止大多数缓冲从环境变量获得的数据也需要进行验证。同时避免在环境变量中存放敏感数据(例如密码)。某些Unix系统(例如FreeBSD)包含ps命令,可以让用户看到任何当前进程的环境变量,这常常会SQL语句的SQL语句调用特别危险,难以防止攻击者使用输入域或者配置文件(由应用程序载入)来执行注释代码(commentedcode)它们不是最终应用程序的一部分。无论如何应在实际的环境中删除它们来避免意外的执行(一般注18应用系统开发安全管理通则释标识被删除后就无法激活休眠的代码,但还是存在可能性的,所以应执行这项工作)。错误消息使用包含编号的一般的错误信息,这种信息只有开发者和/或支持小组才能理解。一般的错误信息的例子是“发生了错误(代码1234),请您与系统维护部门联系。”统一资源定位(URL)内容对于web应用,不要在URL上暴露任何重要信息,例如密码、服务器名称、IP地址或者文件系统路径(暴露了web服务器的目录结构)。这些信息可以在攻击时使用。例如下面就是一个不安全的URL: http:///index.cgi?username=USER&password= PASSWORD&file=/home/USER/expenses.txt设置PATH变量变量,例如试图执行一个任意的程序。这些也可以应用于大多数其他的语言。9.1.2Perl语言多年以来,Perl已经成为用于系统管理和WebCGI开发的功能最强的编程语言之一(几乎可以使用Perl实现任何功能)。但其扩展应用,即作为Internet上CGI的开发工具,使得它经常成为攻击。下面列举了一些开发者(特别是CGI程序员)可以使用的主动的预防性的措施来增强Perl代码的整体安全性(请注意:这不是web服务器CGI脚本安全性的指导原则)。Taint验证用户输入(任何程序外的输入)来操纵其他的外部程序(例如通过管道将数据导入另一个程序执行))。一般而言,程序员不能信任输入脚本和程序的数据(叫做Tainted数据),因为无法保Taint验证可以通过在命令行参数加入“-T”来开启。例srbinperlTTainted数据包括命令行参数、环境变量和来自文件的数据。引用tainted数据的变量也成为tainted数据。如果脚本试图通过不安全的方式来使用tainted数据会产生一个致命错误(对这种情况称为“不安全的依赖”(Insecuredependency)或者其他的说法)。启用tainted验证在有些情况下会导致脚本停止运行,常常是由于Perl解释器要求所有脚本引用的外部程序的完全路径必在PATH环境变量中列出,同时PATH中包含的每个目录除了目录的所有者及相应的所有者用只要可能就应使用taint验证,特别是代码执行其他程序功能时(例如在CGI脚本的情况下)。安全模块如果不但输入数据不可信而且实际的代码也不可信会产生什么情况?例如用户从网站上下载了一安全模块让程序员可以在Perl脚本中将不同的代码模块与安全对象相联系。每个安全对象对于运警告参数(-w)。twbinperlTw9.1.3Java语言了安全问题,因此它具有的限制特征有:收集不再使用的内存碎片的垃圾收集器,严格的相关的规范:不应在标准输出上打印消息在实际的Internet系统中避免使用System.out.println()或者System.err.println()打印日志和错20应用系统开发安全管理通则封装入agege所有标准库中的类都默认是可以公共访问的(除了由“sun”开头的类)。为了保证一个包的安全性,必须修改${JAVAHOME}/jre/lib/security文件夹中的java.security文件。该文件中的重要行是:esssun虽然该方法有作用,但仍存在问题。例如程序员在java.security文件中定义包的安全时必须十分sun者“sunshine”等包进行保护。JAR密封(sealing)。JAR(JavaARchive)文件是一些类的打包压缩格式的文件,从该JAR文件加载。为了起用密封(sealing),必须在建立JAR文件时这样设置密封(seal)参e使用密封(sealing)的JAR文件比权限(permission)设置更好,因为它不需要安装安全管理器政策文件Java要编制一个定制9.1.4C/C++语言缓冲区溢出pyatntf寸及确定输入的类型。格式化字符串攻击(FormatStringAttack)该类攻击往往与缓冲区溢出相关,因为它们往往主要利用了某些函数的假设,例如sprintf()和bufferstring数据(这些数据中例子建议使用下面的代码。zeofbuffersstring者使用调试器),然后必须知道如何精确访问特定的内存空间来操纵栈中的变量。22应用系统开发安全管理通则执行外部程序rsizeofbufferemacssfilename在以上的例子中,可以通过使用分号利用文件名变量在sehll中插入额外的命令(例如文件名可以是/etc/hosts;rm*,这将在显示/etc/hosts目录文件的同时,删除目录中的所有文件)。而exec()函数只保证第一个参数被执行:binemacsusrbinemacsfilenameNULL竞争条件(racecondition)进程需要访问资源时(无论是磁盘、内存或是文件)通常需要执行两个步骤:源不再使用为止再去访问它在有较大权限的程序上(称为setuid程序)。竞争条件攻击通常利用程序执行时可以访问到的资下面的建议有助于缓解竞争条件(racecondition)攻击:在进行文件操作时,利用那些使用文件描述符的函数而不使用那些使用文件路径的函数(例如使用件进行操作前,无法使用文件连接(符号式的或是物理的)来改变文件。fcntlflock就不能被其他进程检验有效的返回值检验有效的返回值非常重要。一个例子是旧的/bin/login的实现中不检验错误的返回值,导致当24应用系统开发安全管理通则9.2系统开发安全相关工具管理来检查代码(而不是在QA环境中实际进行白箱或者黑箱测试)。然而,有时代码在开始实际环能SourceCodeAnalysisToolSCAT的有发现真正的错误信息。d报表-扫描结果应以一种容易理解的格式来显示,并且最好同时提示修改每个问法,并附加理由。an关于这些语句在缓冲区溢出和格式化字符串攻击中怎样被利用可以查阅相关的C和C++文档。总体而言Pscan程序相对简单,易于使用,同时针对性很强,但是由于它能够适用的范围过于狭片断。相比较Pscan,它返回的错误信息要丰富很多,并且也更加详细。而这对于程序员来说非常重26应用系统开发安全管理通则9.3控制软件代码程序库9.3.1管理运作程序库的可能性,应对运作程序库的访问进行严格的控制:a)严格的管理在开发设备上的存放开发运作程序的目录。如果开发运作程序没b)只有指定的人员如程序库管理员经过适当的管理授权后,才可以访问运作程严格的访问控制可以通过以下规定实现:b)严格管理开发用途的计算机使用,只有指定的人员才可以访问开发用的计c发运作系统的认证管理,建立严格的基于人员职责的授权等级建立双重访问控制机制9.3.2管理源程序库机程序被破坏的可能性,应对源程序库的访问进行严格的控制:a)严格管理在开发设备上的存放源程序的目录。如果源程序没有很好的保护,则系降。b)只有指定的人员如程序库管理员经过适当的管理授权后才可以访问源程序库,对源程序库的更新和向程序员发布的源程序应由指定的管理员根据一定的授权进h应保存所有对源程序库进行访问读取或修改的日志记录,以便日后审核。9.5.1控制程序清单28应用系统开发安全管理通则9.4在软件开发过程变更管理a)系统容易受到未经授权的变更的影响,即使是完全授权的更改也可能存在破坏求分析、设计、编码、测试、培训等)的每一个更改实施前必须经过组织的评审与授权。b)对于敏感的应用系统的更改应由另一人员进行检查,为了有效的进行控制,组需c)更改的程序宜如下:清晰确认所有需要更改的应用系统、信息、数据库和相关的硬件设备。清晰确认更改的原因(业务上的具体流程和具体的需求或开发上的需求)。保留相关的授权登记记录。确保对所有的更改请求进行审核跟踪。更改的实施选择了适当的时机,以确保更改的实施不会干扰正常的业务9.5开发版本管理源程序相关信息可以帮助确认系统问题的根源,并且一旦掌握了系统源程序相关信息可以清楚地了解系统的运行逻辑和可能的薄弱点,对系统的安全有很大的影对应用系统开发源程序的打印资料、电子版本或者是相关的报告都必须进行9.5.2版本升级控制a)应用系统软件开发版本升级申请。当软件的版本由于更新、修改等操作需要b)应用系统软件版本升级测试。对升级的应用系统进行测试,确认系统的各种。c)应用系统软件版本审批。对应用系统的版本的升级,应确认当前的版本为最d)应用系统软件版本升级计划。制定相关的升级计划,确保将系统升级对业务e)应用系统软件版本升级实施。9.5.3版本变更控制ab)应使用软件加锁技术防止不同版本相互覆盖的情况。c)当版本变更时应在更新的版本中记录变更的详细描述。d应提供版本的合并功能。e版本的更改应只允许指定的人员进行操作。f)应记录所有的版本变更的日志,其中包括更改日期、更改前版本号、更改后30应用系统开发安全管理通则9.6开发日志审核管理9.6.1开发日志的定期审计和人员权限的定期审核开发日志定期审计a)系统开发中的相关日志文件应根据开发周期定期审核开发人员权限定期审计b)开发人员权限定期(3个月)审核一次;9.7防御后门代码或隐藏通道9.7.1后门代码和隐藏通道介绍a,主要指由攻击者在未经许可的情况下,植入计算机系统的程序。利用调用环境的权利进行与其实际用途无关的拷贝、滥用或破坏数据,主要有三种类型的后门程序:b)隐藏通道,主要指在计算机安全技术中,一种允许某个进程在违反安全规则的9.7.2防御后门代码和隐藏通道的相关办法a应从信誉好的软件供应商那里购买相关的软件或程序。b源程序和源代码。c)在系统正式投入使用之前应进行评估,如一些行业的标准认证评估(产品安全不应过于相信别人,不得随便安装别人给的软件,特别是不得随便打开电子。h)安装并正确地使用有关的特洛伊木马的监测和查杀程序,现在大多数主流的32应用系统开发安全管理通则10系统测试阶段安全规范10.1应用系统的安全性检测计详细的测试计划、测试范围、测试方法和测试工具。试的内容同时还需要包含测试预期的结果。并且测试计划还需要覆盖除此之外的测试内容和结10.1.2测试种类测试的过程需要用户的参与以确保系统达到了业务上的需求和用户使用的需求。因此主要分为系系统测试人工环境下,测试系统是否能够达到从系统开发的角度而言,系统测试是指由系统开发人员(程序员和其它技术人员)进行的,旨在确保系统各个模块能够正常运行(模块测试)以及系统整体能够正常运行的测试过程。系统测试必须确保系统的每一个功能都能够正确运行,并对所有的程序错误逐一分析。同时还测试系统的模块责,试计划中规定的测试准则即可。➢➢➢➢:数据的总体存储容量序数量设数量b)压力测试➢➢理等。用户接受测试-UAT历a)尽管系统的用户接受测试计划可能随着系统的不同而不同,测试必须涵盖所有今b对任何系统而言,对于出现的问题必须要明确要对这些问题做出哪些应对措施以微的影不能上线。“主要问题”——测试可以继续,但是如果不解决该问题,则系统上线后,可能对业务流程有严重破坏。“一般性问题”——除了这些问题会对既定的业务流程有一些轻微偏离业务流程没有或者很少有影响。要采取的行动和各自需要承担的责任等问题取得一致。例如,可以要求马上解决严重程度为1的34应用系统开发安全管理通则d最终用户和系统开发上必须就每一类错误的数量有一个上限。有10.1.3在测试的过程中详细描述每个和测试方案相关的测试步骤和测试数据10.2控制测试环境10.3为测试使用真实的数据数据时,可以采用以下措施保护测试数据的安全:a)对测试的系统进行严格的访问控制。只允许小部分的测试人员进行测试。且测试的人员应签订安全保密协议。b的运作信息复制到测试系统时均需要一个单独的授权过程。c后,应立即将相关数据从测试的应用系统中删除。d)记录下测试数据的复制、使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论