《代碼英雄》第二季(5):關於 DevSecOps 的故事
本文是《代碼英雄》系列播客第二季(5):關於 DevSecOps 的故事的音頻腳本。
導語:不良的安全和可靠性實踐會導致影響數百萬人的中斷。現在是時候讓安全加入 DevOps 運動了。並且,在 DevSecOps 的世界中,我們可以創造性的提升安全性。
每月發現一個漏洞曾經是常態。而現在,由於敏捷流程和 DevOps 團隊,軟體開發的進展迅速。Vincent Danen 告訴我們,這如何導致被認為是漏洞的東西急劇增加。前亞馬遜災難主管 Jesse Robbins 介紹了公司如何為災難性故障和漏洞做好準備。而 Elastic 的產品安全主管 Josh Bressers 則展望了科技領域安全的未來。
我們不應該把安全團隊當成脾氣暴躁的妖怪。聽聽 DevSecOps 團隊如何將英雄們聚集在一起,以實現更好的安全。
00:00:01 - 眾議院小組委員會代表:
1991 年 6 月 26 日,在華盛頓特區,馬里蘭州和西弗吉尼亞州的大部分地區,以及我的家鄉的大部分地區都因公共電話網路的大規模故障而癱瘓了。然而,隨著技術變得越來越複雜,網路系統越來越相互依存,反覆發生故障的可能性也會增加。似乎並沒有警告說會發生這種情況。
00:00:23 - Saron Yitbarek:
在 20 世紀 90 年代初,有 1200 萬美國人遭受了大規模的電話網路故障。人們不能給醫院打電話,企業不能給客戶打電話,父母不能打電話給託兒所。對於一個基礎設施嚴重依賴於萬物互聯的計算機系統的國家來說,這是一場混亂也是一記警鐘。這些計算機網路變得越來越大,然後當它們出現故障時,故障時間就會很長。
00:01:01:
電腦故障會導致電話系統崩潰。在今天代碼中的一行小錯誤的後果比以往時候都要嚴重。
00:01:15:
我是 Saron Yitbarek,這裡是是紅帽公司的原創播客節目《代碼英雄》。
00:01:24:
因此,軟體安全性和可靠性比以往任何時候都重要。傳統的瀑布式開發方法,安全性只是一個附加流程而已,已經不再適用。我們生活在一個 DevOps 的世界裡,一切都變得更快、更敏捷、擴展性更強,這在電話網路崩潰時是他們無法想像的。這意味著我們的安全和可靠性標準必須不斷改進,以應對這些挑戰。
00:01:55:
在本集中,我們將研究如何將安全性集成到 DevOps 中,我們還將探索在運營中構建可靠性和彈性的新方法。即使在介紹了所有這些之後,我們知道還有很多東西可以討論,因為在 DevSecOps 的世界裡,對於開發人員和運營人員來說,事情都在快速變化。這些變化意味著不同的事情,這取決於你的立場,但這是我們的看法。我們也很想聽到你們的消息——所以如果你認為我們錯過了什麼,不要害羞——在網上聯繫我們。
00:02:34:
好了,讓我們開始探索這個全新的領域吧。
00:02:43:
事情就是這樣,讓安全性和可靠性跟上時代的步伐,並為 DevOps 世界做好準備,這意味著我們必須對工作方式進行一些關鍵的調整。第一,我們必須擁抱自動化。我的意思是,想想雙因子認證的邏輯。想想那些難以想像的艱巨任務吧。很顯然,你不能僅僅通過增加員工來解決問題,所以第一點就是擁抱自動化。
00:03:15:
然後,第二點,這個可能不是那麼明顯,那就是它真的改變了文化,使安全不再是一個禍害。稍後我將解釋我所說的改變文化的含義。但是讓我們一個一個的解釋這兩點。首先,擁抱自動化。
00:03:42:
以前,應用程序的部署在每個單獨的發布之前都涉及到一個人為的安全審查,我不知道你是否注意到了,但是人為的審查可能會有點慢。這就是為什麼自動化是在 DevOps 構建安全性的關鍵部分。以 Verizon 最近的數據泄露報告為例。他們發現,81% 的與黑客相關入侵涉及密碼被盜或者弱密碼。從表面上看,這是一個非常簡單的問題,但是規模卻很大。就像我之前所提及到的,你不能用工作人員去解決 3000 萬個密碼問題,對吧?問題在於解決大規模問題,而每次的答案都是一樣的。那就是自動化,自動化。
00:04:36 - Vincent Danen:
如果你等待人參與進來,那麼規模就不會擴大。
00:04:41 - Saron Yitbarek:
Vincent Danen 是紅帽公司產品安全部門的主管,在過去的 20 年裡,他見證了 DevOps 的快速發展。安全團隊不得不競相追趕。
00:04:56 - Vincent Danen:
剛開始的時候,每個月都有漏洞,後來變成了每隔一周,然後是每周都有。現在,每天都能找到幾百個漏洞。
00:05:08 - Saron Yitbarek:
有趣的是,Vincent 說,隨著安全團隊的發展,實際上會出現更多的漏洞,而不是更少。
00:05:17 - Vincent Danen:
我們永遠不會說,哦,我們現在安全了,我們做完了,我們的工作結束了。安全審計會一直存在,就像呼吸一樣,這是必須要有的。
00:05:27 - Saron Yitbarek:
事實證明,對於安全性和可靠性團隊來說,細節的問題變得越來越重要。
00:05:35 - Vincent Danen:
當我們在尋找這些漏洞時,我們會發現更多的東西,而且這個趨勢還將繼續。因為你會發現新的漏洞類型和一些我們可能認為不太重要的東西,或者以前甚至不知道它們存在的東西。我們會發現這些東西發展的速度很快,而且數量更多,因此規模爆炸性增長。知識、軟體的數量、消費者的數量都促進了該領域安全性以及漏洞的增加。
00:06:06 - Saron Yitbarek:
一旦你將安全視為一個不斷發展的問題,而不是隨著時間的推移而 「得到解決」 的問題,那麼自動化的理由就會變得更加充分。
00:06:18 - Vincent Danen:
嗯,我認為有了自動化,你可以以一種非常快的方式將這些東西集成到你的開發流水線中,這是其一。其二,你不需要人類來做這些工作,對吧?計算機不需要睡覺,所以你可以在處理器允許的情況下以最快速度瀏覽代碼,而不是等待人類通過一些可能相當乏味的命令行來查找漏洞。
00:06:44:
然後通過模式匹配和啟發式方法,甚至在開始編寫代碼的時候,你就可以知道代碼中那些地方是易受攻擊的。如果在你編寫代碼的時候,在你的 IDE 或者工具中有一個插件,它能告訴你。嘿,這看起來有點可疑,或者你剛剛引入了一個漏洞。在你提交代碼之前你都可以糾正這些可疑點或者漏洞。
00:07:08 - Saron Yitbarek:
安全在進步。這真是一筆巨大的獎勵。
00:07:12 - Vincent Danen:
每一天,甚至每一小時,都會有很多東西湧現出來。通過持續集成和持續部署,你寫了代碼,10 分鐘後它就被部署了。因此,在代碼被推送之前自動進行驗證是非常關鍵的。
00:07:32 - Saron Yitbarek:
我們可以使用各種各樣的工具來完成這個任務,不管是靜態代碼分析,還是 IDE 的插件,或者是一大堆其他選項。我們將在 redhat.com/commandlineheroes 上分享一些我們最喜歡的片段。
00:07:53:
一旦我們有了這些工具,它們將幫助我們把安全放在首位。結果就是,DevOps 被重新定義為 DevSecOps。安全被納入到流程中。
00:08:08 - Vincent Danen:
就像開發人員和運維人員結合的方式一樣,你將這兩個規則合成到了一個規則。現在,你有了 DevOps,並將安全這第三個組件與開發和運維集成到一起,我認為這非常重要。因為事後才考慮安全性,這會使安全性變得非常被動、昂貴以及可能會損害消費者。當你一開始就把安全代入其中,你就可以完成開發工作,從頭到尾進行安全檢查並開始運作。
00:08:44 - Saron Yitbarek:
當然,就像我們在這一集的開頭提到的,自動化只是一個大蛋糕的一半,而 Vincent 也明白這一點。
00:08:53 - Vincent Danen:
並不僅僅是一部分。不能僅僅在你的 CI/CD 流水線中隨便引入一個工具就期望一切都變好。為了達到我們希望看到的最終有益結果,需要使用各種技術和行為。
00:09:15 - Saron Yitbarek:
自動化確實讓我們做到了一半,但我們必須記住另一部分 —— 稍微模糊一點的那一部分。讓我們一起來說,那就是文化部分,讓開發者和運維人員都一起參與進來,這樣這些問題就不再是可怕的問題。
00:09:33:
我們必須改變一種文化,而有些人正在學習以一種最不痛苦的方式,通過遊戲的方式來做到這一點。
00:09:44:
現在讓我們來看看事情的另一面。如今建立龐大的基礎設施很容易,但這並不意味著我們應該做粗製濫造的工作。我們仍然應該努力改進我們的系統,確保可靠性,未雨綢繆。這就是 Jesse Robbins 正在努力實現的。
00:10:08:
如今,Jesse 是 Orion Labs 的 CTO,但在此之前,他因在亞馬遜被稱為災難大師而名聲大噪。在那裡,Jesse 特別是在讓大家至少意識到這些問題這件事上幾乎是個奇才。他通過一個叫做 「遊戲日」 的活動來做到這一點。讓其中可能涉及成千上萬的員工進行故障演練,通過災難演練來習慣系統被破壞並了解發生的原因和方式。
00:10:39:
下面是 Jesse 和我在討論,尤其是在運營方面如何建立可靠性和彈性。
00:10:47:
大家都知道你做了很多非常酷的事情,其中之一就是你在亞馬遜做的活動 —— 「遊戲日」。那是什麼? 是什麼遊戲?
00:10:58 - Jesse Robbins:
「遊戲日」 是我創建的一個項目,通過大規模破壞來測試最脆弱系統的運行情況。如果你是 Netflix 的 「混亂猴子」 的粉絲,「遊戲日」 則是我的一個可以實現類似的所有事情的東西。實際上,它非常專註於建立一種卓越的運營文化,建立大規模測試系統的能力,當系統崩潰時能了解它們是如何崩潰的以改進它們。然後還要建立一種文化,能夠對事件做出反應並能恢復。它是按照事故指揮系統建模的,這是世界各地的消防部門用來處理任何規模事故的系統。
00:11:56:
它的誕生源於...
00:11:58 - Saron Yitbarek:
旁白,Jesse 早在 2005 年就經過訓練成為一名消防員。在那兒,他了解了這個事故指揮系統,最終激發了 「遊戲日」 的靈感。因此,所有做這些故障演練的開發人員,都要感謝 Jesse 對消防和應急管理的激情。好了,回到我們的談話。
00:12:22 - Jesse Robbins:
彈性是一個系統的能力,這包括人和這些人建立的適應變化、應對失敗和干擾的能力。而建立這種文化最好的方法之一 —— 建立一種文化,能夠對這種類型的環境做出反應,並真正理解這些環境是如何工作的 —— 就是提供人員培訓演習。這些演習可以很簡單,比如重啟伺服器,也可以很複雜,比如關閉整個數據中心造成大規模故障等等。所以,「遊戲日」 首先是一個過程。在這個過程中,你通過讓整個組織聚集在一起,討論系統如何發生故障,並思考人類對故障發生的預期。而這個演習本身就是 「遊戲日」 開始時最有價值的部分之一。
00:13:24:
但是,當你實際對系統做了一個或大或小的破壞後。當你這樣做的時候,你就可以看到每個人是如何反應的。你看到系統崩潰了,可能是之前安全的東西崩潰了,一個很容易理解的組件或者是某個東西暴露了一個潛在的缺陷。這些問題隱藏在軟體、技術或者大規模的系統中,只有當你遇到極端或者意外事件時,我們才能發現。「遊戲日」 的目的是為了訓練員工並且建立系統讓你了解他們如何在壓力下工作。
00:14:12 - Saron Yitbarek:
所以當我聽到 「遊戲日」 的時候,我就會想,「這是對某個特定事件的回應嗎? 它是從哪兒來的?」
00:14:20 - Jesse Robbins:
因此,「遊戲日」 剛開始的一段時間內,因為我知道自己的角色以及作為消防員和應急管理人員的背景,因此將文化方法從注重預防失敗的觀念轉變為擁抱失敗非常重要,接受失敗發生。激發我這樣做的部分原因是我自己的經歷,你知道,了解系統,比如建築是如何倒塌的,市政基礎設施是如何倒塌的,以及災難是如何發生的,以及災難給人們的壓力。所以說,如果環顧我所在工作場所所具有的複雜性和運營規模就會知道,想要真的構建成一個高可靠性、持續在線環境的唯一辦法就是擁抱消防服務的方法。我們知道失敗會發生,這不是如果的問題,而是什麼時候的問題。就像我之前的消防隊長說的,不是你選擇時機,而是時機選擇你。你只需要在它發生的時候準備好即可。
00:15:28 - Saron Yitbarek:
哦,這個不錯。所以當你第一次開始做 「遊戲日」 並思考如何為災難場景做準備時,每個人都同意了嗎?你得到任何反對意見了嗎?
00:15:40 - Jesse Robbins:
每個人都認為我瘋了。因此,肯定有人反對。有趣的是,有一種非常簡單的方法可以克服這種抵制,那就是首先創造出我稱之為 「冠軍」 的東西。你要教一小群人,如何以非常安全的方式工作,然後你能夠使用一些信服的指標。你能夠說,看,讓我們只需衡量發生了多少分鐘的中斷,我的團隊經過了這種培訓並以這種方式進行操作的停機時間有多少分鐘。相反,你的團隊沒有這個,並且似乎認為進行這種類型的培訓和練習沒有價值或者不重要。
00:16:25 - Jesse Robbins:
你一旦完成了這種事情,基本上就會有我所說的引人注目的事件。因此,經常會有斷電或其他事情讓組織突然意識到:哦,我的天哪,我們不能再像以前那樣繼續做事了。這就是你用來說服懷疑論者的方法。你一方面使用數據和性能數據,再結合指標,然後講故事,然後等待一個大的故障或者可怕的事情發生。然後,你就可以說,如果我們要在 web 規模或者互聯網規模上運維,整個組織都需要這種應變能力。
00:17:06 - Saron Yitbarek:
嗯嗯。所以我喜歡它的原因是它不只是停留在亞馬遜內部。相反,它在傳播。很多其他公司也在這麼做。很多人最終接受了要為故障做好準備這個知識和過程。那下一步是要做什麼?我們如何將從 「遊戲日」 中學到的知識繼續運用到未來的項目和公司中?
00:17:31 - Jesse Robbins:
我喜歡把它稱為趨同進化。每個在 web 上運行的大型組織現在都採用了我提倡的事件管理基礎的一個版本,並創建了他們自己的 「遊戲日」 測試。比如,Netflix 將其稱為 「混亂猴子」。谷歌有他們的 Dirt 計劃。
00:17:57 - Saron Yitbarek:
那麼你對未來的 「遊戲日」 有什麼寄望呢?
00:18:00 - Jesse Robbins:
首先讓我感到興奮的是,我們可以看到人們從閉門造車思維的轉變。系統從根本上是相互聯繫,相互依賴的,而且由世界各地試圖有所成就的聰明人構建和運行的。
00:18:22:
幾年前,當我剛參加工作時,對運維工作毫不關心,我覺得那非常無趣。然後突然的,我們發現自己能夠傳播這樣一種理念:開發人員和運營人員一起工作是在互聯世界中構建和運行有意義的技術的唯一途徑。
00:18:44:
所以我對未來的希望是,第一,我們看到越來越多的人接受這些想法並學習它。明白了當你建造了人們依賴的東西時,你有義務確保它是可信賴的、可用的、可靠的,它是人們可以作為日常生活的一部分來使用的東西。
00:19:05:
而且我們也看到了一種新的學科的誕生。「遊戲日」 的這種思維模式正在被研究,也有博士正基於這個撰寫博士學位論文。它正在不斷建立中。
00:19:16 - Saron Yitbarek:
這真的是太棒了。
00:19:16 - Jesse Robbins:
也有寫這方面的書,但是包含這些新資源的沒有。只有少數人在會議上談論他們認為世界應該怎麼運轉。所以我的那種鼓舞人心的希望是,你要明白如果你正在構建軟體和技術,那麼你真的成為了社會基礎設施的一部分。所以作為一名消防員,我所努力貢獻的一系列技能和正在出現的技術,這些技術將使它走得更遠,它們是建造人們日常生活所依賴的東西的基礎的一部分。
00:19:53 - Saron Yitbarek:
很好。這是一個很好的結束方式。Jesse,謝謝你抽出時間來。
00:19:56 - Jesse Robbins:
是的,謝謝。
00:11:59 - Saku Panditharatne:
我認為所有這些因素都不利於採用最佳軟體。
00:20:02 - Saron Yitbarek:
在 Jesse 看來,像 「遊戲日」 或者 「混亂猴子」 這樣的演習是我們不斷發展的科技文化的重要組成部分,但它們對於整個社會也至關重要。我很喜歡他很重視這個,因為他是對的。我們的世界取決於我們所做的工作。早在 90 年代,當電話網路開始崩潰時,這一點就很明顯了。
00:20:26 - 眾議院小組委員會代表:
我們所知道的現代生活幾乎陷於停頓。
00:20:31 - Saron Yitbarek:
這是一種伴隨的責任。我們有責任關心安全和可靠性,關心我們所建造東西的彈性。當然,當談到在 DevOps 中的構建安全性時,我們才剛剛開始。
00:20:53 - Saron Yitbarek:
這是 Josh Bressers。他是數據搜索軟體公司 Elastic 的產品安全主管。對 Josh 來說,儘管計算機行業已經成熟了半個世紀左右,但我們在這裡討論的安全問題卻讓人覺得它是剛剛才出現的。
00:21:11 - Josh Bressers:
實際上,就像我想說也行作為一個專業,安全仍然是非常新的東西,有很多事情我們還不是很了解。
00:21:19 - Saron Yitbarek:
但我們確實明白,在 DevSecOps 的世界中,有一些非常好的機會可以創造性的思考安全能達到什麼成就。
00:21:29 - Josh Bressers:
我最近和一些人討論了一個概念,他們利用用戶行為來決定用戶是否應該能夠訪問系統。每個人都有特定的行為,比如他們來自哪裡,他們訪問系統的時間,他們打字的方式,他們移動滑鼠的方式。所以我認為,如果我們做得好,他們的這些行為,可以產生一些非常強大結果,如果我們能做到這一點,我們可以注意到有人在做什麼。然後假設我表現的很奇怪,因為我剛剛扭傷了手臂。但你知道,另一端並不知道。
00:22:05 - Josh Bressers:
因此,它可能會說,這種行為就有些奇怪,我們就會希望你使用雙因子認證登錄,並且還會向您發送條簡訊或其他內容,對吧?這就從用戶名和密碼變成了更有趣的東西。所以我認為用新的和獨特的方式來看待這些問題將是關鍵。在很多情況下,我們只是還沒到那一步。
00:22:27 - Saron Yitbarek:
實現這一目標需要我們所描述的兩大步驟。第一步,就是自動化,這很重要,因為……
00:22:35 - Josh Bressers:
人類很不擅長重複地做同一件事。
00:22:38 - Saron Yitbarek:
很公平。然後,我們有了第二步,就是文化,無論我們的職稱是什麼,我們所有人都有不安全感和責任感。
00:22:49 - Josh Bressers:
當大多數人想到安全團隊時,他們不會認為那是一群快樂的好好先生,對吧? 一般來說,這些人都很可怕,脾氣暴躁,令人討厭,如果他們出現了,就會毀了你的一天。沒有人想要這樣,對吧?
00:23:10 - Saron Yitbarek:
但我認為我們可以克服這種偏見,因為我們必須這樣想——每天都有更多的安全威脅發生,而且 IT 基礎設施每天都在變得更大、更強。把這兩個事實放在一起,你最好可以生活在一個被安全環繞的世界裡。一個非常 DevSecOps 的世界,在這個世界裡,開發人員和運營人員都在提升他們的安全,提高他們的可靠性。我所談論的是一個自動化被整合到每個階段的未來,每個人對這些問題的態度變得更加全面。這就是我們保護未來系統安全的方法。這是我們保持電話響,燈開,所有現代生活健康強壯的方法。如果你查一下《福布斯》全球 2000 家公司的名單,也就是前 2000 家上市公司,你會發現其中整整四分之一的公司都採用了 DevOps。集成的敏捷工作場所正在成為規則。並且在幾年之內,關於 DevSecOps 的思考可能會成為第二天性。我們希望儘可能快,但是當團隊中的每個成員都齊心協力時,長距離比賽實際上會更快。
00:24:40 - Saron Yitbarek:
下一集,我們將面臨數據的大爆炸。人類已經進入了 澤位元組 時代。到 2020 年,我們將在伺服器上存儲大約 40 澤位元組的數據,而這些信息大部分甚至現在還不存在。但是我們該如何讓這些數據有用呢?我們如何使用高性能計算和開源項目讓我們的數據為我們所用呢?我們會在 Command Line Heroes 第 6 集中找到答案。
00:25:13 - Saron Yitbarek:
提醒一下,我們整季都在致力於《代碼英雄遊戲》的開發。這是我們自己的開源項目,我們很喜歡看著它的誕生,但是我們需要你來幫助我們完成。如果你點擊 redhat.com/commandlineheroes,你可以發現如何貢獻。你也可以深入了解我們在這節課中討論過的任何內容。
00:25:39 - Saron Yitbarek:
《代碼英雄》是紅帽原創播客。你可以在 Apple Podcast、Google Podcast 或任何你想做的事情上免費收聽。我是 Saron Yitbarek。堅持編程,下期再見。
什麼是 LCTT SIG 和 LCTT LCRH SIG
LCTT SIG 是 LCTT 特別興趣小組 ,LCTT SIG 是針對特定領域、特定內容的翻譯小組,翻譯組成員將遵循 LCTT 流程和規範,參與翻譯,並獲得相應的獎勵。LCRH SIG 是 LCTT 聯合紅帽(Red Hat)發起的 SIG,當前專註任務是《代碼英雄》系列播客的腳本漢化,已有數十位貢獻者加入。敬請每周三、周五期待經過我們精心翻譯、校對和發布的譯文。
歡迎加入 LCRH SIG 一同參與貢獻,並領取紅帽(Red Hat)和我們聯合頒發的專屬貢獻者證書。
via: https://www.redhat.com/en/command-line-heroes/season-2/the-one-about-devsecops
作者:Red Hat 選題:bestony 譯者:mrpingan 校對:bestony, wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive