seaweedfs文件服務(wù)器Security安全控制

前言:實(shí)際開發(fā)中朗涩,用戶上傳的圖片和文件否纬,我們需要對(duì)圖片做保護(hù)措施虱黄,為了不讓圖片直接暴露在外網(wǎng)無(wú)差別的訪問(wèn)蹬刷,圖片服務(wù)器鏈接進(jìn)行鑒權(quán)這個(gè)就顯得尤為重要了

本文主要講解seaweedfs文件服務(wù)器自身的jwt鑒權(quán)畴博,讀權(quán)限的限制

seaweedfs源碼文檔鏈接git地址

1.創(chuàng)建security.toml 文件笨忌,并設(shè)置對(duì)應(yīng)的驗(yàn)證證書

官網(wǎng)配置security.toml步驟
1.1:命令生成security.toml:weed scaffold -config=security

1.2:通過(guò)openssl生成CA證書,并生成客戶端證書和密鑰(此處我沒(méi)有用官網(wǎng)提供的https://github.com/square/certstrap的插件進(jìn)行生成俱病,原因是執(zhí)行命令go build時(shí)候一直報(bào)錯(cuò)官疲,提示timeout,找不到gopass插件

官網(wǎng)提供的生成證書的方法

//openssl生成CA頒發(fā)證書過(guò)程
//生成頒發(fā)機(jī)構(gòu)CA證書
1. genrsa -des3 -out SeaweedFSCA.key 1024
2. rsa -in SeaweedFSCA.key -out SeaweedFSCA.key
3. req -new -x509 -key SeaweedFSCA.key -out SeaweedFSCA.crt -days 365

4. 生成請(qǐng)求證書的密鑰
genrsa -des3 -out volume01.key  1024
genrsa -des3 -out master01.key  1024
genrsa -des3 -out filer01.key  1024
genrsa -des3 -out client01.key  1024

5. 免密碼輸入
rsa -in volume01.key -out volume01.key
rsa -in master01.key -out master01.key
rsa -in filer01.key -out filer01.key
rsa -in client01.key -out client01.key

6. 生成網(wǎng)站請(qǐng)求文件csr
req -new -key volume01.key -out volume01.csr
req -new -key master01.key -out master01.csr
req -new -key filer01.key -out filer01.csr
req -new -key client01.key -out client01.csr

7. 使用虛擬的CA認(rèn)證機(jī)構(gòu)的證書ca.crt亮隙,來(lái)對(duì)自己網(wǎng)站的證書請(qǐng)求文件server.csr進(jìn)行處理途凫,生成簽名后的證書server.crt    注意設(shè)置序列號(hào)和有效期(一般都設(shè)1年)
x509 -req -in volume01.csr -CA SeaweedFSCA.crt -CAkey SeaweedFSCA.key -set_serial 01 -out volume01.crt -days 365

x509 -req -in master01.csr -CA SeaweedFSCA.crt -CAkey SeaweedFSCA.key -set_serial 01 -out master01.crt -days 365

x509 -req -in filer01.csr -CA SeaweedFSCA.crt -CAkey SeaweedFSCA.key -set_serial 01 -out filer01.crt -days 365

x509 -req -in client01.csr -CA SeaweedFSCA.crt -CAkey SeaweedFSCA.key -set_serial 01 -out client01.crt -days 365

我把生成的證書和security.toml配置好得文件放到了百度云盤,供大家參考:
生成的CA證書文件和security.toml文件資源地址:https://pan.baidu.com/s/1Z50unVL2Z1cfloHgjkH6OQ 密碼:9qay

1.3:生成的security.toml文件放到跟weed同級(jí)目錄下即可咱揍,seaweedfs如何安裝請(qǐng)傳送門參考這篇文章

1.4:使用方法颖榜,獲取文件生成的token

JWT for Read Access Control 官方api方法

The volume server can also check JWT for reads. This mode does not work with weed filer. But this could be useful if the volume server is exposed to public and you do not want anyone to access it with a URL, e.g., paid content.
To enable it, set the jwt.signing.read.key in security.toml file.
To obtain a JWT for read, the JWT can be read from the response header Authorization of http://<master>:<port>/dir/lookup?fileId=xxxxx&read=yes.

請(qǐng)求示例response獲取文件id的請(qǐng)求頭Authorization


response獲取請(qǐng)求頭Authorization示例

讀文件請(qǐng)求頭中寫入請(qǐng)求頭Authorization示例


讀文件請(qǐng)求頭中寫入請(qǐng)求頭信息

讀文件請(qǐng)求頭中寫入請(qǐng)求頭Authorization信息失效或者請(qǐng)求頭中沒(méi)有Authorization信息的示例


讀文件請(qǐng)求頭中寫入請(qǐng)求頭Authorization信息失效或者請(qǐng)求頭中沒(méi)有Authorization信息的示例

1.5:至此文件讀權(quán)限校驗(yàn)加入成功
seaweedfs使用jwt自身token鑒權(quán)
優(yōu)點(diǎn):
1.可以完全脫離項(xiàng)目業(yè)務(wù)邏輯,實(shí)現(xiàn)自身權(quán)限控制煤裙,自簽自驗(yàn)(自己簽發(fā)Authorization掩完,自己驗(yàn)證Authorization)
2.可以自己設(shè)置Authorization的有效期,實(shí)現(xiàn)階段性讀取權(quán)限限制
缺點(diǎn)
1.圖片鏈接需要在請(qǐng)求頭中加入Authorization信息硼砰,h5中<img>標(biāo)簽無(wú)法直接在圖片鏈接中加入請(qǐng)求頭信息 且蓬。
2.每一個(gè)文件讀取都需要根據(jù)文件id申請(qǐng)一個(gè)Authorization信息,操作稍顯繁瑣

結(jié)語(yǔ):讀權(quán)限的限制關(guān)鍵是security.toml文件中加入配置語(yǔ)句
 [jwt.signing.read]
 key = "blahblahblahblah"
 expires_after_seconds = 40           # seconds設(shè)置Authorization有效時(shí)間题翰,單位秒

security.toml文件配置

關(guān)于文件訪問(wèn)權(quán)限控制恶阴,另一種方案诈胜,可看linux 安裝openresty并使用lua腳本轉(zhuǎn)發(fā)鑒權(quán)控制文件訪問(wèn)權(quán)限文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冯事,隨后出現(xiàn)的幾起案子焦匈,更是在濱河造成了極大的恐慌,老刑警劉巖昵仅,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缓熟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摔笤,警方通過(guò)查閱死者的電腦和手機(jī)够滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吕世,“玉大人彰触,你說(shuō)我怎么就攤上這事∶剑” “怎么了况毅?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吮龄。 經(jīng)常有香客問(wèn)我俭茧,道長(zhǎng),這世上最難降的妖魔是什么漓帚? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任母债,我火速辦了婚禮,結(jié)果婚禮上尝抖,老公的妹妹穿的比我還像新娘毡们。我一直安慰自己,他們只是感情好昧辽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布衙熔。 她就那樣靜靜地躺著,像睡著了一般搅荞。 火紅的嫁衣襯著肌膚如雪红氯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天咕痛,我揣著相機(jī)與錄音痢甘,去河邊找鬼。 笑死茉贡,一個(gè)胖子當(dāng)著我的面吹牛塞栅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腔丧,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼放椰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼作烟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砾医,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拿撩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后藻烤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绷雏,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年怖亭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坤检。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兴猩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出早歇,到底是詐尸還是另有隱情倾芝,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布箭跳,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏怀泊。R本人自食惡果不足惜国旷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屉来。 院中可真熱鬧路翻,春花似錦、人聲如沸茄靠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慨绳。三九已至掉冶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脐雪,已是汗流浹背厌小。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喂江,地道東北人召锈。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像获询,于是被迫代替她去往敵國(guó)和親涨岁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拐袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348