題:
適用於有能力的開發人員的公司計算機,您該如何處理?
grochmal
2016-08-30 20:19:49 UTC
view on stackexchange narkive permalink

這是對是否有正當理由需要我使用公司的計算機的後續措施。通常,因為在某些特定情況下會遇到很大的問題。

如果我一直在組織的安全工程師一職,那麼我肯定會制定一項政策,只允許使用公司計算機。這確實是有道理的,不僅可以保護公司數據,而且還可以保護員工的責任。

但是,在某些情況下,這樣的策略會困擾我:稱職的開發人員(我不是在談論初級職位開發人員,我正在談論中高級開發人員)可能會在他的工作計算機上使用:

  • 17個數據庫引擎;
  • 20個docker容器;
  • 10個測試虛擬機(比方說使用 qemu 之類的東西)。

這是在啟動和啟動後(啟動時)非常普遍的情況設法存活了幾年)。此外,由於該開發人員可能正在測試新技術,因此每週將更換其Docker容器和虛擬機。

要求該開發人員每次都請安全工程師來安裝新軟件是完全不切實際的。 。此外,由於一家公司將擁有不止一個這樣的開發人員,因此,為所有人使用典型的公司管理的計算機會帶來一些缺點:

  • 維護六台計算機對於有能力的安全工程師來說,這樣的開發人員是全職工作。
  • 這些開發人員的經理會非常生氣,因為他的團隊在50%的工作時間裡正在等待安全工程師

另一方面,允許開發人員自由使用計算機是危險的:一個流氓Docker容器或虛擬機,而您卻有內部人員。我什至要說這些開發人員的計算機比普通用戶(例如,具有電子表格軟件的經理)的計算機更危險


您如何為有能力的開發人員制定明智的政策?

以下是我想到的(或在過去看到的)其他一些解決方案,其中大多數都非常糟糕:

  1. 禁止從開發機訪問互聯網:

    • 您需要訪問互聯網才能閱讀文檔;
    • 您需要
  2. 為開發人員提供兩台計算機,一台用於Internet,一台用於開發計算機:

    • 關於生產力下降的投訴:輸入 Alt + 2 來獲得瀏覽器的速度比切換到另一台計算機要快;
    • 存儲庫訪問很麻煩:在一個地方下載然後復製到另一個地方
    • 鼓勵開發人員規避安全性並在兩台計算機之間建立基於USB的連接,以便他可以在一台計算機上工作(看到它發生了多次)。
  3. 將開發移至服務器(即不在台式機上進行開發):

      這只是將相同的問題更深入了,現在流氓容器在服務器上;
  4. 比允許開發人員在自己的計算機上完成自己喜歡的事情更糟。
  5. ol>

    必須有更好的方法。

