軟體公司要如何保障源代碼的安全不會被外泄,不會被員工泄漏?
先回答你的問題,然後擴展開說說我的看法。
有些公司是這樣做的:- 為工作場所劃分保護級別。
- 為每台伺服器和計算機定義保護級別,並制定相應保護級別下的保護策略,包括授權和訪問方法。
- 將場所分為工作區和上網區,工作區不連外網,上網區是員工共享的非專用機。
- 封閉所有計算機的外部介面,比如USB口、光碟機沒有刻錄功能、disable藍牙,不允許計算機和U盤或手機等外設交換數據。
- 所有對外發的數據統一由高層來介面審核。
- 所有計算機安裝後台監控軟體,監控操作行為。
- 普通員工不配置筆記本電腦。
- 辦公空間安裝攝像頭監視異常行為。
- 和員工簽署保密協議。
- 等等
上面的措施的確能起到一定保護作用,但是不能保證絕對不發生問題:
- 公司開展業務必然要和外部進行信息交流,即使在硬體上做到了上述這些,如果真有居心不良的員工,那麼只是增加了作案的難度,只要能上網,想把信息傳到外部還是有辦法的,比如把想竊取的信息通過編碼的方式打包到正常外發的文件里。
- 可以在攝像頭死角的地方,暴力破壞計算機,或者把計算機硬碟拆下來拿回去研究。
- 最不濟還可以把核心代碼寫到筆記上,你總不能不讓員工寫讀書筆記吧。
- 作為這些核心代碼的編寫者,完全可以回家默寫一份,第二遍寫出來的質量還更高呢。
- 如果高層是作案者,你怎麼防呢?
軟體公司有多少是核心代碼?作為公司的管理層應該清楚自己的軟體哪些是核心的,需要進行保護的,哪些是通用的,可公開化的,不需要保護的。
互聯網公司產品的很多代碼都是基於開源框架演化來的,有些開源許可是基於GPL的,是要求其衍生物是免費開放源代碼的。雖然有很多公司會取巧地繞開這個限定條件。
對於遊戲公司,設計、策劃、代碼的保護是蠻重要的,因為開發期的遊戲設計一旦外漏,很可能就失去了市場先機。
照我看,除了專用演算法、特定的格式保護、極少數產品本身固有的設計、某些特殊行業(比如網遊)之外,很多代碼都是通用的,可開放的。- 清晰自己所在的行業特點,對代碼外泄做個風險評估,確定保護代碼安全的思路和策略;
- 劃分核心代碼和非核心代碼,分別制定保護策略;
- 在核心代碼上下功夫,能接觸這些代碼的人一定是可以信任的人,儘可能地少,但也要考慮備份人選;
- 把核心代碼做成編譯好的庫供程序調用,這樣就能降低核心代碼泄漏的風險;
- 員工入職簽署保密協議;
- 選拔高層注重品德和忠誠度,簽訂競業保護協議;
- 最後公司領導要有一個開放心態,正因為有開源的出現,才促進了計算機軟體的發展,固守著自己的一畝三分地,早晚要被對手超越。想在競爭中脫穎而出,首先要去除管理者的保守心態。開放、公平競爭才讓公司更有底氣和信心。
技術上:
1,對源代碼分級,清楚知道什麼是需要保護的
2,精細化的訪問控制,而不是svn等源代碼管理工具級別的,有些可以看到,但是不可以修改,可以動態申請許可權3,虛擬化訪問,防止截屏,複製大量代碼4,做好監控和審計,這部很重要,沒有監控的保護,幾乎是沒有保護。做到非法用戶進不去,進去了改動不了,改動了之後有記錄,記錄了會自動阻止或者報警。其他方面:安全的最大隱患不是技術上的漏洞,而是人員的管理。注重安全意識的培訓和員工的價值培訓是關鍵。源代碼保護是個整體解決方案,而不是靠單獨某種辦法工具只是輔助,不能解決你的問題。 你為什麼要保護源代碼,是全部保護還是核心代碼保護?你保護了,我記住了,還不是沒有用嗎?需要從管理入手,想辦法,簽保密合同,保證核心演算法,對於核心成員,從根本上降低他的出走,保證核心成員的道德觀。
之前在GIS行業的軟體公司待過,
這種公司一般都有地理坐標數據,
很多帶地理坐標的數據屬於國家機密,如果泄露,後果很嚴重。公司的保密制度非常嚴格,
但是保護的主要內容是數據,代碼是次要保護內容。但是應該也能給題主一些參考。保密措施跟排名第一的答案描述差不多。
公司電腦嚴格區分內網機(一般為個人電腦)
和外網機(一般為公用)。內網機和外網機物理隔離。
個人電腦的光碟機拆掉,
USB禁掉,安裝監控軟體,機箱上鎖,如特殊情況需要帶出公司,必須書面申請領導審批,然後做脫密處理,然後由網管將電腦退出內網。
內網電腦直接插上外網網線是不管用的,
外網電腦直接插上內網網線也是不管用的。外網資料如需要傳入內網,
需要到一台專人值守的電腦上中轉,並做好登記。如果需要向合作方發送帶走坐標的數據,
就算只有幾兆的數據,也得專人送過去,而不能通過郵件。公司換下來的移動存儲介質和硬碟直接銷毀。
簽署保密協議,
每周一次的安全保密檢查。前面很多人也說過了,
一份代碼脫離了它的使用環境和維護人員,除了拿來研究,就沒有太大價值了。除非是競爭對手惡意竊取,居心叵測。從另一個角度來講,
別人竊取了你的代碼,就能威脅到你的根本利益,側面說明你的商業模式還不夠成熟。公司給予員工足夠的尊重,足夠的成長空間,足夠的大方讓員工有歸屬感和感恩的心。
封閉式開發, 不過我相信在這種環境下做出來的東西肯定是一坨屎.禁錮開發人員的自由,就等於斷絕了一個藝術家靈感的來源.
採用開源協議控制代碼的版權,完全不要想用技術手段去限制,沒任何意義。保護好運營數據,比保護代碼更重要。
核心邏輯才值得保護,如果不分青紅皂白對每個員工嚴加防範.豈不是讓人心寒.再試想一下每天開發的代碼查看都要經過專人審查才可以進行又是何等的低效率. 代碼可以複製,如果連模式和框架都被輕易複製 就應該好好考慮下了.
有專業公司做這個的
用堡壘機,虛擬桌面,這樣才能杜絕代碼泄露
管理制度與技術手段需要並重,防人之心不可少。關於技術手段,SVN等變更管理適合一個手段,但是,如果是測試人員呢?沙箱是一個解決方案。當然,手段與制度是相互呼應的,手段只是制度的落地。
我剛才看了下 SVN 作為保護源代碼不外泄方面來說還是欠缺,如果不是分模塊開發的話就比較麻煩,並且即便分模塊開發也必須有1-2個人整合,那麼源代碼泄露還是可能。
這個沒辦法杜絕吧,如果有心要偷的,自己背下來不行嗎?用手機拍照不行嗎?
當然,我們可以通過一些手段,從環境上預防這類事故發生,比如部署上內網防泄密軟體。通過軟體的預防和封堵,最大程度的減少可能發生的泄密風險。這一類的軟體,有IP-guard、億賽通、明朝萬達、合天下等,都是做防泄密系統的,加密的話億賽和明朝萬達比較好,如果論整體,可以考慮IP-guard。因為IP-guard的審計和管控非常強大,加密也還行,有了審計和管控,基本上,如果真的發生泄密事件,也能查出是誰幹的,通過什麼方式泄露出去的,而加密作為最後的預防手段,如果真外泄出去,也能在一定程度上保護好源代碼不會被輕易打開。我公司在用深圳虹安公司的軟體,好像叫dsa,還可以吧,反正我也不拿代碼走,沒影響!
安全永遠是一個相對的概念,絕對的安全理論上幾乎是無法達到的。
- 以前用樹枝、石頭堆砌遮擋呆萌怪獸的進入。對於他們,這些不牢靠的樹枝就是安全的;
- 之後猛獸進化,需要完全封住,對於他們,整體無縫隙的木門就是安全的;
- 再之後,人類中出現「怪獸」,監獄的鐵門才是安全的。
因此對於不同時期,不同對象,安全都是相對的。
我們要做的正如例子中所闡釋的「以小付出換取大回報,小改進避免大問題」思路來解決安全問題。
為此,我們嘗試著、努力著:- 對於外部威脅,我們主要從技術手段進行防護;
- 對於內部,我們多偏向從道德和制度來約束和管理。
但其實,對內我們也應該同時採用技術手段更好地將企業資產保護起來。
簡單來說,三個步驟:1. 定密:哪些是需要保護的,是核心代碼;2. 定許可權:對核心代碼降低無關訪問人數,監控訪問狀態;3. 審計:配合管理制度、保密協議、審計日誌確保有據可查、有據可依。你說的這些..就算沒有源代碼也能幹到.............wow 的私服多得是..
只要有技術很牛的人+架構知識+開源項目,中國的很多公司的核心代碼即使沒有公開,也一樣搞定複製。軟體就跟文學作品,核心很多情況下就是個創意。然而創意同產品一經發布,也就公開了。 法律保護也就限制在著作權這級,沒專利的。
完全杜絕是不可能的,趁早死了這心吧!
去大的公司呆一段時間,你就知道了。。。。。還是自己去親身實踐一下。。。。。。。。。
普通的軟體項目源代碼不需要進行控制,關鍵的就是如果真的發生泄漏,會造成什麼樣的後果,根據嚴重後果分級,再制定對應的策略。普通的項目,保證一般情況下個人只能接觸到部分源代碼就可以了。
推薦閱讀:
※英特爾這樣的老牌公司為什麼會出現晶片級漏洞?
※如何看待谷歌在nexus 6上強制開啟全盤加密(FDE)導致其I/O性能低下?
※怎麼徹底沒有後患地銷毀電腦數據?
※Surface Pro3真的不需要任何安全防護軟體支撐嗎?
※為什麼有些網站可以核實用戶的身份證?數據哪裡來的?
TAG:軟體開發 | 數據安全 | 項目管理 | SVNSubversion |