1.身份認(rèn)證
我們生活的世界是一個(gè)現(xiàn)實(shí)的世界,每個(gè)人都有其獨(dú)特的身份,幾乎不可能被仿冒。但網(wǎng)絡(luò)是一個(gè)完全虛擬的世界,隨著網(wǎng)絡(luò)犯罪的增加,如何在虛擬環(huán)境下對(duì)用戶的身份做出準(zhǔn)確、快速的識(shí)別已經(jīng)成為一個(gè)重要的研究課題。
S3中使用基于HMAC-SHA1的數(shù)字簽名方式來(lái)確定用戶身份。HMAC-SHA1是一種安全的基于加密Hash函數(shù)和共享密鑰的消息認(rèn)證協(xié)議,它可以有效地防止數(shù)據(jù)在傳輸過(guò)程中被截獲和篡改,維護(hù)了數(shù)據(jù)的完整性、可靠性和安全性。HMAC-SHA1消息認(rèn)證機(jī)制的成功在于一個(gè)加密的Hash函數(shù)、一個(gè)加密的隨機(jī)密鑰和一個(gè)安全的密鑰交換機(jī)制。在新用戶注冊(cè)時(shí),Amazon會(huì)給每個(gè)用戶分配一個(gè)Access Key ID和一個(gè)Secret Access Key。Access Key ID是一個(gè)20位的由字母和數(shù)字組成的串,Secret Access Key是一個(gè)40位的字符串。Access Key ID用來(lái)確定服務(wù)請(qǐng)求的發(fā)送者,而Secret Access Key則參與數(shù)字簽名過(guò)程,用來(lái)證明用戶是發(fā)送服務(wù)請(qǐng)求的賬戶的合法擁有者。S3數(shù)字簽名具體實(shí)現(xiàn)過(guò)程如圖3-17所示。

S3用戶首先發(fā)出服務(wù)請(qǐng)求,系統(tǒng)會(huì)自動(dòng)生成一個(gè)服務(wù)請(qǐng)求字符串。HMAC函數(shù)的要功能是計(jì)算用戶的服務(wù)請(qǐng)求字符串和Secret Access Key生成的數(shù)字簽名,并將這個(gè)簽名和服務(wù)請(qǐng)求字符串一起傳給S3服務(wù)器。當(dāng)服務(wù)器租用接收到信息后會(huì)從中分離出用戶的Access Key ID,通過(guò)査詢S3數(shù)據(jù)庫(kù)得到用戶的Secret Access Key。利用和上面相同的過(guò)程生成一個(gè)數(shù)字簽名,然后和用戶發(fā)送的數(shù)字簽名做比對(duì),相同則通過(guò)驗(yàn)證,反之拒絕。
2.訪問(wèn)控制列表
訪問(wèn)控制列表(Access Control List,ACL)是S3提供的可供用戶自行定義的訪問(wèn)控制策略列表。很多時(shí)候用戶希望將自己的文件和別人共享但又不想未經(jīng)授權(quán)的用戶進(jìn)入,此時(shí)可以根據(jù)需要設(shè)置合適的訪問(wèn)控制列表。S3的訪問(wèn)控制策略(Access Control Policy, ACP)提供如表3-5所示的五種訪問(wèn)權(quán)限。

需要注意的是桶和對(duì)象的ACL是各自獨(dú)立的,對(duì)桶有某種訪問(wèn)權(quán)限不代表對(duì)桶中的對(duì)象也具有相同的權(quán)限,也就是說(shuō)S3的ACL不具有繼承性。
S3中有三大類(lèi)型的授權(quán)用戶,分別是所有者(Owner)、個(gè)人授權(quán)用戶(User)、 組授權(quán)用戶(Group)。
1)所有者
所有者是桶或?qū)ο蟮膭?chuàng)建者,默認(rèn)具有的是WRITE_ACP權(quán)限。所有者本身也要服從ACL,如果該所有者沒(méi)有READ_ACP,則無(wú)法讀取ACL。但是所有者可以通過(guò)覆寫(xiě)相應(yīng)桶或?qū)ο蟮腁CP獲取想要的權(quán)限,從這個(gè)意義上來(lái)說(shuō),所有者默認(rèn)就是最高權(quán)限擁有者。
2)個(gè)人授權(quán)用戶
這包括兩種授權(quán)方式。一種是通過(guò)電子郵件地址授權(quán)的用戶(User by E-mail),即授權(quán)給和某個(gè)特定電子郵件地址綁定的AWS用戶;另一種是通過(guò)用戶ID進(jìn)行授權(quán)(User by Canonical Representation),這種方式是直接授權(quán)給擁有某個(gè)特定AWS ID的用戶。后一種方式比較麻煩,因?yàn)镮D是一個(gè)不規(guī)則的字符串,用戶在授權(quán)的過(guò)程中容易出錯(cuò)。值得注意的是通過(guò)電子郵件地址方式授權(quán)的方法最終還是在S3服務(wù)器租用內(nèi)部轉(zhuǎn)換成相應(yīng)的用戶ID進(jìn)行授權(quán)。
3)組授權(quán)用戶
同樣包括兩種方式。一種是AWS用戶組(AWS User Group),它將授權(quán)分發(fā)給所有AWS賬戶擁有者;另一種是所有用戶組(All User Group),這是一種有著很大潛在危險(xiǎn)的授權(quán)方式,因?yàn)樗试S匿名訪問(wèn),所以不建議使用這種方式。