技術(shù)
導(dǎo)讀:兩位行業(yè)專家在構(gòu)建支持星巴克公司移動(dòng)應(yīng)用程序所需的團(tuán)隊(duì)和流程的過(guò)程中,總結(jié)了一些經(jīng)驗(yàn)和教訓(xùn)。
幾年前,星巴克公司曾要求合規(guī)性自動(dòng)化初創(chuàng)廠商Shujinko公司的創(chuàng)始人Matt Wells和Scott Schwan為其構(gòu)建必要的團(tuán)隊(duì)和流程,以支持星巴克公司開(kāi)發(fā)的移動(dòng)應(yīng)用程序,采用完全符合支付卡行業(yè) (PCI) 的安全云架構(gòu),并根據(jù)互聯(lián)網(wǎng)安全中心(CIS)制定的標(biāo)準(zhǔn)進(jìn)行衡量。
Shujinko公司首席技術(shù)官M(fèi)att Wells解釋說(shuō),“我們公司的20名工程師在大約9到12個(gè)月的時(shí)間里構(gòu)建了一個(gè)高度自動(dòng)化、可擴(kuò)展、可重復(fù)的環(huán)境,星巴克公司可以用來(lái)支持他們想要推出的所有產(chǎn)品,他們以此為基礎(chǔ)然后開(kāi)始將其他應(yīng)用程序移至公共云。”
Shujinko公司首席技術(shù)官M(fèi)att Wells和首席執(zhí)行官Scott Schwan深入研究了他們?yōu)樾前涂说墓ぷ骷?xì)節(jié),并分享了有關(guān)如何將合規(guī)性納入企業(yè)的云計(jì)算架構(gòu)以及在此過(guò)程中擴(kuò)展DevSecOps的技巧。在此采用了他們自己的語(yǔ)言提出一些見(jiàn)解。
1.將合規(guī)要求放入“完成”的定義中
Matt Wells說(shuō),“對(duì)于一個(gè)工程團(tuán)隊(duì)來(lái)說(shuō),將合規(guī)性要求納入‘完成’的定義中是非常重要的。很多時(shí)候,團(tuán)隊(duì)沒(méi)有及早地開(kāi)始對(duì)話和進(jìn)行討論。因此,‘完成’的定義沒(méi)有包括與法規(guī)遵從性或安全性相關(guān)的內(nèi)容。因此,為團(tuán)隊(duì)建立這種聯(lián)系極為重要?!?/p>
2.讓工程師直接負(fù)責(zé)保護(hù)環(huán)境
Matt Wells說(shuō),“在特殊情況下,我們正在構(gòu)建一個(gè)完整的云平臺(tái),并且我們負(fù)責(zé)該平臺(tái)的安全性。能夠盡早設(shè)定期望,也就是說(shuō),‘這很重要:如果想加入這個(gè)團(tuán)隊(duì),將會(huì)使用一些非常好的技術(shù),但是要對(duì)安全負(fù)責(zé),要對(duì)合規(guī)性負(fù)責(zé)。如果沒(méi)有通過(guò)審核,那將是我們的團(tuán)隊(duì)責(zé)任,而不是安全團(tuán)隊(duì)或合規(guī)性團(tuán)隊(duì)的責(zé)任。'”
3.在云計(jì)算工程團(tuán)隊(duì)和安全團(tuán)隊(duì)之間建立緊密的聯(lián)系
Scott Schwan說(shuō),“我們確保從一開(kāi)始就真正與安全領(lǐng)導(dǎo)保持一致。我確實(shí)相信DevSecOps的基本原則,因此,如果工程團(tuán)隊(duì)了解他們正在建立的要求,他們可以對(duì)自己的職責(zé)負(fù)責(zé)這樣做,不再是安全團(tuán)隊(duì)在項(xiàng)目的最后階段突然涌入,并試圖更改或阻止它們,因此,文化轉(zhuǎn)變的一部分是確保我們?cè)趫F(tuán)隊(duì)之間建立信任?!?/p>
4.在構(gòu)建之前定義安全性程序和要求
Matt Wells 表示,“我們從安全團(tuán)隊(duì)那里收集了要求,并且從業(yè)務(wù)組那里收集了必須支持的地理區(qū)域的合規(guī)性要求。我們擁有了必須遵守的所有合規(guī)性標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)有不同的要求。從那里我們定義了程序,那么我們要如何給服務(wù)器打補(bǔ)丁呢?我們將如何采用容器并部署代碼?
我們認(rèn)為在擴(kuò)建之前設(shè)置這些程序很重要,因?yàn)殡S著工程師擴(kuò)建基礎(chǔ)設(shè)施,有時(shí)這些程序會(huì)影響他們構(gòu)建某些技術(shù)的方式。對(duì)我們來(lái)說(shuō),這就是設(shè)計(jì)階段?!?/p>
5.將安全專業(yè)知識(shí)嵌入并培訓(xùn)工程團(tuán)隊(duì)
Matt Wells 表示,“在設(shè)計(jì)之后,我們大量招聘工作人員,需要獲得一些短缺的技能,因此我們雇傭了一批安全人員、開(kāi)發(fā)人員和運(yùn)營(yíng)人員,結(jié)果發(fā)現(xiàn)需要的開(kāi)發(fā)人員比安全人員和運(yùn)營(yíng)人員多得多。我們非常專注于自動(dòng)化和規(guī)模化,因此發(fā)現(xiàn)讓開(kāi)發(fā)人員參與進(jìn)來(lái)更容易,讓安全人員和運(yùn)營(yíng)人員與他們一起工作,定義開(kāi)發(fā)人員將如何構(gòu)建許多這些功能。我們并不是直接聘用專業(yè)安全人員,而是通過(guò)培訓(xùn)開(kāi)發(fā)人員使他們成為安全人員?!?/p>
6.遵照法規(guī)自動(dòng)加固環(huán)境
Matt Wells 表示,“對(duì)我們來(lái)說(shuō),一個(gè)主要原則是自動(dòng)強(qiáng)化我們構(gòu)建的所有內(nèi)容。我們要做的第一件事是我們使用Terraform自動(dòng)化配置和強(qiáng)化AWS賬戶。我們花了一周的時(shí)間使用Terraform來(lái)構(gòu)建AWS賬戶,而不是花一天或幾個(gè)小時(shí)來(lái)構(gòu)建AWS賬戶、設(shè)置日志記錄、密碼策略等。但是從長(zhǎng)遠(yuǎn)來(lái)看,每次我們?cè)贏WS賬戶中設(shè)置新內(nèi)容時(shí),不必對(duì)工程師說(shuō),‘是否設(shè)置了密碼策略?’或者,“日志要去哪里?”我只想說(shuō),‘運(yùn)行Terraform腳本進(jìn)行加固了嗎?現(xiàn)在我們可以繼續(xù)工作。’”
7.自動(dòng)化護(hù)欄
Scott Schwan說(shuō),“我們使用了可以掃描新環(huán)境的支付卡行業(yè) (PCI)要求的供應(yīng)商。因此,在運(yùn)行腳本后,我們立即運(yùn)行并向他們提供了報(bào)告。如果他們?nèi)匀挥龅街Ц犊ㄐ袠I(yè) (PCI)方面的問(wèn)題,我們將確保返回進(jìn)入sprint,然后將它們添加到Terraform中的基礎(chǔ)設(shè)施代碼中,然后下次進(jìn)行設(shè)置時(shí),他們將不會(huì)遇到類似問(wèn)題。
這是在AWS擁有他們現(xiàn)在擁有的一些工具和服務(wù)之前。在此之前,我們必須構(gòu)建它,因?yàn)槟遣皇撬麄兯鶕碛械臇|西。我們確保將其納入團(tuán)隊(duì)的精神之中。當(dāng)時(shí)是,使用CIS基準(zhǔn)測(cè)試,獲得良好的反饋,迅速進(jìn)行補(bǔ)救,將其重新添加到其代碼中。”
8.將基于合規(guī)性的測(cè)試構(gòu)建到單元測(cè)試中
Scott Schwan說(shuō),“我們總是必須驗(yàn)證是否在運(yùn)行合規(guī)代碼,其中一部分是通過(guò)基于合規(guī)性的測(cè)試。我們始終確保不會(huì)因?yàn)楸M快行動(dòng)而破壞合規(guī)性。
我們開(kāi)始為代碼編寫(xiě)單元測(cè)試,不僅是針對(duì)功能的單元測(cè)試,還涉及安全性和合規(guī)性。我們希望確保團(tuán)隊(duì)每次部署新服務(wù)時(shí)都在測(cè)試合規(guī)性標(biāo)準(zhǔn)。他們是否設(shè)置了密碼策略,是否啟用了日志記錄?它是跨功能的。編寫(xiě)這些單元測(cè)試的不僅僅是安全工程師。團(tuán)隊(duì)隊(duì)員對(duì)此也需要負(fù)責(zé)。”
9.盡可能使用云原生控件
Matt Wells 表示,“我們?cè)谶@里所做的一件事是盡可能使用云原生控件。云原生并不是說(shuō)在云中提供控件。而是使用了構(gòu)建于云中的控件,有時(shí)這意味著來(lái)自云計(jì)算提供商,有時(shí)則意味著來(lái)自供應(yīng)商。這完全取決于情況?!?/p>
10.讓工程師在差距評(píng)估中扮演重要角色
Matt Wells 表示,“在構(gòu)建階段結(jié)束時(shí),我們專注于完成程序,以確保認(rèn)為可以正常工作的東西有效。在大多數(shù)情況下可以實(shí)現(xiàn),但是在某些情況下,我們必須更改程序。最重要的是,我們實(shí)際上已經(jīng)完成并驗(yàn)證了程序。
這需要進(jìn)行差距評(píng)估工作,我們把它交給構(gòu)建它的工程師,并在團(tuán)隊(duì)中分散了評(píng)估責(zé)任。他們比其他人更了解環(huán)境,因?yàn)樗麄儞碛兴乃袡?quán),并且會(huì)說(shuō),‘是的,我們確實(shí)存在差距,我們必須解決這個(gè)問(wèn)題?!?/p>