本技術(shù)涉及計(jì)算機(jī),具體而言,涉及一種上傳云存儲(chǔ)平臺(tái)的方法、系統(tǒng)、電子設(shè)備及可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著前后端分離技術(shù)的快速發(fā)展,前端項(xiàng)目都要求實(shí)現(xiàn)了自我管理,靜態(tài)資源需要進(jìn)行統(tǒng)一管理。阿里云對(duì)象存儲(chǔ)oss(object?storage?service)是一款海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù),可提供99.9999999999%(12個(gè)9)的數(shù)據(jù)持久性,99.995%的數(shù)據(jù)可用性,多種存儲(chǔ)類型供選擇,全面優(yōu)化存儲(chǔ)成本。oss具有與平臺(tái)無關(guān)的restful?api接口,可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問任意類型的數(shù)據(jù)。使用阿里云提供的api、sdk包或者oss遷移工具輕松地將海量數(shù)據(jù)移入或移出阿里云oss。
2、目前都是各自在不同前端項(xiàng)目中直接使用固定長(zhǎng)期憑證上傳,應(yīng)用程序部署運(yùn)行在安全、穩(wěn)定且不易受外部攻擊的環(huán)境中,需要長(zhǎng)期訪問oss,且不能頻繁輪轉(zhuǎn)憑證時(shí),使用阿里云主賬號(hào)或ram用戶的固定長(zhǎng)期憑證ak(access?key?id、access?key?secret)初始化憑證提供者,由于固定長(zhǎng)期憑證需要手動(dòng)維護(hù),存在安全性風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例的目的在于提供一種上傳云存儲(chǔ)平臺(tái)的方法、系統(tǒng)、電子設(shè)備及可讀存儲(chǔ)介質(zhì),用以解決現(xiàn)有云存儲(chǔ)平臺(tái)使用固定長(zhǎng)期憑證上傳方式,需要手動(dòng)維護(hù),存在安全性風(fēng)險(xiǎn)的問題。
2、本技術(shù)實(shí)施例提供的一種上傳云存儲(chǔ)平臺(tái)的方法,包括:
3、客戶端獲取待上傳的文件;客戶端向代理服務(wù)器發(fā)送第一請(qǐng)求;第一請(qǐng)求包括身份驗(yàn)證,第一請(qǐng)求用于請(qǐng)求身份驗(yàn)證對(duì)應(yīng)的url簽名;
4、代理服務(wù)器解析并驗(yàn)證身份驗(yàn)證,根據(jù)身份驗(yàn)證確定對(duì)應(yīng)的臨時(shí)授權(quán);代理服務(wù)器向安全服務(wù)器發(fā)送第二請(qǐng)求;第二請(qǐng)求包括安全驗(yàn)證令牌,第二請(qǐng)求用于請(qǐng)求臨時(shí)授權(quán);
5、安全服務(wù)器根據(jù)安全驗(yàn)證令牌完成認(rèn)證,并將安全服務(wù)器中的臨時(shí)授權(quán)返回給代理服務(wù)器;
6、代理服務(wù)器利用身份驗(yàn)證、臨時(shí)授權(quán)以及云存儲(chǔ)平臺(tái)提供的簽名包構(gòu)造url簽名,并將url簽名返回客戶端;
7、客戶端根據(jù)url簽名建立上傳實(shí)例,并通過上傳實(shí)例將打包好的文件上傳云存儲(chǔ)平臺(tái)。
8、上述技術(shù)方案中,通過臨時(shí)授權(quán)來為上傳任務(wù)創(chuàng)建具有有限權(quán)限和時(shí)效性的臨時(shí)訪問憑證,從而避免在前端直接使用長(zhǎng)期有效的固定長(zhǎng)期憑證。臨時(shí)授權(quán)需要從安全服務(wù)器中獲取,安全服務(wù)器是一個(gè)基于身份的秘密和加密管理系統(tǒng),可以安全存儲(chǔ)、管理和訪問臨時(shí)授權(quán),確保臨時(shí)授權(quán)的安全性和可用性。利用代理服務(wù)器來請(qǐng)求臨時(shí)授權(quán),并在代理服務(wù)器根據(jù)臨時(shí)授權(quán)生成url簽名,代理服務(wù)器將url簽名返回客戶端,該過程中客戶端無法獲取到臨時(shí)授權(quán),實(shí)現(xiàn)了客戶端和臨時(shí)授權(quán)的隔離,從而提高了安全性。并且,本方案在項(xiàng)目中統(tǒng)一使用身份驗(yàn)證作為憑證,統(tǒng)一上傳路徑,保證項(xiàng)目上傳路徑唯一性。
9、在一些可選的實(shí)施方式中,將url簽名返回客戶端之前,還包括:
10、代理服務(wù)器生成上傳請(qǐng)求的唯一標(biāo)識(shí)符,并將唯一標(biāo)識(shí)符放入回調(diào)函數(shù);
11、將打包好的文件上傳云存儲(chǔ)平臺(tái)之后,還包括:
12、文件上傳成功后,代理服務(wù)器調(diào)用回調(diào)函數(shù)中的唯一標(biāo)識(shí)符,并將唯一標(biāo)識(shí)符寫入審計(jì)日志。
13、上述技術(shù)方案中,每個(gè)上傳請(qǐng)求都被分配了一個(gè)唯一的標(biāo)識(shí)符,這使得在出現(xiàn)問題時(shí)能夠輕松地追蹤到具體的上傳操作。唯一id與審計(jì)日志的結(jié)合使用,可以詳細(xì)記錄上傳操作的完整過程,包括請(qǐng)求時(shí)間、上傳的文件、操作結(jié)果等關(guān)鍵信息,為后續(xù)的審計(jì)和問題分析提供了有力的數(shù)據(jù)支持。
14、在一些可選的實(shí)施方式中,客戶端獲取待上傳的文件之前,還包括:
15、在持續(xù)集成環(huán)境中安裝好客戶端上傳包,持續(xù)集成環(huán)境中的客戶端執(zhí)行后續(xù)流程。
16、上述技術(shù)方案中,在持續(xù)集成(ci)環(huán)境中安裝好客戶端上傳包,并讓ci環(huán)境中的客戶端執(zhí)行后續(xù)的文件上傳流程。ci(continuous?integration)即持續(xù)集成,是一種軟件開發(fā)實(shí)踐。在ci環(huán)境中,開發(fā)人員頻繁地將代碼集成到主干分支,并通過自動(dòng)化的構(gòu)建、測(cè)試和部署流程來確保代碼的質(zhì)量和穩(wěn)定性。ci環(huán)境通常包括代碼倉(cāng)庫(kù)、構(gòu)建服務(wù)器、測(cè)試服務(wù)器等組件,支持自動(dòng)化的代碼提交、構(gòu)建、測(cè)試和部署操作。
17、在一些可選的實(shí)施方式中,客戶端獲取待上傳的文件之前,還包括:
18、在項(xiàng)目打包的生命周期中觸發(fā)后續(xù)流程。
19、上述技術(shù)方案中,在項(xiàng)目打包的生命周期中進(jìn)行文件上傳,只需一次讀取,相較于在前端資源打包后再讀取文件上傳文件的方式,具有更高的效率。
20、在一些可選的實(shí)施方式中,身份驗(yàn)證包括jwt,jwt用于驗(yàn)證請(qǐng)求者的身份和權(quán)限;
21、云存儲(chǔ)平臺(tái)包括oss;
22、安全服務(wù)器包括vault服務(wù)器;
23、臨時(shí)授權(quán)包括sts。
24、上述技術(shù)方案中,jwt(json?web?token)是一種輕量級(jí)的身份驗(yàn)證和授權(quán)機(jī)制。它由header(頭部)、payload(負(fù)載)和signature(簽名)三部分組成,可以在客戶端和服務(wù)器之間安全地傳輸用戶信息。jwt通常用于無狀態(tài)的身份驗(yàn)證,允許服務(wù)器在不存儲(chǔ)會(huì)話信息的情況下驗(yàn)證用戶的身份。
25、vault是一個(gè)基于身份的秘密和加密管理系統(tǒng),用于安全地存儲(chǔ)、管理和訪問敏感數(shù)據(jù)。它提供了由身份驗(yàn)證和授權(quán)方法控制的加密服務(wù),并支持多種存儲(chǔ)后臺(tái)和訪問方式。vault服務(wù)可以用于管理api密鑰、密碼、證書等敏感信息,確保這些信息的安全性和可用性。
26、sts是阿里云提供的一種安全訪問控制服務(wù),它允許為應(yīng)用或用戶創(chuàng)建具有有限權(quán)限和時(shí)效性的臨時(shí)訪問憑證。通過這種方式,可以避免在前端直接使用長(zhǎng)期有效的固定長(zhǎng)期憑證。臨時(shí)憑證具有時(shí)效性,過期后自動(dòng)失效,減少了被惡意攻擊的風(fēng)險(xiǎn)。可以根據(jù)需要為臨時(shí)憑證設(shè)置不同的權(quán)限和有效期。
27、在一些可選的實(shí)施方式中,客戶端向代理服務(wù)器發(fā)送第一請(qǐng)求之前,還包括:
28、客戶端使用gitlab?ci/cd中的預(yù)定義變量來生成jwt,并使用jwks對(duì)jwt數(shù)據(jù)做防偽驗(yàn)證;
29、客戶端提供一個(gè)http接口,將jwks暴露給代理服務(wù)器;
30、代理服務(wù)器解析并驗(yàn)證身份驗(yàn)證,包括:
31、獲取jwt頭信息中的kid,根據(jù)kid從jwks中找到對(duì)應(yīng)的公鑰;
32、利用公鑰和jwt中的簽名來驗(yàn)證jwt的有效性。
33、上述技術(shù)方案中,通過gitlab?ci/cd的預(yù)定義變量來生成jwt,這些變量為開發(fā)者和ci/cd流程提供了豐富的上下文信息,有助于生成包含必要認(rèn)證信息的jwt。預(yù)定義變量的使用簡(jiǎn)化了jwt的生成過程,減少了手動(dòng)配置和錯(cuò)誤的可能性。jwt作為一種輕量級(jí)的、自包含的、基于json的用于雙方之間安全傳輸信息的簡(jiǎn)潔的、url安全的令牌標(biāo)準(zhǔn),其攜帶的用戶相關(guān)信息經(jīng)過了簽名和加密,具有較高的安全性。jwks(json?web?key?set)則提供了一個(gè)包含公鑰的集合,這些公鑰可用于驗(yàn)證jwt的簽名。通過將jwks暴露給代理服務(wù)器,代理服務(wù)器能夠輕松地獲取到驗(yàn)證jwt所需的公鑰。代理服務(wù)器通過解析jwt頭信息中的kid(key?id),能夠快速定位到j(luò)wks中對(duì)應(yīng)的公鑰。利用公鑰和jwt中的簽名進(jìn)行驗(yàn)證,確保了jwt的有效性和未被篡改。本實(shí)施例通過使用jwks對(duì)jwt數(shù)據(jù)進(jìn)行防偽驗(yàn)證,該方案能夠有效地防止偽造的jwt被接受和使用,這增強(qiáng)了系統(tǒng)的整體安全性,保護(hù)了用戶數(shù)據(jù)和應(yīng)用的完整性。
34、其中,gitlab是一個(gè)基于git的版本控制系統(tǒng),它提供了代碼托管、項(xiàng)目管理、問題跟蹤和ci/cd等功能。在gitlab中,用戶可以創(chuàng)建和管理項(xiàng)目,與其他團(tuán)隊(duì)成員協(xié)作,進(jìn)行代碼審查,以及自動(dòng)化構(gòu)建、測(cè)試和部署代碼。ci/cd變量是指在ci/cd流程中使用的環(huán)境變量或配置參數(shù)。這些變量可以存儲(chǔ)敏感信息(如api密鑰、數(shù)據(jù)庫(kù)密碼等)、配置信息(如部署環(huán)境的url、端口號(hào)等)以及其他在構(gòu)建、測(cè)試和部署過程中需要使用的信息。在gitlab中,ci/cd變量包括預(yù)定義變量,gitlab提供了一系列預(yù)定義的ci/cd變量,這些變量包含了關(guān)于構(gòu)建、測(cè)試和部署的上下文信息。例如,ci_job_id表示當(dāng)前作業(yè)的id,ci_commit_ref_name表示觸發(fā)構(gòu)建的引用名稱(如分支名或標(biāo)簽名)。這些預(yù)定義變量可以在.gitlab-ci.yml文件中直接使用,無需事先定義。
35、綜上所述,gitlab是一個(gè)功能強(qiáng)大的代碼托管和ci/cd平臺(tái),而ci/cd變量則是實(shí)現(xiàn)自動(dòng)化構(gòu)建、測(cè)試和部署的關(guān)鍵組成部分。通過合理使用ci/cd變量,可以提高軟件開發(fā)和交付的效率、安全性和靈活性。
36、在一些可選的實(shí)施方式中,還包括:
37、為oss配置cdn,cdn用于在文件上傳至oss后,加速文件的分發(fā)和訪問。
38、上述技術(shù)方案中,cdn通過在全球范圍內(nèi)的多個(gè)服務(wù)器上緩存oss中的文件,使用戶能夠從最近的節(jié)點(diǎn)獲取所需內(nèi)容,從而大幅提高訪問速度。cdn將文件緩存到離用戶最近的節(jié)點(diǎn),顯著減少了網(wǎng)絡(luò)傳輸距離和延遲。cdn的分發(fā)特性可以減少跨地域間的訪問延遲,避免重復(fù)請(qǐng)求的資源,從而降低帶寬成本。通過緩存機(jī)制,cdn減少了重復(fù)的數(shù)據(jù)傳輸,進(jìn)一步節(jié)省了帶寬資源。cdn通過負(fù)載均衡器將流量分配給多個(gè)節(jié)點(diǎn),確保每個(gè)節(jié)點(diǎn)都能處理請(qǐng)求,避免了因某一個(gè)節(jié)點(diǎn)宕機(jī)導(dǎo)致的服務(wù)不可用問題。當(dāng)某個(gè)cdn節(jié)點(diǎn)出現(xiàn)故障時(shí),用戶可以自動(dòng)切換到其他節(jié)點(diǎn)進(jìn)行訪問,保證了服務(wù)的連續(xù)性和穩(wěn)定性。
39、本技術(shù)實(shí)施例提供的一種上傳云存儲(chǔ)平臺(tái)的系統(tǒng),包括:客戶端、代理服務(wù)器和安全服務(wù)器;
40、客戶端,用于:獲取待上傳的文件;向代理服務(wù)器發(fā)送第一請(qǐng)求;第一請(qǐng)求包括身份驗(yàn)證,第一請(qǐng)求用于請(qǐng)求身份驗(yàn)證對(duì)應(yīng)的url簽名;
41、代理服務(wù)器,用于:解析并驗(yàn)證身份驗(yàn)證,根據(jù)身份驗(yàn)證確定對(duì)應(yīng)的臨時(shí)授權(quán);向安全服務(wù)器發(fā)送第二請(qǐng)求;第二請(qǐng)求包括安全驗(yàn)證令牌,第二請(qǐng)求用于請(qǐng)求臨時(shí)授權(quán);
42、安全服務(wù)器,用于:根據(jù)安全驗(yàn)證令牌完成認(rèn)證,并將安全服務(wù)器中的臨時(shí)授權(quán)返回給代理服務(wù)器;
43、代理服務(wù)器,還用于:利用身份驗(yàn)證、臨時(shí)授權(quán)以及云存儲(chǔ)平臺(tái)提供的簽名包構(gòu)造url簽名,并將url簽名返回客戶端;
44、客戶端,還用于:根據(jù)url簽名建立上傳實(shí)例,并通過上傳實(shí)例將打包好的文件上傳云存儲(chǔ)平臺(tái)。
45、本技術(shù)實(shí)施例提供的一種電子設(shè)備,包括:處理器和存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有所述處理器可執(zhí)行的機(jī)器可讀指令,所述機(jī)器可讀指令被所述處理器執(zhí)行時(shí)執(zhí)行如以上任一所述的方法。
46、本技術(shù)實(shí)施例提供的一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)以上任一所述方法的步驟。