相關:[授予開發人員對自己的PC管理員權限的風險](https://security.stackexchange.com/questions/14967/risks-of-giving-developers-admin-rights-to-their-own-pcs)
有關堆棧溢出的信息:[開發人員應在其PC上擁有管理員權限](https://stackoverflow.com/questions/701214/should-developers-have-administrator-permissions-on-their-pc)
老實說,我發現沒有給予開發人員自己的計算機以完全管理員權限是完全不合邏輯的,而且大多數大公司似乎都明白這一點。我當然不會為沒有的公司工作。只是不要雇用完全無能的人。
那是我所聽說過的最糟糕的安全工程師。聽起來更像是瘋狂的錫箔紙。我希望這只是一個極端的例子,現在還沒有真正發生。實際上,以可用性為代價的安全不是安全。阻礙業務發展,阻礙人才發展並不是安全。查看CIA三合會,尤其是“可訪問性”部分。
祝您好運,並且願意在無法管理的計算機上工作。
alt + 2是什麼意思?
@HC_像“ Alt” +“ Tab”一樣切換窗口,但是索引到特定窗口。在Windows上,“ Win” +“ 2”將執行相同的操作。
@MarkBuffalo-不幸的是,我確實在我工作過的兩個地方發現瞭如此瘋狂的錫箔紙。是的,我沒有在那里呆很長時間。不利的一面是,完全不合邏輯的政策(例如,給開發人員提供與銷售團隊相同的計算機,並將開發移至服務器。與生產服務器相同的子網!),並且受到製造它們的人的強烈捍衛。
@HC_-Bergi說了大部分。但是我想補充一點,耕種窗口管理器使用“ alt + 2”(或更常見的是“ winkey + 2”)之類的東西來切換桌面。並且(可以說)人們辯稱平鋪窗口管理器效率更高。
容器和VM的大量不受控制的空間必須完成任何開發;這是完全控制主機的合理選擇。包含網頁瀏覽通常是可以的。開發人員希望完全控制機器的地方是,在容器中運行IDE或在VM中運行速度太慢的情況。 只將白名單二進製文件執行和打開端口的想法與開發人員需要的相反。在那兒,對控制的需求(通常與安全性混淆)造成了不可能的情況。
在發現該公司不允許開發人員訪問互聯網後,我拒絕了一份工作。當您一天中的大部分時間都是“研究為什麼x會執行或不執行y”時,沒有互聯網是一個荒謬的障礙。
關鍵服務和網絡的設計應能夠在受到威脅時保護自己。開發人員計算機的任何管理都是*保護計算機本身,*而不是保護其他系統*免受它的侵害。*但是,如果開發人員能夠輕鬆拆除並自動重建環境,那麼他們將取得更大的成功,因此他們的計算機不應不需要太多關注。
可以物理訪問計算機以及實時登錄訪問,實際上可以保證,如果他們願意,那麼稱職的開發人員將在5分鐘內擁有本地管理員權限。這是安全劇院。
您是否從未聽說過活動目錄或域控件,OP?
Imo:將它們放在具有特定網絡規則的單獨網絡中。
帶自己的盒子
十三 答案:
paj28
2016-08-30 21:06:16 UTC
view on stackexchange narkive permalink

分開開發和生產

通常的做法是為開發人員提供其工作站上的本地管理員/超級用戶權限。但是,開發人員應該只能訪問開發環境,而不能訪問實時數據。有權訪問生產環境的系統管理員應該擁有更多受控制的工作站。理想情況下,sys-admin工作站應該沒有Internet訪問,儘管在實踐中很少見。機器。但是,這對開發人員來說很煩人,因為VM降低了性能,並且安全性並不是那麼好。因此,更常見的是,開發人員僅擁有對自己工作站的完全訪問權限。

我們使用並推荐一種使用所謂的PAW(特權訪問工作站)或SAW(安全訪問工作站)的方法。需要訪問產品的用戶可以使用一個工作站/筆記本電腦來日常使用和工作,而使用第二個鎖定工作站/筆記本電腦來進行日常使用和工作。生產訪問。
@Xander我喜歡這種設置,儘管根據團隊的規模,這種設置的成本很高。
@Xander-因此,您是這種“實踐中罕見”方法的真實示例。對你好!我能問一下你在哪個部門嗎?我在政府供應商和航空航天業中經常看到這種情況。
@paj28我為Microsoft工作。是的,我們不僅教書,而且在這裡也已完全實施它。:-)
我想知道。如果開發工作與sysadmin工作由同一個人執行(在啟動中的另一種常見情況),該怎麼辦。我猜每個開發人員都應該獲得一個PAW和一個SAW。
如果有問題的組織希望保護其源代碼以及數據不被洩露該怎麼辦?您不能阻止開發人員訪問代碼。
@JonathanPullano-在這種情況下,您需要更強大的控制。有關[此問題](http://security.stackexchange.com/q/128249/31625)的一些信息。大多數組織都接受內部人員竊取源代碼的風險,因為這類控件的開銷非常大。
您在這裡如何定義“生產”?項目經理的機器是“生產”的嗎?同一公司的其他非開發部門呢?
@jpmc26-關鍵是環境是否保存實時用戶數據。項目經理的機器將包括內部電子郵件和文檔,這些電子郵件和文檔是機密的,但不如用戶數據敏感。我通常會說項目經理不是生產人員。其他部門,例如客戶支持,將可以訪問實時數據,我認為它們是生產中的。
@JonathanPullano:沒有切實可行的方法來防止堅定的開發人員放棄源代碼。您將必須切斷所有互聯網訪問,甚至執行X射線身體搜索(從內到外),以防止驅動器被偷運。您將不得不禁止所有打印-並觀看垃圾桶等。接下來,您需要禁止所有方式拍照;這意味著沒有電話,照相機等,同時也使用攝像機來主動監視每個人的活動。這將創建一個很少有開發人員願意工作的環境。
@NotMe,將是解決人類問題的機械解決方案的完美示例-也不起作用,因為人們可以記住信息,並且[不會引起X射線](https://xkcd.com/294/)。唯一真正的解決方案是全面了解和理解(準確預測)人們的誠實行為和誠信。其他任何事情(實際上是)都是由於未能充分理解人的思想而造成的。
除非您進行嚴格的代碼審查,否則可以使用受損的開發人員機器在軟件中引入安全漏洞,然後使用該漏洞來破壞生產系統。
@CodesInChaos-不管管理員如何訪問,這都是一個問題。我同意代碼審查是解決方案
coteyr
2016-08-31 20:32:15 UTC
view on stackexchange narkive permalink

所以這個答案是從開發者的角度出發的。記在腦子裡。

首先,在我自己的計算機上沒有“本地管理員”權限,這表明我應該在其他地方找工作。如果每次需要更新(或測試)新的依賴項或工具時都需要徵求許可,那麼幾乎不可能編寫代碼,擺弄東西並維護工具鏈。因此,這是我需要的權限級別。請記住,可以這麼說,我通常在梯子上很高。

  • 在我的本地計算機上進行全面和完整的管理
  • 在所有開發和測試硬件上進行完整併完整的管理
  • 對產品的某些級別的管理員訪問權限服務器(這很棘手,我不需要或想要所有東西,但是我需要足夠的診斷和修復生產中出現的問題,以及足夠實際地部署代碼(假設我是必須監督代碼部署的人)。通常,這種訪問級別會隨著時間的推移而發展,但從日誌文件開始。

然後再減少,您就可以找到新的開發人員。

也就是說,在那裡如此高的訪問級別會帶來很多風險,因此我通常建議您使用單獨的網絡,將所有開發人員的“東西”放在自己的網絡中,自己的廣告,自己的文件託管,自己的所有東西,並且永遠不要讓(但要讓它進入互聯網)

是的,這意味著重複的硬件(或VPS),但無論如何您都需要進行測試。是的,這意味著更多的負擔在升級或管理時會出現提示,但是再次需要進行測試。您還需要一個位置來查看“如果升級AD服務器,X軟件會發生什麼?”看一下,您已經準備好用於這種測試的整個測試機器網絡。

我成功實現的(在一個優秀的IT團隊的幫助下)是為所有開發人員“資料”提供的單獨VLAN,以及一個開發人員可以完全訪問的單個VPS主機,可以進行任何所需的操作。在該主機上是一台由IT部門設置為看起來像公司的AD服務器的較小版本的AD服務器。然後是一組文檔和準則,例如關於Web服務器應運行什麼的內容。什麼DNS服務器應該運行,什麼xyz服務器應該運行。然後,“開發”的一部分就是安裝和配置供我們使用的VPS。該VLAN上的所有內容都與生產完全隔離,並被視為公司外部。最後,為我們確實需要訪問的資產(例如電子郵件)創建了一組“打孔”。通常,這就像我們在外部一樣進行處理,並且這些工具的列表很少。

很棒的答案,我大部分時間都是半開發者,因此我可以肯定地聯繫在一起。我只會嘗試使用單獨的硬件,VLAN可能配置錯誤(並且經常配置)。IEEE 802.1Q有幾個缺陷,可以允許[VLAN跳變](https://en.wikipedia.org/wiki/VLAN_hopping)。當然,當今大多數交換機都會在不需要的端口上禁用中繼,但是有時在切換電纜時有人將其留在了交換機上,但是由於VLAN可以正常工作,所以似乎沒有出現任何錯誤。
抱歉,您不能具有“對生產服務器的某些級別的管理員訪問權限”。我要帶給您的最好的是,您與我一起上WebEx(等等)或在我的辦公桌前衝浪,然後告訴我您想要什麼,然後我把它交給您。 開發人員無法接觸質量檢查或生產服務器。您向我們的管理員提供代碼,然後將其部署到質量檢查部門,然後讓測試人員在進行生產變更之前徹底解決問題。如果我讓開發人員接觸我的QA或Prod服務器之一,他可能會做出我無法複製的未記錄的更改。
之所以將其擴展到QA,是因為QA環境必須盡可能接近於Prod環境,以便在Dev中可以正常工作但在Prod中中斷的任何硬編碼ASS | U | ME-tions都將在QA中先中斷這樣我就可以告訴您修復該問題,然後再將其提交給Prod ..
蒙蒂的理念是保持原始生產環境的關鍵。他使用的關鍵詞是“複製”-很多時候,開發人員(我知道開發人員:十年來我一直受開發困擾,雖然我偶爾會復發,但我正在慢慢接受這種治療,儘管我偶爾會復發),會發現它已經壞掉並修復了。是的,他們解決了!但是,您是如何“修復”它的?你還打破了什麼?嗯盡快進行備份將使我們付出比制定已定義的變更計劃更為昂貴的代價。誠然,這些做法僅與“安全性”相關,但是它們仍然非常重要。
-1
這個。作為開發人員,我每天(有時每小時)安裝和卸載軟件。如果我必須等待某人告訴我可以這樣做,那麼我會去別的地方。如果您失去對我機器的控制權,我會去別的地方。我為高摩擦工作站的公司提供諮詢。通常,開發商的士氣低落,而體面的開發商則忙於完善自己的簡歷。
我相信PCI-DSS規範說開發人員無法訪問生產。我們有一個單獨的團隊來訪問生產並將更改提交回代碼庫。如果您在PCI-DSS環境中(例如,處理信用卡付款),則可能無法獲得產品訪問權限。
@lsd PCI要求開發人員不能具有對生產的管理員訪問權限,但是PCI-DSS v3.2,要求6.4.2指出,開發人員可以“擁有一個對生產環境進行用戶級別訪問的單獨帳戶”。
@MontyHarder我什至更進一步地說,對生產的任何更改都應該通過完全自動化的部署系統來進行,該系統需要至少一位高級開發人員和sysadmin的批准。手動部署代碼總是會在某些時候導致問題。
啊,我們根本沒有給他們訪問權限。日誌是散落收集的,因此他們必須查看所有日誌。
不確定VLAN是否可以為您提供安全的隔離。開發人員需要自己的局域網...
@Isd: PCI-DSS傢伙會詛咒我。我是首席開發人員,也是PROD系統管理員。
Ray
2016-09-01 11:07:22 UTC
view on stackexchange narkive permalink

從開發人員的角度來看:

您的工作是防止更改(已知的錯誤和漏洞勝於未知,對嗎?),但我的工作是更改事物。這使我們陷入僵局。我的工作是創建/更改事物。如果您的政策阻止了這種情況,那麼與其他障礙一樣,我的工作的一部分就是找到解決該問題的方法。

您認為哪種危險更大?他需要做的事情,或者通過學習如何規避所有防禦措施而獲得這種訪問權限的人?為什麼當您應該一起工作時,您的公司為什麼要付錢給您和您的開發人員抗衡這場戰爭呢?與他們交談。在少數情況下(無塵室進行反向工程會產生重大法律後果,或處理絕密機密的政府數據),您需要更複雜的政策。但在大多數情況下,這沒什麼大不了的。如果您發動戰爭並使您的開發人員成為敵人,那麼他們將離開或變得比您與他們合作時更加危險。

明智的措施包括不允許在開發筆記本電腦上進行生產數據庫轉儲(僅使用虛假數據)。這樣,如果筆記本電腦被盜,則不會丟失任何機密數據。但是,如果開發人員需要調試東西,他們仍然需要在受控環境中某處訪問生產數據庫的副本。

限制Internet訪問是荒謬的。您可能還需要所有開發人員用羽毛筆和墨水在紙上編寫代碼。

與開發人員對話,找到一種方法,在保持工作水平的同時,為他們提供所需的工作您需要確保重要數據安全的安全性。詳細信息將取決於您的公司以及正在處理的數據。但這並不需要採取嚴厲的措施。

除了業務定義您的角色並根據其需求和目標限制您的工具。如果他們要您使用筆和紙,那就是他們的要求。
@schroeder-如果您想找到其他工作,那是您的電話。
這是個好的觀點。
@schroeder是。企業有權享有自己想要的愚蠢程度,但是愚蠢的企業除了愚蠢的開發人員和大量損壞的軟件外,別無所求。
如果筆記本電腦被盜,是否應該對磁盤進行加密?
@Andy是的,磁盤加密絕對是另一種明智的措施。
Lucas Kauffman
2016-08-30 20:31:02 UTC
view on stackexchange narkive permalink

安全工程師不維護計算機,這是服務台所做的。在您的情況下,您將要求他安裝三個工具:

  • 管理程序
  • docker
  • 數據庫軟件

從那裡他可以根據需要添加和刪除用於開發的機器(不需要秒工程師干預)。關於您的“流氓容器”。通常,您不將容器部署到另一台服務器,而是部署docker文件,這些文件從代碼存儲庫中提取代碼或下載經過簽名的已編譯代碼的二進製文件(甚至更安全)。

就流氓而言,我只能想像攻擊者獲得訪問權限並添加更多代碼。這就是為什麼您需要在SDLC的每個步驟中都嵌入安全性,以確保在將所有代碼推上前至少要由另一位開發人員檢查或通過所有代碼。此外,您還可以集成代碼掃描器以自動掃描可疑或易受攻擊的代碼存根。

實際上,這取決於您的第三點。像Riot Games這樣的公司正是這樣做的。他們發現限制聰明人將導致這些人規避控制。因此,他們決定使用簡單的規則和有效的意識培訓來確保將安全性放在首位,並賦予他們充分的管理特權。他們分發了一些小卡片,上面寫著他們應該注意和注意的事項。

我需要說,我真的很喜歡提供培訓而不是鎖定計算機的想法。優秀的開發人員對技術很感興趣,而對安全威脅如何影響其計算機的良好培訓可能只是吸引他們的興趣的正確選擇。棘手的部分是如何構建此培訓,它肯定不能與提供給公司其他部門的培訓相同。
您對Riot Games的評論有引用嗎?我懷疑會在他們的工程博客中
簽名的容器二進製文件?哈哈,我想知道實際上有多少人這樣做。我敢打賭,大多數容器都涉及通過純文本HTTP從隨機第三方網站上下載Shell腳本,以設置某種新型的node.js混亂。
他們在Brucon發表的演講中的@DanPantry部分
@MattiVirkkunen更好,從SO複製/粘貼。
@MattiVirkkunen聽起來像是* [希特勒使用Docker](https://www.youtube.com/watch?v=PivpCKEiQOQ)*的一個諷刺。“誰會使用DockerHub的公共容器?您知道它們都是由俄羅斯黑客製造的!您不妨`curl | sudo bash`”
Martijn Heemels
2016-09-02 02:21:53 UTC
view on stackexchange narkive permalink

我們為開發人員提供了在其計算機上的管理員訪問權限,並讓他們知道規則是什麼。大多數運行Linux,但我們在Windows上也有一些開發人員。他們都知道將文檔,設計等存儲在我們的文件共享中(具有更具體的權限),並將其源代碼推送到我們的Git服務器。

他們還知道我不會花很多時間解決其操作系統的問題。如果他們的計算機出現故障,我們通常會擦拭它並重新安裝操作系統。常見的應用程序和設置是通過Puppet自動安裝的,剩下的事情他們自己來做。他們中的大多數人都有一個帶有點文件(其環境的設置和首選項)的Git存儲庫。

在這種情況下,他們失去的時間對於他們中的大多數來說是足夠的動力。他們喜歡完成工作,而不是花時間去修復操作系統。如果他們因為重要的工作只存儲在本地而丟失了重要的工作,那麼他們將遭到同事和老闆的皺眉。

我們不會阻止任何網站或應用程序(基於DNS的反惡意軟件過濾器除外) ),但對於諸如非法軟件之類的事情有一些公司政策規則。大多數情況下,我們都依靠同伴的壓力。在Facebook上度過時光的人效率低下,持續時間不長。我們的許多政策都是建立在榮譽制度的基礎上的,而且看起來效果很好。

我希望更多的人對他們的開發人員有如此大的信心,因為信心是兩方面的關係。當然,這需要一個非常好的招聘流程,您根本無法負擔不起無能的開發人員。再說一遍,您應該“始終”以只聘請合格的開發商為目標。
James_pic
2016-09-01 18:03:01 UTC
view on stackexchange narkive permalink

這從根本上取決於上下文。考慮以下兩個設置,我在野外都遇到了這兩個設置:

  • 開發人員在自己擁有或擁有完全訪問權限的機器上工作,甚至包括安裝自己的操作系統。他們如何編寫應用程序沒有任何限制。只要將它們連接到包括VPN在內的網絡,他們就可以通過SSH訪問生產系統。
  • 所有開發都在一個空白的開發實驗室中進行,不允許開發人員將電子設備帶入其中。所有計算機均已預安裝所有允許的軟件。可部署的工件通過物理介質安全地傳遞給負責部署的另一個團隊。

這兩種設置在上下文中都是適當的-考慮到組織面臨的威脅和需求

這裡有一個基本的權衡。從第一種可能性轉向第二種可能性都會降低生產率。對應用程序有任何控制權的任何人都處於受信任的位置。您不信任他們做的任何事情,要么是您要么必須做,要么創建一個移交過程供他人去做。不降低生產力就無法撤銷信任。

mgjk
2016-08-30 22:08:58 UTC
view on stackexchange narkive permalink

這取決於您正在開發的軟件類型和組織的規模。

對於小公司中單個Rockstar開發人員的工作站,我會使用執行級別的安全例外。風險(包括IT人員,管理人員和開發人員的煩惱)必須加以討論,但最終,如果搖滾明星不能如願以償,他可能會搬到另一家公司。這些人不能容忍摩擦,如果遇到摩擦,他們可以輕鬆地找到更有趣的工作場所。

比超級工作站更典型的場景是擁有一個開發集群,在該集群中,運營可以管理生活和VM死機後,將通過IDS / IPS監視環境,並且(在開發群集上)Internet訪問受到限制,但可以根據需要打開。例如,對於“文檔...”,將與您的開發工作相關的每個技術來源都列入白名單沒有錯。開發人員無論如何都不會隨意插入代碼。他們需要記錄其來源並驗證怪異的許可證。

如果您能引起搖滾明星的注意,他可以幫助將要求推向運營和執行人員,並設計集群和流程,並教育開發團隊

如果有預算,並且開發人員不願意……那麼恕我直言,您不是在與搖滾明星打交道,但歌劇女主角和他們的抱怨應該直接承擔該執行風險。

最困難的部分是管理機器的使用壽命,並確保開發人員的想法不會變成“類似操作的”開發人員-生產系統。但這比開發人員工作站上的VM容易得多。

*“將與您的開發工作相關的每個技術來源都列入白名單沒錯” * ...您會花所有的時間將網站添加到白名單中,直到開發人員決定找到一個摩擦較小的地方。
給您的rockstar一個單獨的管理員帳戶,該帳戶僅用於管理他的工作站。這樣,它就與他用來瀏覽SE的帳戶隔離了(上帝知道其他哪些網站,其中一些網站可能攜帶惡意軟件)。
@LucasTrzesniewski-如果開發人員不必費心去記錄他們的代碼源,我很高興看到他們繼續前進。與我合作過的優秀開發人員傾向於更喜歡知道他們的同行沒有從具有可疑歷史和未發布許可證的隨機git倉庫中獲取信息。順便說一句,我在這裡談論開發平台,而不是他們的工作站。
哦,我明白您的意思了,我將“源”理解為與開發相關的任何網站(文檔,博客,其他資源)...您的立場對我而言現在更加有意義。也許您應該編輯該句子以闡明意圖。
話雖這麼說,開發人員傾向於將*大量*庫用於任何不重要的項目,(重要的是)在選擇最終要使用的庫之前,他們必須嘗試更多的庫。我全都明確定義和審查了代碼依賴關係,但是按情況訪問開發資源將是*主要* PITA,並且會阻礙開發週期。
從開發集群訪問文檔,博客等是很奇怪的,因為開發人員通常不使用GUI訪問那些機器。他們的工作站則不同。通常,我會為他們提供完全訪問權限,並通過公司政策和培訓禁止他們刪除某些公司控制措施,例如許可證審核工具,防病毒等(如果需要)。他們應該將真正垃圾的,不受信任的庫拉到本地虛擬機到沙箱中,然後再將其放入開發集群中。如果他們不確定這樣做,則不應該單獨評估它。
“開發人員通常不使用對這些計算機的GUI訪問權限”這僅適用於Linux世界。
“ rockstar”開發者是個敗類。如果某人過於抬高自己的頭腦,以至於無法對他們施加合理的約束/限制,那麼……猜猜在團隊中工作需要什麼?
Tim X
2016-09-02 08:44:29 UTC
view on stackexchange narkive permalink

這個問題提出了許多有趣的問題和挑戰。作為從事開發人員多年然後進入安全領域的人,Ican非常感謝響應和評論中表達的許多論點和觀點。不幸的是,沒有一個確切的答案,因為正確的解決方案取決於上下文,風險敞口和組織的風險承受能力。

安全性不是絕對可以衡量的。每當您遇到安全人員時,他們總是絕對地談論並堅持執行特定的策略,而不管其他任何事情,這要么是經驗不足,要么是無能。安全工程師的作用是促進業務流程,而不是阻礙業務流程,並確保根據相關的安全風險來製定業務決策。一個好的安全工程師會知道,任何阻止員工工作的策略都將不可避免地失敗,因為員工會找到解決該策略的方法。通常,這些變通辦法的安全性甚至更低。安全經理的職責是了解組織內的各種角色,並確保以這樣的方式組織策略:政策不僅支持角色要求的內容,而且鼓勵良好的做法並阻止不良的做法。這可能非常困難,尤其是在大型組織中。同時,開發人員和組織中的其他人員也需要認識到他們可能不具備所有相關信息才能理解為什麼需要某些策略。開發人員和其他人常常將安全工程師視為障礙或乾擾官僚,他們不了解完成他們的工作需要什麼。

通常,通過溝通來解決這些問題。我經常讓開發人員感到沮喪,因為他們認為毫無意義的某些政策正在阻礙他們。一旦我們坐下來討論 問題,通常會發生許多事情;

  • 開發人員要么誤解了該政策,要么已讀懂了不正確的假設,並且給人以為該政策可以防止某些事情發生。通常,這將導致對策略進行審查以提高清晰度
  • 安全工程師意識到合法的業務需求,而這種需求必須以維持足夠的安全控制的方式來滿足。這很可能導致對該政策的審查。
  • 開發人員會意識到其他一些需求或風險,這些需求或風險最初並不明顯。這通常會導致開發人員確定滿足他們要求的替代解決方案
  • 確定了一個問題,該問題無法以組織可接受的風險承受能力(即可接受的風險級別)之內的任何一方來解決。 )。這種情況通常會導致將問題升級到執行級別以做出決定。這樣做的難度將取決於組織的規模和結構。一旦做出決定,開發人員和安全工程師都需要在執行人員設置的參數範圍內工作,以找到他們可以找到的最佳解決方案。

有很多至關重要的響應對他們的生產力水平產生不利影響的政策。儘管任何開發人員都應該提出此類問題,但最終還是必須接受執行人員做出的任何決定,或者尋找替代雇主。假設您知道得更好,或者您有權無視這項政策,這對您和您的雇主來說都是自大和危險的。如果您確信自己是對的,那麼您應該能夠說服管理層。如果您不能做到,或者您不如您想像的那樣,缺乏足夠的溝通技巧來提出令人信服的論點,不具備所有信息或正在為 無能的雇主。在行業工作了35年之後,儘管Dilbert可能會引起您的思考,但後者並不像您期望的那樣普遍。在這方面最常見的衝突根源是溝通不暢和缺乏信息。您會錯過團隊負責人,經理和執行人員還需要管理的更大的圖景。賦予開發人員很多自由和信任的環境,這導致了高水平的生產率,但是卻導致了其他問題-關鍵開發人員長時間離開或患病而其他人都無法負擔的情況之所以能夠正常工作,是因為它們全部位於其唯一配置和管理的桌面上,或者試圖調試由於缺乏標准設置/配置而無法輕易重現的難題,或者由於開發人員意外離開正在運行的某些服務而導致的可疑的安全漏洞。缺乏標準的安全控制。作為專注於特定領域或技術的開發人員並不能保證在其他所有方面都具有專業知識。在安全性和/或環境管理方面,我曾與之合作過的一些最優秀的開發人員表現最差。這可能部分歸因於對特定問題的關注,而更可能僅僅是由於容量。我們誰都沒有能力跨越所有事物,因此我們需要認識到有時候,向那些擅長我們不擅長的領域的人致敬很重要。

不斷變化的環境

限制策略在桌面上可以執行的操作的主要原因之一是基於以下基本假設:本地網絡中的桌面比桌面具有更高的信任級別網絡外部的桌面。傳統上,它們位於防火牆和其他外圍 防禦並可以移動訪問信息資源。這意味著它們帶來了更高的風險,因此需要更多的安全控制措施。限制策略/措施的其他原因包括環境的標準化,可以降低支持成本並提高一致性(尤其是當更多應用程序依賴於平台/ OS時,尤其如此-記住所有需要AtiveX或特定版本IE的可怕應用程序)。虛擬機和容器,雲服務和商品IT服務的增長以及網絡容量的增加導致許多變化,這很可能使此線程中提出的許多問題變得無關緊要。特別是,向零信任網絡的轉變可能會發生重大變化。在零信任網絡中,與網絡外部的設備相比,看不到網絡內部的設備具有任何特殊的額外信任級別。僅由於您具有正確的IP地址,所以您無法訪問資源。相反,信任更多地基於用戶和設備信息的組合。確定您可以訪問什麼的策略由您的憑據和您要從其連接的設備確定。該設備所在的位置無關緊要。這也是一個模型,非常適合BYOD的增長,員工流動性的提高以及基於門檻/能力和非地理位置的僱用員工需求的增長。

一旦您刪除了“信任”級別與設備相關聯,您無需控制可應用於設備的內容。您可能仍要求設備支持特定的配置文件-例如,如果他們的設備運行Windows XPetc,則您可能拒絕允許任何人訪問您的資源。但是,您不必擔心設備。同樣,您不會直接在設備上進行過多的工作。在某種程度上,設備將 更像瘦客戶機。您將使用遠程託管的VM和容器。這本身並不能解決所有問題,並且可能只是將其中一些問題從本地桌面移至遠程VM或容器。但是,一旦將其與各種DevOps樣式編排結合起來,則開發人員可能需要增強特權的許多原因就被刪除了。例如,您可能不需要訪問生產系統。新代碼的推廣將通過精心設計的持續集成系統進行,當您需要調試問題時,將為您提供與生產系統完全相同的VM或容器。

這些更改均不會發生神奇地解決任何問題,但它們將提供範圍更廣的更靈活的工具和解決方案,而這些工具和解決方案可能會降低複雜性。降低複雜性將使安全管理更加輕鬆。更加容易的安全管理將減少對工作職責的無意或不必要的限製或障礙。但是,歸根結底,關鍵要求是

  • 通過一種尺寸不能全部滿足所有人的要求進行識別。一切都需要在組織的範圍內進行評估。
  • 願意將組織的需求放在首位。
  • 良好的雙向溝通。
  • 各方願意努力尋求可以相互接受的解決方案,
  • 各方願意妥協的意願
  • 願意在系統中工作並調整您的工作流程或首選的工作方式以符合組織的要求
而且,我們甚至不談談在物聯網設備出現時零信任網絡的重要性。“鳴叫的杯子”通常構造得很差,以至於破壞了任何明智的安全措施。我只是想知道如何管理“用戶和設備信息”以授予對系統的訪問權限。被動指紋識別(可能是openBSD的PF的偽裝?)
是的,物聯網是一個問題,並且肯定會加速向零信任網絡的發展。面臨的挑戰是用戶身份驗證-我們如何使它既可用又安全,並避免珍貴數據的“蜜罐”。幾乎可以肯定某種生物識別輸入。就像電力存儲是太陽能一樣,Authn是ICT的聖杯。一旦我們克服這些困難,很多事情都會改變。
Lucas
2016-09-21 21:42:52 UTC
view on stackexchange narkive permalink

我也是開發人員,這是我的看法:

問題比您想像的還要嚴重

沒有湯匙

開發與軟件。開發是指製造或改善產品,服務和流程。軟件是重要的工具,但不是唯一的工具。優秀的開發人員將在更廣泛的意義上定義流程,以了解要創建哪些軟件組件以及要建議的人力,後勤,風險管理流程。開發依賴於尚未實現的人員,後勤和書面流程的軟件系統沒有任何意義。

開發沒有規則,因為開發正在定義規則。這就是使開發成為最惡劣的安全環境的原因。

但這並不意味著不應建立某些控制措施。相反,許多控制應該由開發團隊自己設置。

工程過程

有些公司主張在自上而下的過程中將業務與技術分開。這實際上很受歡迎,因為這表明沒有技術知識的商人應該居於首位。 懶惰的人喜歡。但是在工程中,自上而下的設計根本行不通。 Feyman(1985)在分析挑戰者爆炸事件的總統委員會上發表了一篇不錯的文章。從根本上講,自上而下的工程設計最終會使公司破產。而且我的市場經驗進一步加強了這種理解。

挑戰者爆炸就是一個很好的例子。美國國家航空航天局的經理在調查委員會的鏡頭上作證說,他們開發了一種橡膠,該橡膠在冰點以下60度下仍能保持柔韌性。由一位專員進行的一項簡單的高中物理實驗(將橡膠成分放入鉗中壓入冰水中)與這一事實相矛盾。這是一個很好的例子,因為這種橡膠成分需要柔軟,以使助推器不爆炸。由於這樣做需要夏季溫度,因此增壓器僅在夏季工作。單個組件的特性定義了整個產品的可見特性,這是非常有限的。

工程應該自下而上進行,因為您需要了解每個組件的局限性和弱點,以精製流程來減輕它們的影響。 。緩解過程通常不是軟件,並且會影響產品的成本。這意味著各個組件的特徵和局限性將定義產品,服務和過程的特徵。

自上而下的過程從根本上打破了。在紙上採用這種哲學的許多公司仍然在市場上取得成功。但是,當您考察他們的大型項目和最成功的項目時,您會發現它們是在正常公司規則範圍之外進行的。擁有深厚的工程知識和對市場有遠見的人得到非正式授權後,就會獲得最大的成功。由於這是非正式的,因此管理層認為自上而下的過程是有效的。他們認為所有其他團隊都不稱職。對於最初的項目大綱在離開“頂層”階段時被完全忽略並且沒有描述所構建的產品,服務和過程的事實視而不見。

您的經理可以定義您在月底之前設計一個遠程傳輸設備,因為他得出的結論是,這將使旅行業務獲得高額利潤……但那不會實現。自上而下的項目就是這樣,設定了技術上不合理的期望。

不要誤會我的意思,很高興能從多個角度看到問題。自下而上,自上而下,SWOT等等對於分析是健康的,但是真正的工程工作是自下而上的。沒有技術可行性就沒有真正的目標。

開發安全性

我們要記住,軟件開發人員將定期更改公司軟件,因此,他們可以:更改任何人的屏幕上顯示的內容,向包括他們自己在內的任何人發送自動電子郵件,或打開後門以執行他們想要的操作。這意味著僱用為開發人員的罪犯可能會對公司造成重大損害。

最糟糕的是,有許多公司沒有執行源代碼存儲庫證據,然後僱用的開發人員可以提供與給定源不同的二進製文件。這使犯罪的開發人員可以劫持公司的系統,如果不僱用他們的話,這些事情很快就會停止工作。

對我來說,開發安全性應集中在:

  • 源代碼版本控制:確保將所需的源代碼和第三方組件存儲在安全的位置。
  • 戰略分工:初級和臨時開發人員必須只能訪問源代碼和數據。他們只需要訪問要更改的組件,就可以避免初級開發人員能夠理解所有系統的內部工作原理並加以利用。
  • 信任核心開發人員:高級/核心開發人員將必須了解所有內容,可以訪問所有內容,計劃和分發任務以及診斷嚴重問題。這個核心必須在開發和生產中都可以訪問整個事物。他們是您制定安全策略的合作夥伴。我們必須接受核心開發者擁有公司的所有權。我的老老闆曾經說過:“我們很幸運,盧卡斯站在我們這邊,另一方面他會摧毀我們”。核心開發人員如果願意,可能會造成很大的損失,並且沒有防火牆和生產控制措施可以防止這種情況發生。
  • 通過防火牆隔離環境:將您的開發網絡與您的測試網絡,從您的生產網絡。在一家公司中,我定義了網絡10.1。作為發展,10.2。作為測試和10.3。作為生產。 10.2和10.3網絡僅通過公司CVS接收代碼,並根據admin命令自動構建它們。儘管這是一家小型初創公司,並且我在生產和開發團隊中工作,但我還是做了一些官僚機構來避免自己的錯誤(開發人員可以是您最好的盟友)。我還通過網絡更改了終端顏色:在生產服務器中連接時,終端背景為紅色,測試為黃色,開發為綠色。由於我所有的服務器都使用相同的配置,因此如果打開提示,很容易將它們混淆。以我的經驗,大多數問題來自未經測試的軟件和新軟件的安裝。明確說明:我認為您在哪裡是一項強大的安全功能。它與訪問無關,但與安全性有關。
  • 聘請經驗豐富的測試開發人員:測試的關鍵方面是擁有大量良好的模擬數據,這些數據對於公司面臨的問題有意義。蒙特卡洛(Monte-Carlo)模擬非常適合生成對其他開發人員有意義的大型數據集,並且可以帶來更強大,更靈活的軟件和流程。對我而言,沒有“生產”失敗,開發人員總是要怪罪。必須編寫維護任務和意外事件。軟件必須具有彈性。
  • 源代碼審查:讓人們在接受修改之前先審查源代碼。所有項目都應在源代碼控制上進行分支,並應檢查合併。源代碼審查僅應困擾於惡意軟件檢測,訪問升級,訪問配置文件以及對源代碼含義和作用的良好解釋。代碼的質量將通過測試而不是源代碼審查來保證。您可以在大多數開源項目中看到這一點。
  • 測試策略測試更多是一種企業文化,而不是框架。一些公司採用市場框架,進行一些測試,但是其代碼質量很差。發生這種情況是因為您需要能夠進行有意義的測試的人員。實際上,開發必須成為測試驅動的。我不知道其他安全的開發方式。令人奇怪的是,人類,採購和諮詢服務也都必須經過測試。供應商常常聲稱他們的產品性能完美無缺,但是我還沒有發現完美的產品。
  • 如果不加以監控,政策是毫無意義的。我知道一家公司有一個官僚機構,即每個數據庫表都應該在屬性級別上有描述。 95%的屬性被描述為“ $ {table name}的$ {attribute name}”。它沒有解釋屬性的真正含義,值可能包含的內容和內容。
  • 適當的薪酬和工作環境。要擁有技能和個性上都不錯的開發人員,您必須有良好的薪酬政策。金錢固然重要,但還遠遠不夠。您還需要具有遠見/穩定性,真正的認識和良好的工作環境。例如,您可以選擇一個較小的城市,而在紐約,該開發辦公室中人們居住在小公寓中,而相同的報酬可以使房屋更大,更接近工作地點。更大的計算機,良好的實驗室對於技術愛好者來說也是一個加分。
  • 數據安全許多活動需要敏感的生產數據,應在專門的實驗室中進行訪問。除非您的信息是公開的或不敏感的,否則最好的策略可能是將實驗室放置在物理訪問受控的良好社區中。只允許將一些模擬數據放在不敏感的個人筆記本電腦和組件上。那是可能的。例如,我為一家公司開發了45億條記錄的訪問量很大的數據存檔。我當時在家中工作,因此完全不使用公司數據。當我提交代碼時,它在第一次嘗試中就按預期工作。除了硬件故障和生產環境的遷移,我們在10年內具有100%的可用性。開發人員隨身攜帶源代碼的風險不相關。這個特殊的系統花了我3個月的時間進行開發,這次大部分時間是為了了解組件的性能限制。現在,這就是我內心的知識。即使沒有源代碼,我也可以在大約一周的時間內重新開發此解決方案。
  • 強大的日誌對於了解每個人所做的事情都很重要。最好的辦法是由框架生成日誌,記錄短時間的詳細屏幕,更長的訪問和活動時間,甚至更長的公司日誌。每當訪問屏幕(包括屏幕設計)時,我的關鍵系統都會記錄日誌。一些關鍵資源應該由觸發器本身記錄在數據庫本身上,並且應該標記關鍵表或資源以進行源代碼審核。
    -日誌篩選很難手動完成。了解如何在日誌上進行過濾以查看關鍵事件。一種非常有用的過濾器是使投訴報告與用戶訪問權限和活動交叉。如果您有足夠的日誌,則會發現巧合。例如:在問題user1始終登錄之前。

關於不訪問生產系統

要求開發人員不訪問生產系統的規則是因為用戶在那里以避免開發人員提交代碼以向他/她自己的用戶顯示特權信息。我認為這是一個非常非常弱的安全措施,很容易在源代碼審核中檢測到。有幾種簡單的方法可以避免此問題:

  • 開發人員加一名低薪員工;
  • 向自己發送電子郵件;
  • 打開一個系統中的後門。

尋找後門,訪問升級和惡意軟件的源代碼審核似乎更有效率。它允許您在測試漏洞利用程序時將其識別出來並予以解僱。當然,熟練的開發人員可以將漏洞隱藏起來,因此使用清晰明了的語言和變量名很重要。僅在需要特殊性能或混淆性的應用程序的書面證明中使用奇怪的解決方案。例如,1 << 4與1 * 16相同。這僅在語言本身沒有進行此優化並且發生性能瓶頸的情況下才有意義。出於同樣的原因,太多的符號語言也是不好的。源代碼應該是任何怪胎都可以讀取的。

問題比您想像的還要嚴重

開發人員可能造成的最容易和最嚴重的損害與工具安裝無關。即使開發環境是託管的,如果公司沒有強大的防火牆,源代碼存儲庫,僅基於源代碼存儲庫和代碼審查的基礎架構,也不會有太大的改變。

編寫該代碼需要付出很大的努力(+1表示努力),但我需要指出,您很幸運,我精通葡萄牙語。我一遍又一遍地看到這種一致性錯誤,我可能會修復大多數錯誤。答案一開始很好,但隨後在源代碼方面走下坡路,最後有所改善。但是,最重要的是,您忘記了人們使用公司提供的計算機的主要問題:如果開發人員得到了特洛伊木馬該怎麼辦?在這種情況下,10.1、10.2、10.3子網肯定不會保護您免受有能力的攻擊者的侵害。
謝謝。這也發生在葡萄牙語中,我的初稿有時在某些地方有些混亂,因為我寫得太快了。感謝您的修改。
除IP的第二個數字外,兩個網絡的網絡分隔應完全相同。可預測性允許更好的防火牆規則和更好的腳本來移動事物。如果將sort與Linux服務器和策略結合使用以避免外部組件,則有助於在測試和生產網絡中抵禦特洛伊木馬。
特洛伊木馬程序不是特定於開發的風險,如果開發人員可以訪問您的應用程序的屏幕,則特洛伊木馬程序將具有此風險。與任何其他用戶相同。為了減輕木馬的風險,我親自在虛擬機中進行組件檢測。
TTT
2016-08-31 22:39:05 UTC
view on stackexchange narkive permalink

作為顧問,我曾在許多不同的公司工作過,其中只有兩家沒有授予開發人員對其機器的管理員訪問權限;一個人是一個小公司,另一個人是一個大公司。 >在一家大公司,我請求管理員訪問權限,並被告知,即使他們同意我應該擁有該權限,但公司政策禁止該權限,因此他們無法更改。因此,有一個IT人員過來在我的計算機上創建了一個本地管理員帳戶,並讓我為其設置了密碼。從那時起,無論何時我需要成為管理員,我都可以以本地管理員身份登錄計算機,或者僅使用runas啟動Visual Studio或需要與管理員用戶(例如IIS)一起運行的任何服務/應用程序。這並不比選擇內置的“以管理員身份運行”更糟糕。只是稍微慢一點,儘管幸運的是它不會經常出現。

這顯然是專為白痴規則制定者設計的“法律文書”解決方案。好消息是您可以完成工作,壞消息是,如果白痴獲得線索,就會有人被解僱。
我的工作很短暫,您根本沒有管理員訪問計算機的權限。要安裝任何軟件,您必須先放入一張票,希望它已在他們的認可列表中,或者如果沒有,請以某種方式對其進行辯解,然後等待其安全團隊遠程登錄並為您安裝它。
我聽說有這樣一種環境的謠言,即devops中的標準過程是立即購買更多RAM,然後在其內部P2V原始系統映像。內部機器僅用於公司電子郵件;其他一切都在外部機器上。他們在小隔間之間為自己的LAN鋪設電纜。
Ivan
2016-08-31 21:56:54 UTC
view on stackexchange narkive permalink

請記住,這裡更大的安全問題是IP的滲透,而不是惡意軟件。希望您已經擁有IDS / IPS來處理後者,這應該不會成為問題。

只要具備以下條件,您就可以擺脫對開發設備的管理員訪問權限: / p>

  • 反eDLP(網絡,USB等)
  • IDS / IPS
  • 經過MITM NTLM認證的公司代理,通過它您可以強制所有連接並進行監視違反DLP
  • 拒絕台式機上的所有虛擬化軟件。如果需要虛擬機,請從託管雲中配置一個虛擬機,從而使所有虛擬機都可以使用上述工具運行相同的過時的標準化映像。
  • 在網絡級別阻止對外部軟件存儲庫的訪問(這會嚴重影響pip,git,maven,apt,yast,zypper以及其他所有內容)
  • 在網絡級別阻止訪問github,codeplex和所有其他150個代碼共享站點
  • 阻止訪問網絡級別的所有9000多個文件共享站點
  • 阻止對P2P ...等的訪問...

我的雇主做了所有這些以及更多工作。無論如何,很多同事最終在下班後在家中用自己的個人設備進行開發,然後通過側通道將其扔回到籬笆上,以避開受損的基礎設施。就我個人而言,我寧願度過一個晚上喝酒,夢見在狗鎮定劑上過量使用,而不是浪費額外的20小時未做的事情來做反正會讓我被解僱的事情。 )科學。在無菌條件下進行科學實驗,以控制變量。在殘缺的環境中進行開發是不科學的,在這種環境中,由於環境因素,事情無法按預期進行。我可以從經驗中告訴您,您無法從中獲得精心設計的軟件...內部開發的所有內容都被破壞了,這導致在第三方解決方案上的更多支出。

開發人員絕對必須要有一個無菌的環境才能開發。我無法告訴您各種安全控件將gremlins引入開發和生產架構的次數了-因此,託管的,無菌的,基於雲的開發環境確實是唯一的辦法。 “它在實驗室工作,問題一定是外部的。”

您只需要確保讓他們進行調配的VM不會過時,並且需要自動執行OpenStack或AWS的調配過程,因此開發人員無需等待幾天即可滿足擴展需求。集中管理所有人員,可以為您提供大量的審核控制權,並且坦率地說,使開發人員的性能比他們自己使用設備要好。

廢話,那些雇主的規定是瘋狂的。
@Dan Pantry是的,不開玩笑...我希望我能說這是因為我像NSA一樣在很酷的地方工作,但是不,我們只是在創新的生鏽邊緣。
Tyler Durden
2016-09-02 23:52:05 UTC
view on stackexchange narkive permalink

我是選擇#2的粉絲:擁有單獨的計算機。

允許將具有專有信息的公司計算機連接到互聯網為黑客打開了大門。

如果員工必須使用特殊的機器來訪問Internet資源,則員工可以更容易地出於非法目的而洩露公司數據。非常安全。同樣,它也阻止員工像我現在那樣閒著瀏覽網頁或浪費時間在互聯網論壇上。

Drunken Code Monkey
2016-09-05 09:44:54 UTC
view on stackexchange narkive permalink

作為管理員,可以通過SaaS方法徹底解決此問題。虛擬化所有不同的環境,將它們放在適合客戶端數量的服務器機架上,並配置一些遠程訪問(RDP,終端服務或其他...)。現在,所有內容都在服務器上,並且只有一種環境可供所有人維護。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...