源代码安全管理制度
在不断进步的时代,制度使用的频率越来越高,制度泛指以规则或运作模式,规范个体行动的一种社会结构。这些规则蕴含着社会的价值,其运行表彰着一个社会的秩序。那么拟定制度真的很难吗?下面是精心整理的源代码安全管理制度,供大家参考借鉴,希望可以帮助到有需要的朋友。
源代码安全管理制度 1
第一章 总则
第一条 为保障公司源代码安全不至于泄露,保证源代码的完整,明确源代码控制管理流程,特制定此管理办法。
第二条 本办法适用于所有涉及接触源代码的各部门各岗位。所涉及部门都必须严格执行本管理办法。
第三条 源代码直接控制管理部门为技术研发部。
第四条 本办法管理重点在于控制管理源代码的完整性,不被非授权获取,不被非授权复制和传播。
第五条 本办法所指源代码不仅限于公司开发人员自行编写实现功能的程序代码,而且还包括相应的开发设计文档及用于支撑整个系统运行所必须具备的第三方软件、控件和其它支撑库等文件。
第二章 源代码完整性保障
第五条 所有软件的源代码文件及相应的开发设计文档均必须及时加入到指定的源代码服务器中的指定VSS库中。
第六条 我们研发的产品软件运行所必须的第三方软件、控件和其它支撑库等文件也必须及时加入源代码服务器中指定的VSS库中。
第七条 软件开始编写或者调整代码之前,其相应的设计文档必须签入VSS库。软件编码或功能调整结束提交技术支撑部测试验证之前,相应的源代码必须签入VSS库。
第八条 技术支撑部门对代码的测试时必须从源代码服务器上的VSS库中获取代码,包括必须的第三方软件、控件和其它支撑库等文件,然后进行集成编译测试。
第三章 源代码的授权访问
第九条 源代码服务器对于共享的VSS库的访问建立操作系统级的.,基于身份和口令的访问授权。
第十条 在VSS库中设置用户,并为不同用户分配不同的,适合工作的最小访问权限。要求连接VSS库时必须校验VSS中用户身份及其口令。在VSS库中要求区别对待不同用户的可访问权、可创建权、可编辑权、可删除权、可销毁权。
第十一条 工作任务变化后要实时回收用户的相关权限,对VSS库的管理要求建立专人管理制度,专人专管。每个普通用户切实保证自己的用户身份和口令不泄露。用户要经常更换自己在VSS库中账号的口令。
第十二条 涉及、接触源代码的计算机必须建立专人专用制度,任何其他人不得在未获得研发部经理授权的情况下操作和使用此计算机。此计算机的专用人也不得私自同意或者漠视他人非获得授权使用本计算机。对涉及、触及源代码计算机的使用授权仅由研发部经理发出,其他人都无权执行此授权。
第十三条 曾经涉及、触及源代码的计算机在转作它用,或者离开研发部门之前必须由网络管理人员全面清除计算机硬盘中存储的源代码。如果不能确定,必须对计算机中所有硬盘进行全面格式化后方可以转做它用或离开研发部门。
第十四条 外来存储设备不得直接连接到研发部门的计算机设备上。如需拷贝文件,必须通过统一的研发部指定的公用计算机上在网管人员监督之下进行。此公用计算机在任何时候不得接触、访问、存储源代码文件。
第十五条 通过网段隔离方式使研发部的计算机只能自行组成局域网,并保证其它网段不能访问到研发部的网络和网络中的计算机设备。
第四章 源代码复制和传播
第十六条 任何源代码文件包括设计文档等技术资料不得利用如QQ、MSN、邮件等涉外网络环境形式进行传输。
第十七条 源代码向研发部门以外复制必须获得总经理的书面授权。并必需记录复制人、批准人、复制时间、复制目的、文件流向、文件版本或内容。
第十八条 源代码以任何介质形式进行存储的备份,必须由专人负责保管。对于这些介质地借阅,用于研发部内部使用的必须获得研发部经理的授权,对于用于研发部以外使用的必须获得总经理的书面授权。
第十九条 源代码的借阅、复制必须进行详细的登记,必需记录借阅人、批准人、借阅时间、借阅目的、文件流向、文件版本或内容、归还时间。
第二十条 对于以纸质形式存在的源代码清单、设计文档等,要求必需进行专人管理。对于这些纸质材料的外借、分发、复印等,只要非研发部门内部使用的情况均必需获得总经理的书面授权,对于研发部门内部使用的则必需如数按时按量回收,并且使用区域仅限于研发部门内部,对于需要离开研发部门场所的情况,同样需要获得总经理的书面授权。
第二十一条 任何纸质材料的借阅都必需记录借阅人、批准人、借阅时间、借阅目的、文件流向、文件版本或内容、归还时间。
第二十二条 对于因合作需要,需要向外复制、传播、分发源代码的,不论是全部还是部分代码和资料,均必需和对方签订技术、源码的保密协定,明确对方应当承担的对源码保密的责任和义务。
第五章 附则
第二十三条 本管理办法由研发部门制定,从批准发布之日起执行。以往公司相关制度与本管理办法冲突的,以本管理办法为准。
源代码安全管理制度 2
源代码是软件开发最重要的资源,也是开发人员思想、经验和工作的结晶。对于软件开发来说,源代码的安全是一个很重要的问题,同时也是比较难处理的问题,原因在于:
一、软件开发组织对开放源代码需求,主要表现在:
1 、协作开发的需要
随着软件规模的扩大,一个软件产品会有越来越多的开发人员参与开发,每个开发人员所开发的模块或功能总会有千丝万缕的联系。协作开发带来的一个很大的问题就是交流成本的几何级增长。而开放源码可以使交流成本得到很大的降低,开发人员可以通过阅读源代码完成一些需要交流才能实现的工作。
2 、互相学习的需要
俗话说闻道有先后术业有专攻,每个开发人员由于兴趣、开发工作的不同会在不同的方面拥有自己的经验教训,这些经验教训会有很大一部分从源代码中表现出来。在组织没有能力对开发人员进行专门培训,也没有能力进行专门的经验教训总结的情况下,开发人员之间的互相学习就变得很重要。这种互相学习在很大程度上就需要源代码的阅读。互相学习不仅对开发人员的成长非常有利,而且也有利于提高组织的生产效率,一部分代码编写模式会成为一些软性标准和规范,减少了一些技术的重复学习和研究。
3 、服务客户的需要
根据全员服务的思路,每个人包括每个开发人员都应该能够解答和处理客户的问题。由于文档不是很完善,开发人员有时必须通过源代码来做一些必要的处理,有时还需要通过源代码来了解计算逻辑。公开的源代码可以提高开发人员服务客户的能力。
4 、快速接手的需要
铁打的营盘流水的兵,开发人员的离职或多或少总会发生,但软件组织的产品开发工作却不会停止。源代码开放可以使人员离开对一个项目的影响降低,有利于快速接手离职人员的工作。
5 、提高效率的需要
源代码开放可以提高代码调试、测试、系统集成的效率,对于快速定位错误、快速处理问题都有极大的好处。
6 、提供二次功能开发的需要
对于某一部分源代码,开放的源代码使二次开发有了可能性,也有利于提高开发人员进行二次开发的积极性。
二、对软件开发组织来说,需要保证源代码安全,主要表现在:
1 、知识产权保护的要求
作为软件组织产品的组成部分,程序源代码属于软件组织重要的知识资产。程序源代码的泄露和流失,会给软件组织带来直接的经济损失。
2 、软件产品安全性的要求
源代码中一般会包含一些敏感信息,例如加密算法、重要业务逻辑等。这一部分源代码的泄露和流失会给产品用户的数据安全带来很大风险。
3 、源代码明确责任的要求
源代码的安全管理对于明确责任也很重要。哪个开发者可以对源代码进行操作,如果不能很好控制,将会给源代码的质量带来不小的影响。
三、源代码安全管理还有很多限制条件
1 、软件产品自身特点的限制
软件产品是一种知识产品,属于软产品,其复制、破解、反编译理论上都可以实现。特别是.Net 技术产品,其反编译可达到基本还原的境地。虽然也有混淆、加密等种种方法来实现反编译的保护,但基本上都不能从根本上保护产品。因此,软件源代码的保护有时感觉就是一种心理安慰,实际上很难起到应有的作用。
2 、技术能力的限制
源代码在开发人员之间保护的前提,一是每个人开发的模块要在逻辑上是***的、平行的,二是要有足够多的逻辑***、平行的模块。而要实现这两个条件,必须要有较高的.系统分析、设计技术。而在目前的情况下,系统分析、设计技术正是最欠缺的,技术上的先天不足使得分析设计足够多的逻辑***、平行的模块基本上没有可能。
3 、开发模式的限制
目前的开发过程中,存在着一些当下还不能解决的问题:
(1 )需求不清。由于客户对软件产品认识的不足和客户在IT 方面的不成熟,在开发过程中客户往往不能提供清晰的需求甚至不能提供需求,需求是在开发人员的开发模型上不断完善的,功能在不断的变化甚至完全推翻模型。
(2 )基本上没有分析和设计的过程,模块也在不断的改变
(3 )由于客户一般急于看到产品,开发过程仓促,调试过程简单粗糙,再加上分析设计的不完善,代码本身就包含一些逻辑错误
(4 )测试基本上没有,很多问题遗留给用户
这些问题的存在限制了代码的分离,使得建立起***的模块非常困难。
4 、源代码管理工具的限制
VSS 是常用的源代码管理,它的共享管理方式本身就是不安全的。
5 、人员素质的限制
开发人员的技术水平还较低,对业务逻辑的理解不深,使得开发出来的源代码漏洞较多。再加上分析设计的不完善,在代码引用时,错误率较高。引用代码的开发人员在调试时很难确定故障的症结,浪费较多的时间。特别是有逻辑顺序的功能模块,源代码的完全分离增加了调试的难度,增大了交流成本。
四、对开发人员来说,需要开放源代码,主要表现在:
1 、自己开发的源代码是开发人员思想、经验的体现,开发人员在很多时候需要通过源代码来积累知识;
2 、从源代码中获得其它开发人员的开发思想和经验,实现互相学习;
3 、从源代码中获得对业务逻辑、算法的资料,提高开发效率;
4 、调试中可获得调用模块中的错误信息,提高调试的效率;
五、对策和措施
源代码的保护非常重要,开放源代码也有很多理由,软件开发组织要如何应对?
1 、确定关键模块,对关键模块进行重点保护。
选择关键模块的原则可以有:
(1 )包含敏感信息的模块。例如加解密算法。
(2 )基本逻辑模块。例如数据库操作基本类库。
(3 )功能单一、性能稳定的模块。
对这些模块,可以采取程序集强命名、混淆、加密、权限控制等各种有效方法进行保护。
2 、其它模块
其它模块一般使用源码开放方式进行开发,体现对开发人员的信任、对开发人员的激励,便于尽快提高开发人员的技术水平,减少重复开发的可能性,提高开发、调试、测试的效率,提高对客户的服务水平。
源代码安全管理制度 3
1、源代码安全管理-文档加密
文档加密核心在于文档创建时即加密,并与用户、权限相结合。加密后,授权用户正常双击打开使用,非授权用户则显示为乱码、无法使用,从而实现源代码防泄密目的。但由于源代码文件有很多明、密进程同时操作或交替访问某个文件,极容易造成异常,特别在编译、调试等操作过程中出现频繁中断或者失败。
2、源代码安全管理-沙盒防泄密
沙盒防泄密本质上是一种访问控制,主要通过应用层访问控制策略来实现隔离目的,并没有实现彻底的隔离效果。更重要的是沙盒防泄密技术依然没有摆脱对进程的严重依赖,比如:其仍然必须要判定可信和非可信进程、对进程做加密和解密处理、设置黑白名单、区分机密和普通端口等。显然,沙盒防泄密技术并没有从根本上克服依赖进程所带来的安全性与稳定性问题。另,沙盒防泄密技术还涉及到文件偏转存储问题,导致性能损耗更大。
3、源代码安全管理-数据安全隔离
数据安全隔离则采用虚拟底层驱动加密隔离技术,在隔离效果上更彻底,对源代码数据隔离达到的安全性更高。更重要的是,数据安全隔离技术并不是针对文件进程的隔离,而是在文件进程的更底端来处理数据、与进程无关,从而使得数据安全隔离技术更加安全、稳定、简便。另外,其各终端之间构建的'安全加密子网也是区别于其它技术的重要特点之一。
总体而言,由于数据安全隔离并不对代码文件本身进行处理,也完全避免了对代码文件进程的依赖(在进程更底端来处理),使得其对计算资源的要求较少、性能损耗更低,同时也更加安全、稳定。