規(guī)避代碼被“投毒”,開(kāi)源軟件供應(yīng)鏈安全面面觀(源代碼泄露事件)
開(kāi)源軟件供應(yīng)鏈當(dāng)前面臨的主要是兩大風(fēng)險(xiǎn):一是安全風(fēng)險(xiǎn),一是許可證、版權(quán)、專利和出口管制等方面的法律合規(guī)風(fēng)險(xiǎn)。當(dāng)然針對(duì)使用開(kāi)源軟件的企業(yè)來(lái)說(shuō),還有供應(yīng)鏈風(fēng)險(xiǎn)及運(yùn)維風(fēng)險(xiǎn)。這些風(fēng)險(xiǎn)如何更好地規(guī)避?開(kāi)源協(xié)議、開(kāi)源組織都做了哪些事情?企業(yè)如何自查內(nèi)部開(kāi)源項(xiàng)目的安全性?本期《極客有約》,我們邀請(qǐng)到了 Zilliz 合伙人,首席布道師顧鈞,上海安勢(shì)信息技術(shù)有限公司資深解決方案架構(gòu)師朱賢曼共同解答上述問(wèn)題。
(原文視頻:https://www.infoq.cn/article/6jm3rPVwybGMbJl358Fx)
InfoQ:開(kāi)源軟件供應(yīng)鏈到底應(yīng)該如何理解?
顧鈞:我覺(jué)得開(kāi)源軟件供應(yīng)鏈和傳統(tǒng)制造業(yè)類似,只是開(kāi)源軟件供應(yīng)鏈會(huì)有很多新的挑戰(zhàn)。傳統(tǒng)制造業(yè)供應(yīng)鏈的供應(yīng)商承擔(dān)的責(zé)任相對(duì)清晰,因?yàn)楹献鞣街g會(huì)在成熟的法律條框下簽訂商業(yè)合同。但是,用戶在使用開(kāi)源軟件時(shí)可能沒(méi)有特別意識(shí)到已經(jīng)對(duì)其形成依賴,該項(xiàng)目已經(jīng)成為上游。傳統(tǒng)意義上,可以將該開(kāi)源項(xiàng)目理解為是供應(yīng)商,但其又不承擔(dān)供應(yīng)商的職責(zé)。這個(gè)新的挑戰(zhàn)就是,上下游之間沒(méi)有強(qiáng)制的商務(wù)合作,沒(méi)有法律條框可以限制使用過(guò)程,想要確保安全會(huì)有很多不確定的地方。
朱賢曼:開(kāi)源軟件供應(yīng)鏈面臨的最大挑戰(zhàn)就是企業(yè)自己都不知道用了哪些開(kāi)源軟件,大一點(diǎn)的公司可能開(kāi)始關(guān)注到開(kāi)源合規(guī)治理的內(nèi)容,但是很多小公司可能還沒(méi)有這個(gè)意識(shí)。
InfoQ:國(guó)內(nèi)當(dāng)前在軟件供應(yīng)鏈安全方面的意識(shí)形態(tài)大概是什么樣的?
顧鈞:站在使用者的角度,Zilliz 開(kāi)發(fā)服務(wù)的新一代向量數(shù)據(jù)庫(kù) Milvus ,希望提供給最終用戶云服務(wù),所以我們既是一個(gè)開(kāi)源軟件的供應(yīng)商,但同時(shí)我們 Milvus 也引用了大量第三方開(kāi)源組件,是供應(yīng)鏈上的消費(fèi)者。項(xiàng)目初期引用上游其他開(kāi)源組件的時(shí)候,我們會(huì)有一些比較簡(jiǎn)單的規(guī)則,比如說(shuō)考慮許可證的兼容性問(wèn)題,加入到 Linux 基金會(huì)時(shí)也會(huì)有一些開(kāi)源項(xiàng)目合規(guī)性檢查,回溯其中引入的開(kāi)源項(xiàng)目許可證的合規(guī)性。
站在用戶的角度,明顯分為兩類:一類是動(dòng)手能力較強(qiáng)的互聯(lián)網(wǎng)類型的技術(shù)公司或者創(chuàng)業(yè)公司,可能沒(méi)有那么嚴(yán)格的要求,不強(qiáng)制開(kāi)源項(xiàng)目的開(kāi)發(fā)團(tuán)隊(duì)提供一個(gè)質(zhì)量保證的書(shū)面化內(nèi)容,也不會(huì)嘗試商務(wù)合同;另一類社區(qū)當(dāng)中的用戶,比如金融機(jī)構(gòu)等,非常關(guān)心這個(gè)問(wèn)題,尤其是想要投入到生產(chǎn)上的時(shí)候。我覺(jué)得國(guó)內(nèi)目前有嚴(yán)格內(nèi)部規(guī)范的企業(yè),對(duì)開(kāi)源軟件供應(yīng)鏈還是比較在意的,希望引入的開(kāi)源軟件有服務(wù)商提供質(zhì)量保證。
朱賢曼:國(guó)內(nèi)企業(yè)做這件事的動(dòng)力來(lái)源大部分都是外部壓力,比如歐盟的運(yùn)營(yíng)商會(huì)在合同里面要求提供開(kāi)源軟件清單,寫(xiě)清楚項(xiàng)目中使用了哪些開(kāi)源軟件,且保證后續(xù)不會(huì)造成法律風(fēng)險(xiǎn)。國(guó)內(nèi)的部分廠商是因?yàn)橄掠慰蛻舻囊?,在合同里面簽訂相關(guān)條款,保證代碼合規(guī)性,整個(gè)供應(yīng)鏈環(huán)環(huán)相扣,這些是外部的壓力。
此外,國(guó)家層面也在慢慢重視開(kāi)源合規(guī),國(guó)內(nèi)有很多安全相關(guān)的法律法規(guī),尤其是金融行業(yè)。
InfoQ:如果企業(yè)的業(yè)務(wù)在規(guī)劃或正在做出海,會(huì)著重考慮這一塊嗎?
顧鈞:現(xiàn)在的廠商一般偏向于提供 SaaS 型云服務(wù),像我們這樣的創(chuàng)業(yè)團(tuán)隊(duì)是從基礎(chǔ)軟件開(kāi)始做云服務(wù),早期是在做基礎(chǔ)軟件,后來(lái)慢慢做云服務(wù),再去做合規(guī)。海外則有很多上來(lái)就做 SaaS 相關(guān)云服務(wù)的公司,最重要的事情就是先把合規(guī)全部完成,這是很不一樣的地方。
朱賢曼:開(kāi)源軟件在出口管制層面的合規(guī)性要求,在美國(guó)是有法條規(guī)定的,如果不特別注意,可能會(huì)無(wú)意識(shí)當(dāng)中觸犯美國(guó)的出口管制條款。在中美貿(mào)易合規(guī)大背景下,企業(yè)可能就得額外關(guān)注這種合規(guī)性。所以,開(kāi)源軟件治理的驅(qū)動(dòng)力是合規(guī)和安全,以及環(huán)境影響,比如國(guó)內(nèi)之前發(fā)生的 GPL 訴訟,這會(huì)讓很多公司逐漸關(guān)注開(kāi)源合規(guī)并識(shí)別風(fēng)險(xiǎn)。
顧鈞:GPL 開(kāi)源協(xié)議和法律條款容易引人誤會(huì)的地方是傳統(tǒng)上,大家覺(jué)得要白紙黑字簽署過(guò)才有法律約束,但開(kāi)源協(xié)議是使用時(shí)默認(rèn)代表接受整個(gè)協(xié)議,如果不接受就不能使用。
InfoQ:隨著國(guó)內(nèi)使用開(kāi)源的人越來(lái)越多,大家對(duì)開(kāi)源協(xié)議的理解程度大概是什么樣子的?
顧鈞:開(kāi)源協(xié)議的數(shù)量還是挺多的,GitHub 上也有一些專門(mén)的許可證選擇器,幫助用戶選擇適合自己的許可證,基本上大家都會(huì)集中選擇幾大主流協(xié)議。
首先是 Apache 2.0,因?yàn)閲?guó)內(nèi)很多項(xiàng)目都加入了 Apache 軟件基金會(huì),很多新項(xiàng)目也是希望遵循這種方式進(jìn)行治理,很多都默認(rèn)選擇了 Apache 2.0 許可證,所以對(duì)該許可證的解讀會(huì)比較充分。
其次是 MIT 許可,因?yàn)?MIT 許可相對(duì)寬松,所以很多個(gè)人項(xiàng)目或者程序庫(kù)型的項(xiàng)目,直接就選擇了該許可。因?yàn)榇蠹叶急容^容易理解。當(dāng)然這之中可能會(huì)潛藏一些專利問(wèn)題。整體上 MIT 因?yàn)樽詈?jiǎn)單,大家都能理解,用的人也比較多。
最后是 GPL,名聲大,受到的攻擊就比較多,很多人的錯(cuò)誤解讀,造成了 GPL 的評(píng)價(jià)特別兩極分化。GPL 協(xié)議的開(kāi)源項(xiàng)目近期國(guó)內(nèi)不是特別多,大家一般不會(huì)選擇 GPL,但是會(huì)有一些項(xiàng)目選擇 AGPL。
朱賢曼:近幾年,國(guó)內(nèi)對(duì)許可證的理解程度要好很多,中大型企業(yè)都會(huì)關(guān)注,很多公司已經(jīng)成立了專門(mén)的開(kāi)源治理辦公室,但實(shí)際業(yè)務(wù)當(dāng)中會(huì)發(fā)現(xiàn)仍有很多問(wèn)題需要解決。根據(jù)我目前的了解,國(guó)內(nèi)對(duì) GPL 還是能不用盡量不用,畢竟需要承擔(dān)更多的合規(guī)業(yè)務(wù)。對(duì)商業(yè)應(yīng)用比較友好的是 Apache,寬松、不需要開(kāi)放源代碼、條款也相對(duì)嚴(yán)謹(jǐn),如果商業(yè)公司使用,法務(wù)風(fēng)險(xiǎn)相對(duì)較低。AGPL、SSPL 這種一般很多公司直接禁用。一般的分發(fā)概念,需要實(shí)際發(fā)布代碼,以前的分發(fā)是寄光盤(pán),現(xiàn)在可能是把源代碼包上傳到應(yīng)用商店,但 AGPL 的分發(fā)可能通過(guò)遠(yuǎn)程訪問(wèn)云服務(wù)就算,這個(gè)范圍就大了,所以很多公司不會(huì)選擇這兩種協(xié)議。如果公司內(nèi)部有類似開(kāi)源辦公室這種角色,制訂規(guī)則的時(shí)候一般會(huì)將這兩者禁用。企業(yè)在對(duì)外發(fā)布開(kāi)源項(xiàng)目時(shí),如果希望商業(yè)化之后保留一個(gè)商業(yè)版本、一個(gè)社區(qū)版本,可能會(huì)選擇類似 GPL 的許可,一方面可以收集到用戶意見(jiàn),也就是開(kāi)源的反饋意見(jiàn),用于改進(jìn)商業(yè)版,同時(shí)也不希望被直接白嫖。
InfoQ:國(guó)內(nèi)在供應(yīng)鏈管理方面有沒(méi)有比較好的軟件工具可以推薦的?
朱賢曼:供應(yīng)鏈?zhǔn)且粋€(gè)系統(tǒng)工程,肯定不是單一工具可以解決的,需要一整套的工具。因?yàn)檫@個(gè)鏈條很長(zhǎng),很多都需要 DevOps 這一套工具鏈。但如果想知道開(kāi)源治理部分的潛在風(fēng)險(xiǎn),最基本的是要知道到底使用了哪些開(kāi)源軟件,由于現(xiàn)在軟件使用的開(kāi)源軟件數(shù)量眾多,調(diào)用關(guān)系錯(cuò)綜復(fù)雜,且層層依賴,靠人工去梳理基本不太現(xiàn)實(shí),所以一般稍大點(diǎn)的公司都會(huì)引入專業(yè)的 SCA 工具,用于梳理企業(yè)的產(chǎn)品中使用了哪些開(kāi)源軟件,這些開(kāi)源軟件存在怎樣的安全風(fēng)險(xiǎn)和許可證風(fēng)險(xiǎn)。
InfoQ:發(fā)生漏洞事件之后,可以做哪些事情盡量降低不好的影響?
顧鈞:從開(kāi)發(fā)人員的角度講,如果發(fā)現(xiàn)了一個(gè)漏洞,首先要找到可行的繞過(guò)方法,在用戶不需要進(jìn)行系統(tǒng)更新、不需要改動(dòng)任何代碼的情況下將問(wèn)題危害降到最低,找到方法后盡快公布,通知用戶漏洞詳情,如果沒(méi)有也需要告知用戶漏洞信息,畢竟對(duì)用戶來(lái)講是非常危險(xiǎn)的,哪怕連夜完成修復(fù),比較嚴(yán)謹(jǐn)?shù)拇笮凸疽埠茈y將新的修復(fù)版本上線生產(chǎn)環(huán)境。因?yàn)檫@類公司有自己的流程且不易打破,連夜趕出來(lái)的修復(fù)版本也沒(méi)有經(jīng)過(guò)完善的測(cè)試,對(duì)企業(yè)來(lái)講是不可取的。
朱賢曼:如果是開(kāi)源軟件出現(xiàn)漏洞,我們一般建議升級(jí)版本,成本相對(duì)來(lái)說(shuō)偏低,當(dāng)然企業(yè)內(nèi)部一般會(huì)有完備的應(yīng)急預(yù)案,肯定不是隨便發(fā)版升級(jí)的。
InfoQ:如果一個(gè)開(kāi)源項(xiàng)目總是頻繁發(fā)布漏洞修復(fù)信息,是應(yīng)該使用還是盡量少用?
顧鈞:我覺(jué)得這個(gè)問(wèn)題挺有趣的。首先肯定要看開(kāi)源軟件本身的代碼質(zhì)量以及 Issue 里的反饋,對(duì)開(kāi)源項(xiàng)目本身有一個(gè)整體評(píng)判。如果覺(jué)得軟件不行就不要使用,如果用戶反饋比較積極,經(jīng)常更新漏洞信息說(shuō)明真的有很多人在用,經(jīng)常有用戶給出反饋,說(shuō)明項(xiàng)目質(zhì)量在穩(wěn)步提高。此外,也要注意頻繁升級(jí)帶來(lái)的成本。
朱賢曼:我在做行管時(shí),如果軟件頻繁出現(xiàn)安全漏洞升級(jí)信息,不建議使用。當(dāng)然也分情況,開(kāi)源軟件同類型的項(xiàng)目很多,要多方面綜合考慮,但是一般不建議選擇頻繁出現(xiàn)漏洞,或者漏洞版本很多的開(kāi)源軟件,建議選擇基金會(huì)支持或者商業(yè)公司主導(dǎo)的項(xiàng)目,當(dāng)然這種項(xiàng)目也曾出現(xiàn)過(guò)較大漏洞,但相對(duì)來(lái)說(shuō)可能會(huì)有保障一些。
InfoQ:開(kāi)源項(xiàng)目有什么樣的措施保證安全性?
顧鈞:代碼托管在 GitHub 上,平臺(tái)就有專門(mén)的工具掃描依賴,如果有比較嚴(yán)重的安全性問(wèn)題會(huì)提示是否升級(jí)到新的版本。軟件升級(jí)本身是一個(gè)復(fù)雜的過(guò)程,有時(shí)升級(jí)太快會(huì)引入一些新的問(wèn)題,如果只是一些簡(jiǎn)單修復(fù),對(duì)其他的影響不大,我覺(jué)得是需要積極升級(jí)的。當(dāng)然有時(shí)候,這種修復(fù)也可能會(huì)引入新的問(wèn)題。企業(yè)在生產(chǎn)當(dāng)中要具體問(wèn)題具體分析。
InfoQ:開(kāi)源項(xiàng)目背后的商業(yè)公司在整個(gè)過(guò)程中起到什么樣的作用,或者說(shuō)會(huì)引入一些什么樣的風(fēng)險(xiǎn)嗎?
顧鈞:早期來(lái)看,很多開(kāi)源軟件都是社區(qū)驅(qū)動(dòng)的,要保證項(xiàng)目長(zhǎng)期發(fā)展,光靠社區(qū)志愿是很難的,沒(méi)辦法要求太高。只有商務(wù)合同或者有現(xiàn)實(shí)利益分配時(shí),才能確保需要的項(xiàng)目按時(shí)交付,個(gè)人業(yè)余時(shí)間做的項(xiàng)目出現(xiàn)在依賴上,無(wú)法提出太多要求。如果開(kāi)源項(xiàng)目成立自己的商業(yè)公司,用戶可以與其簽訂法律合同,提出 SLA 或問(wèn)題修復(fù)時(shí)效相關(guān)的承諾,這些開(kāi)源軟件背后的公司扮演了一個(gè)讓供應(yīng)鏈更牢固的角色。
朱賢曼:我非常認(rèn)可顧老師的觀點(diǎn),站在企業(yè)的角度,選擇開(kāi)源軟件,我會(huì)建議考量這些因素。如果自己沒(méi)有支持能力,建議選擇有商業(yè)背景的公司,可以購(gòu)買(mǎi)公司提供的服務(wù)。有時(shí)免費(fèi)的才是最貴的,有人幫助對(duì)整個(gè)項(xiàng)目兜底,至少能夠解決很多問(wèn)題,這是值得做的方式。
InfoQ:請(qǐng)兩位分享開(kāi)源軟件供應(yīng)鏈可能面臨的風(fēng)險(xiǎn)或者問(wèn)題?
顧鈞:我覺(jué)得從早期許可證的角度來(lái)講,很容易出現(xiàn)類似 MIT、BSD 這種過(guò)于寬松的協(xié)議,因?yàn)槠洳粠@袡?quán)。代碼雖然是開(kāi)源的,但不代表不能就這些代碼申請(qǐng)專利。開(kāi)發(fā)者可以在代碼開(kāi)源之前,先遞交專利申請(qǐng)。如果開(kāi)源項(xiàng)目的協(xié)議是 Apache 2.0,提交代碼時(shí)已經(jīng)默認(rèn)授權(quán)用戶在項(xiàng)目范圍內(nèi)使用專利,這也是相對(duì)安全的。類似 MIT 或者 BSD 這些可能就沒(méi)有這個(gè)顯式過(guò)程,會(huì)有另外的方式去彌補(bǔ),比如通過(guò) CLA 的方式將專利授權(quán)給項(xiàng)目用戶使用,這是從許可證兼容性和專利層面的考量。
另一個(gè)顯著問(wèn)題是需要將企業(yè)內(nèi)部流程或者習(xí)慣做法更加規(guī)范化。因?yàn)橹伴_(kāi)源的 JavaScript 生態(tài)當(dāng)中的一些開(kāi)源項(xiàng)目,作者直接往 npm 站點(diǎn)上傳所謂的“有毒”代碼,正常情況不應(yīng)該在生產(chǎn)環(huán)境中直接下載 mpn 包做升級(jí),肯定有測(cè)試環(huán)境,驗(yàn)證升級(jí)沒(méi)問(wèn)題再搬到生產(chǎn)環(huán)境,用戶需要有這樣的流程。
朱賢曼:一般來(lái)說(shuō),開(kāi)源軟件的風(fēng)險(xiǎn)可能來(lái)自四個(gè)方面:一是安全風(fēng)險(xiǎn),其中又分為開(kāi)源軟件本身的安全漏洞導(dǎo)致的風(fēng)險(xiǎn)和目前關(guān)注度很高的軟件供應(yīng)鏈攻擊的風(fēng)險(xiǎn),個(gè)人建議不信任所有從外面下載的組件;二是法律風(fēng)險(xiǎn),其中又分為許可證本身的協(xié)議,如果未履行開(kāi)源合規(guī)義務(wù),可能會(huì)造成侵權(quán)而遭到索賠、訴訟、產(chǎn)品下架、商譽(yù)受損等風(fēng)險(xiǎn)。另外一個(gè)是專利方面的風(fēng)險(xiǎn),一種是本身的創(chuàng)建者/貢獻(xiàn)者實(shí)現(xiàn)的專利,有可能預(yù)埋專利陷阱,另一種是第三方專利維權(quán)風(fēng)險(xiǎn)。此外,還有商標(biāo)侵權(quán)及出口管制方面的風(fēng)險(xiǎn);三是供應(yīng)鏈斷供風(fēng)險(xiǎn),比如俄烏事件后,可能 GitHub 直接就不允許俄羅斯開(kāi)發(fā)人員下載代碼了,甚至把俄羅斯賬號(hào)的代碼提交刪掉了。還有上次 faker.js 刪庫(kù)事件,導(dǎo)致后續(xù)版本和代碼更新都沒(méi)有了;四是運(yùn)維風(fēng)險(xiǎn),如果企業(yè)自己沒(méi)有能力支撐,沒(méi)有商業(yè)公司幫忙的話,維護(hù)成本很大。
InfoQ:請(qǐng)兩位老師簡(jiǎn)單分享開(kāi)源軟件供應(yīng)鏈常見(jiàn)的攻擊類型。
顧鈞:首先是專利,比如潛水艇專利,預(yù)留專利埋坑,這類是很不容易防范的,因?yàn)閷@麑徍藢?duì)一般公司來(lái)講需要一些代價(jià)。其次是惡意代碼,現(xiàn)在主流的開(kāi)源軟件分發(fā)方式就是 npm、GitHub,從公開(kāi)站點(diǎn)獲得開(kāi)源軟件后一定要做驗(yàn)證,這能夠幫助大家減少很多麻煩。
朱賢曼:一種是惡意代碼,前段時(shí)間也有新聞提到可以在 GitHub 上把惡意代碼裝上去且不留下任何記錄,這是很恐怖的,我們還是比較信任 GitHub 上面下載下來(lái)的內(nèi)容,因?yàn)槲覀冋J(rèn)為這是官方網(wǎng)站。另外一種最近提的比較多依賴混淆攻擊,npm 包管理器的設(shè)計(jì)存在一些問(wèn)題,比如用戶創(chuàng)建了一個(gè)私人組件,其版本是一個(gè)范圍,如果同名組件更新源碼,但其中存放了惡意代碼,也會(huì)自動(dòng)拉取過(guò)來(lái),同名組件的代碼就跑到用戶環(huán)境中了,企業(yè)內(nèi)部在引入組件時(shí)則需要做更多校驗(yàn),我們建議企業(yè)建立自己的開(kāi)源軟件庫(kù),在組件進(jìn)來(lái)之前有個(gè)準(zhǔn)入機(jī)制,做測(cè)試驗(yàn)證,保證所使用的組件都是受信任的。當(dāng)然這個(gè)成本是相對(duì)較高的,但確實(shí)很有必要。
InfoQ:關(guān)于斷供問(wèn)題怎么解決?
顧鈞:開(kāi)源本身不限制地域,但是承載開(kāi)源這件事情的通常是一個(gè)商業(yè)實(shí)體,商業(yè)實(shí)體會(huì)受到所在地區(qū)的出口管制法,或者其他制裁條例的限制。很多時(shí)候,我們現(xiàn)在用到的開(kāi)源軟件,包括自己的開(kāi)源軟件都托管在 GitHub 上,GitHub 是美國(guó)的公司,必然會(huì)受到美國(guó)的出口管制法的限制。從這個(gè)角度來(lái)講,企業(yè)內(nèi)部可以建內(nèi)部代碼庫(kù),所依賴的東西可以將其放在內(nèi)部代碼庫(kù)上,萬(wàn)一有一天訪問(wèn)不了 GitHub,總有個(gè)備份的源碼池可以獲得這些代碼。從國(guó)家角度來(lái)講,對(duì)此一直在做準(zhǔn)備。目前來(lái)講,我覺(jué)得大家都有各自的解決方法,似乎影響沒(méi)有那么大。
朱賢曼:我個(gè)人覺(jué)得,相比許可證合規(guī)和安全風(fēng)險(xiǎn)來(lái)說(shuō),斷供風(fēng)險(xiǎn)只是開(kāi)源眾多風(fēng)險(xiǎn)之一,相對(duì)來(lái)說(shuō)還是影響比較小的,開(kāi)源治理更多的是許可證的法律法務(wù)的合規(guī)和安全性。
講師介紹:
顧鈞,Zilliz 合伙人、首席布道師,LF AI&Data 基金會(huì) TAC 成員,開(kāi)放原子基金會(huì)開(kāi)源導(dǎo)師。北大畢業(yè) 16 年以來(lái)專注于數(shù)據(jù)庫(kù)、大數(shù)據(jù)技術(shù),尤其對(duì) OLTP 平臺(tái)與場(chǎng)景有著豐富的經(jīng)驗(yàn),先后任職于工商銀行、IBM、摩根士丹利、華為等企業(yè)。運(yùn)營(yíng)的視頻號(hào) ID 為「JUN 不斷向前」,不定期更新開(kāi)源領(lǐng)域的熱門(mén)趨勢(shì)及重要內(nèi)容解析。
朱賢曼,上海安勢(shì)信息技術(shù)有限公司資深解決方案架構(gòu)師,十余年軟件開(kāi)發(fā)經(jīng)驗(yàn),先后從事出口管制合規(guī)、合規(guī)相關(guān)系統(tǒng)設(shè)計(jì)和實(shí)施、開(kāi)源軟件合規(guī)等工作