本文主要面向新浪云存儲服務的開發(fā)者,開發(fā)者可通過此文學習如何使用新浪云存儲進行開發(fā)
新浪云存儲ACL(Access Control List,即:訪問控制列表)在計算機文件系統(tǒng)中體現(xiàn)為附加在一個object上的權(quán)限列表;用戶可以通過ACL指定哪些用戶、組或系統(tǒng)進程可被授予object的訪問權(quán)限,以及允許在object上進行哪些操作。
云存儲ACL具備以下功能:
新浪云存儲的開發(fā)者可根據(jù)AccessKey和SecureKey對本次請求進行簽名,ACL根據(jù)簽名來判斷當前發(fā)起請求的用戶的身份。
新浪云存儲用戶可通過ACL來管理bucket和object的訪問控制權(quán)限,管理方式即設置bucket policy和object policy。通過設置policy可允許云存儲的注冊用戶將資源(bucket和object)的訪問和控制權(quán)限開放給其他用戶。
新浪云存儲用戶可以是:
policy的功能說明:
名稱 | 含義 | 描述 |
---|---|---|
Policy | 權(quán)限 |
用戶通過Policy來管理云存儲內(nèi)資源訪問權(quán)限; Policy可以由一條或多條策略組成; Policy之間相互獨立。 |
Owner | 資源的擁有者 |
創(chuàng)建bucket或object時,ACL在policy中設置的Owner信息; Owner與Bucket、Object綁定,不可被修改,對用戶透明; Owner具備Bucket、Object的root權(quán)限,可以進行任何操作; ACL通過簽名信息來判斷當前發(fā)起請求的用戶是不是Owner。 |
Requester | 請求者 | Requester即發(fā)起Http Request的云存儲使用者。 |
Group | 被授權(quán)的組 | 用戶可以設置特定組內(nèi)的用戶對所屬資源的訪問權(quán)限。指定本條權(quán)限是針對哪個用戶組。 |
User | 被授權(quán)的人 | 指定本條權(quán)限是針對哪個用戶。 |
Grantee | 的授權(quán)的人或者組 | Grantee可以是User,也可以是Group。 |
Grant | 授予何種權(quán)限 | 例如:授權(quán)A用戶對資源只讀;授權(quán)B用戶對資源有讀寫權(quán)限; |
Grantee可以是一個云存儲中的注冊用戶,用UserId標示, 例如:SINA0000001001HBK388
Grantee還可以是一個新浪云存儲預定義的用戶組,有如下兩種:
GRPS0000000CANONICAL
:此組表示所有的新浪云存儲注冊帳戶。所有的請求必須簽名(認證),如果簽名認證通過,即可按照已設置的權(quán)限規(guī)則進行訪問。GRPS000000ANONYMOUSE
:匿名用戶組,對應的請求可以不帶簽名。例如:把資源/bucket_name/file.txt對GRPS000000ANONYMOUSE設置為只讀,則任何人不用簽名就可以進行下載。SINA000000000000IMGX
:圖片處理服務,將您的bucket的ACL設置為對SINA000000000000IMGX的讀寫權(quán)限,在您使用圖片處理服務的時候可以免簽名。下表列出了可以給資源(bucket或者object)授予的權(quán)限:
權(quán)限 | 被作用于Bucket時 | 被作用于Object時 |
---|---|---|
READ |
允許Grantee列當前Bucket中的文件 | 允許Grantee下載文件、獲取文件的Metadata |
WRITE |
允許Grantee在當前Bucket中創(chuàng)建、覆蓋、刪除任何Object | 不適用 |
READ_ACP |
允許Grantee讀取當前Bucket的ACL信息 | 允許Grantee讀取當前Object的ACL信息 |
WRITE_ACP |
允許Grantee設置當前Bucket的ACL | 允許Grantee設置當前Object的ACL |
FULL_CONTROL |
FULL_CONTROL = READ + WRITE + READ_ACP + WRITE_ACP |
FULL_CONTROL = READ + WRITE + READ_ACP + WRITE_ACP |
/*
用戶SINA0000000123456789有全部權(quán)限
匿名用戶只讀
認證用戶讀寫
*/
{
'SINA0000000123456789' : [ "read", "read_acp" , "write", "write_acp" ],
'GRPS000000ANONYMOUSE' : [ "read" ],
'GRPS0000000CANONICAL' : [ "read", "write" ]
}
當您通過HTTP請求創(chuàng)建資源(bucket或object)時,可以設置Request Header(請求頭):x-amz-acl
,創(chuàng)建資源的同時設置ACL。
快捷ACL | 作用于 | 描述 |
---|---|---|
private |
Bucket和Object | Owner權(quán)限 = FULL_CONTROL ,其他人沒有任何權(quán)限 |
public-read |
Bucket和Object | Owner權(quán)限 = FULL_CONTROL ,GRPS000000ANONYMOUSE權(quán)限 = READ |
public-read-write |
Bucket和Object | Owner權(quán)限 = FULL_CONTROL ,GRPS000000ANONYMOUSE權(quán)限 = READ + WRITE |
authenticated-read |
Bucket和Object | Owner權(quán)限 = FULL_CONTROL ,GRPS0000000CANONICAL權(quán)限 = READ |
設置ACL有兩種方式:
x-amz-acl
,創(chuàng)建資源的同時設置ACL。相關(guān)API,請參照API文檔中的介紹。