作者:池桂梅沿腰, QingStor 存儲(chǔ)產(chǎn)品文檔工程師览徒。主要負(fù)責(zé) QingStor 存儲(chǔ)線的相關(guān)產(chǎn)品的文檔工作。
在第五期的文章中颂龙,我們曾以“喬巴的大包”為例习蓬,講述了 QingStor 對象存儲(chǔ)中關(guān)于數(shù)據(jù)存取及加密相關(guān)的知識纽什。今天,作者將繼續(xù)用“喬巴的大包”來為大家解讀存儲(chǔ)空間的授權(quán)問題友雳。
往期回顧:對象存儲(chǔ)手把手教五 | 數(shù)據(jù)存儲(chǔ)與加密
一 故事背景
隨著航海征程的推進(jìn)稿湿,戰(zhàn)斗隨時(shí)打響,這就意味著傷亡隨時(shí)隨地都會(huì)出現(xiàn)押赊。而作為醫(yī)生的喬巴,救死扶傷包斑,是在所難免的流礁。可是罗丰,根據(jù)戰(zhàn)斗的規(guī)模神帅,比如一兩個(gè)傷亡,喬巴可以應(yīng)付萌抵,傷亡慘重的場景里找御,喬巴也只能急的嗷嗷大叫啊。這個(gè)時(shí)候绍填,給喬巴配備助手霎桅,也是迫在眉睫啊。
草帽海賊團(tuán)招收隊(duì)友的標(biāo)準(zhǔn)讨永,大家是知道的滔驶,一時(shí)半會(huì)兒,上哪兒去找助手配給喬巴呢卿闹?
“其實(shí)揭糕,我只需要一個(gè)人能按照我的要求,領(lǐng)用我背包里面的物品就可以了”锻霎,喬巴如是說著角。
針對喬巴的需求,QingStor 對象存儲(chǔ)這次又能提供怎樣的解決方案呢旋恼?
二 什么是 Policy
QingStor 對象存儲(chǔ)提供 Bucket Policy 用于向其他青云 QingCloud 用戶賦予相應(yīng)存儲(chǔ)空間及其對象的訪問權(quán)限吏口。
也就是說,通過該功能蚌铜,喬巴可以給路飛锨侯,或者娜美等草帽海賊團(tuán)的成員分配權(quán)限,使得他們可以訪問喬巴存儲(chǔ)于 QingStor 對象存儲(chǔ)空間的背包冬殃。但是鑒于該背包內(nèi)物品的重要性的不同囚痴,喬巴需要指明哪些物品是可以隨便拿,哪些物品是只能看看审葬,哪些物品是看都不能看的深滚。
QingStor 對象存儲(chǔ)的 Policy 功能奕谭,完美的解決了喬巴的難題。那具體是怎么做的呢痴荐?下面我們將詳細(xì)說明血柳。
三 如何使用Policy
3.1 Console
為方便操作,QingStor 對象存儲(chǔ)提供了友好的界面應(yīng)用程序生兆,供喬巴來設(shè)置其存儲(chǔ)空間的 Policy难捌。詳細(xì)步驟如下:
步驟1: 進(jìn)入 QingCloud 的主頁面,點(diǎn)擊“產(chǎn)品服務(wù) -> 存儲(chǔ)服務(wù) -> 對象存儲(chǔ)”:
步驟2: 進(jìn)入 QingStor 對象存儲(chǔ)空間列表頁面鸦难,點(diǎn)擊待操作的存儲(chǔ)空間:
步驟3: 進(jìn)入存儲(chǔ)空間詳細(xì)頁面后铆铆,點(diǎn)擊“設(shè)置 -> 存儲(chǔ)空間策略 -> 添加規(guī)則”:
步驟4: 進(jìn)入策略設(shè)置頁面患蹂,根據(jù)提示信息,填寫相關(guān)參數(shù),點(diǎn)擊保存即可:
通過設(shè)置 “響應(yīng)動(dòng)作” 坐搔,“用戶” 以及 “操作”拳氢,喬巴可以給指定的隊(duì)友賦予可執(zhí)行或不可執(zhí)行某項(xiàng)動(dòng)作的權(quán)限践剂。通過設(shè)置 “Referer” 來指定該權(quán)限適用的具體物品弓摘。
如喬巴需要給娜美賦予可以獲取整個(gè)背包內(nèi)的物品的權(quán)限,設(shè)置后的規(guī)則如下:
由于路飛比較粗心刃宵,喬巴要拒絕路飛獲取背包內(nèi)的物品衡瓶,設(shè)置后的規(guī)則如下:
3.2 API
QingStor 對象存儲(chǔ)也提供 API,供喬巴來設(shè)置其存儲(chǔ)空間的 Policy组去。
3.2.1 GET Bucket Policy
若喬巴想查看當(dāng)前存儲(chǔ)空間已經(jīng)設(shè)置的存儲(chǔ)空間 Policy鞍陨,可以使用 GET Bucket Policy,無需攜帶多余的信息从隆。但是被賦予該存儲(chǔ)空間訪問權(quán)限的娜美诚撵,就不能使用該 API 來獲取喬巴已經(jīng)設(shè)置的存儲(chǔ)空間 Policy 了。
從存儲(chǔ)空間安全的角度考慮键闺,QingStor 對象存儲(chǔ)僅允許存儲(chǔ)空間的所有者調(diào)用該 API寿烟。
具體可以這樣做:
請求示例:
GET /?policy HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Sun, 16 Aug 2015 09:05:00 GMT
Authorization: authorization string
響應(yīng)示例:
HTTP/1.1 200 OK
Server: QingStor
Date: Sun, 16 Aug 2015 09:05:02 GMT
Content-Length: 300
Connection: close
x-qs-request-id: aa08cf7a43f611e5886952542e6ce14b
{
"statement": [
{
"id": "allow everyone to get and create objects",
"user": "*",
"action": ["get_object", "create_object"],
"effect": "allow",
"resource": ["mybucket/*"],
"condition":{
"string_like": {
"Referer": ["*.example1.com", "*.example2.com"]
}
}
},
{
"id": "allow everyone to head bucket",
"user": "*",
"action": "head_bucket",
"effect": "allow",
"condition":{
"string_like": {
"Referer": ["*.example3.com", "*.example4.com"]
},
"string_not_like": {
"Referer": ["*.service.example3.com"]
}
}
}
]
}
3.2.2 PUT Bucket Policy
若當(dāng)前存儲(chǔ)空間沒有設(shè)置相應(yīng)的 Policy,或已經(jīng)設(shè)置的 Policy 滿足不了喬巴的需求辛燥,這個(gè)時(shí)候筛武,喬巴可以使用 PUT Bucket Policy 來設(shè)置新的存儲(chǔ)空間策略。但是挎塌,被賦予該存儲(chǔ)空間訪問權(quán)限的娜美徘六,就不能使用該 API 來設(shè)置喬巴的存儲(chǔ)空間 Policy 了。
使用該 API 時(shí)榴都,消息體需攜帶詳細(xì)的 Policy 參數(shù)待锈,用以設(shè)置 Policy。參數(shù)列表如下:
具體可以這樣做:
請求示例:
PUT /?policy HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Sun, 16 Aug 2015 09:05:00 GMT
Content-Length: 300
Authorization: authorization string
{
"statement": [
{
"id": "allow certain site to get objects",
"user": "*",
"action": ["get_object"],
"effect": "allow",
"resource": ["mybucket/*"],
"condition": {
"string_like": {
"Referer": [
"*.example1.com",
"*.example2.com"
]
}
}
},
{
"id": "allow user-henry to list objects and create objects",
"user": "user-henry",
"action": ["list_objects", "create_object"],
"resource": ["mybucket/*"],
"effect": "allow"
}
]
}
響應(yīng)示例:
HTTP/1.1 200 OK
Server: QingStor
Date: Sun, 16 Aug 2015 09:05:02 GMT
Content-Length: 0
Connection: close
x-qs-request-id: aa08cf7a43f611e5886952542e6ce14b
3.2.3 DELETE Bucket Policy
若當(dāng)前存儲(chǔ)空間已經(jīng)設(shè)置的 Policy 滿足不了喬巴的需求嘴高,這個(gè)時(shí)候竿音,喬巴可以使用 DELETE Bucket Policy 來刪除已有的存儲(chǔ)空間策略和屎。但是,被賦予該存儲(chǔ)空間訪問權(quán)限的娜美春瞬,就不能使用該 API 來刪除喬巴的存儲(chǔ)空間 Policy 了柴信。
喬巴刪除自己的存儲(chǔ)空間策略,無需攜帶額外的信息宽气。具體可以這樣做:
請求示例:
DELETE /?policy HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Sun, 16 Aug 2015 09:05:00 GMT
Authorization: authorization string
響應(yīng)示例:
HTTP/1.1 204 NoContent
Server: QingStor
Date: Sun, 16 Aug 2015 09:05:02 GMT
Content-Length: 0
Connection: close
x-qs-request-id: aa08cf7a43f611e5886952542e6ce14b
四 結(jié)尾
喬巴使用這個(gè)功能随常,詳細(xì)的設(shè)置了各位隊(duì)友的權(quán)限,比如路飛不能訪問背包抹竹;比如佐隆可以從背包里獲取消炎藥线罕,治療刀傷砍傷的藥;比如喬治可以從背包里獲取治療燙傷的藥等等窃判。
通過 QingStor 對象存儲(chǔ)的 Policy 功能,詳細(xì)而又完善的設(shè)置了各位隊(duì)友操作這個(gè)背包的權(quán)限喇闸。使得在緊急時(shí)刻袄琳,各位隊(duì)友都能方便的拿到自己可以拿到的物品,以協(xié)助喬巴來救治傷員燃乍。
QingStor 對象存儲(chǔ)在這里提醒各位唆樊,只有存儲(chǔ)空間的所有者,才能使用該項(xiàng)功能哦刻蟹!
更多文章
對象存儲(chǔ)手把手教五 | 數(shù)據(jù)存取與加密
QingStor 招聘存儲(chǔ)測試/運(yùn)維/研發(fā)工程師
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布逗旁!