桶ACL和對象ACL
更新時間 2024-11-08 14:48:30
最近更新時間: 2024-11-08 14:48:30
分享文章
本節主要介紹桶ACL和對象ACL。
訪問控制列表(Access Control List,ACL)是一個指定被授權用戶和所授予權限的授權列表,它可以幫助您管理桶和對象的訪問權限。每一個桶和對象都有其對應的ACL,它定義了哪些帳號或群組被授予訪問權限以及其擁有的權限類型。當收到對資源的請求時,OBS會檢查資源的ACL來驗證請求者是否具有必要的訪問權限。
默認情況下,創建桶和對象時會同步創建ACL,授予資源擁有者對桶和對象的完全控制權限(FULL_CONTROL)。
一個桶的ACL最多支持100條授權,一個對象的ACL也最多支持100條授權。
誰是被授權用戶
被授權用戶可以是使用云服務的帳號或OBS預定義的群組,詳細信息如下表所示。
被授權用戶 描述 特定用戶 ACL支持通過帳號授予桶/對象的訪問權限。授予帳號權限后,帳號下所有具有OBS資源權限的IAM用戶都可以擁有此桶/對象的訪問權限。當需要為不同IAM用戶授予不同的權限時,可以通過桶策略配置, 擁有者 桶的擁有者是指創建桶的帳號。桶擁有者默認擁有所有的桶訪問權限,其中桶ACL的讀取和寫入這兩種權限永遠擁有,且不支持修改。對象的擁有者是上傳對象的帳號,而不是對象所屬的桶的擁有者。對象擁有者默認永遠擁有對象讀取權限、ACL的讀取和寫入權限,且不支持修改。 匿名用戶 未注冊云服務的普通訪客群組。如果匿名用戶被授予了訪問桶/對象的權限,則表示所有人都可以訪問對應的桶/對象,并且不需要經過任何身份認證。 日志投遞用戶組
說明僅桶ACL支持。
日志投遞用戶組用于投遞OBS桶及對象的訪問日志。由于OBS本身不能在帳號的桶中創建或上傳任何文件,因此在需要為桶記錄訪問日志時,只能由帳號授予日志投遞用戶組一定權限后,OBS才能將訪問日志寫入指定的日志存儲桶中。該用戶組僅用于OBS內部的日志記錄。須知:當日志記錄開啟后,目標存儲桶的日志投遞用戶組會同步開啟桶的寫入權限和ACL讀取權限。若手動將日志投遞用戶組的桶寫入權限和ACL讀取權限關閉,桶的日志記錄會失敗。
通過ACL可以授予什么權限
桶ACL的可以授予的權限如下表所示:
權限 選項 描述 桶訪問權限 讀取權限READ 此權限可以獲取該桶內對象列表和桶的元數據。 寫入權限WRITE 此權限可以上傳、覆蓋和刪除該桶內任何對象。 ACL訪問權限 讀取權限READ_ACP 此權限可以獲取對應桶的ACL權限控制列表。
桶的擁有者默認永遠具有ACL的讀取權限。寫入權限WRITE_ACP 此權限可以更新對應桶的ACL權限控制列表。
桶的擁有者默認永遠具有ACL的寫入權限。
對象ACL可以授予的權限如下表所示:
權限 選項 描述 對象訪問權限 讀取權限READ 此權限可以獲取該對象內容和元數據。 ACL訪問權限 讀取權限READ_ACP 此權限可以獲取對應對象的ACL權限控制列表。
對象的擁有者默認永遠具有ACL的讀取權限寫入權限WRITE_ACP 此權限可以更新對應對象的ACL權限控制列表。
對象的擁有者默認永遠具有ACL的寫入權限。
說明每一次對桶/對象的授權操作都將覆蓋桶/對象已有的權限列表,而不會對其新增權限。
此外,可以在調用創建桶或上傳對象API時通過頭域設置ACL,可以設置六種預定義的權限,這六種權限對桶或對象的擁有者不產生影響,即擁有者仍然擁有完全控制的權限(FULL_CONTROL)。其詳細情況如下表所示。
| 預定義的權限控制策略 | 描述 |
|---|---|
| private | 桶或對象的擁有者擁有完全控制的權限,其他任何人都沒有訪問權限。此為系統默認的權限控制策略。 |
| public-read | 設在桶上,所有人可以獲取該桶內對象列表、桶內多段任務、桶的元數據、桶的多版本。設在對象上,所有人可以獲取該對象內容和元數據。 |
| public-read-write | 設在桶上,所有人可以獲取該桶內對象列表、桶內多段任務、桶的元數據、桶的多版本、上傳對象刪除對象、初始化段任務、上傳段、合并段、拷貝段、取消多段上傳任務。設在對象上,所有人可以獲取該對象內容和元數據。 |
| public-read-delivered | 設在桶上,所有人可以獲取該桶內對象列表、桶內多段任務、桶的元數據、桶的多版本,可以獲取該桶內對象的內容和元數據。不能應用在對象上。 |
| public-read-write-delivered | 設在桶上,所有人可以獲取該桶內對象列表、桶內多段任務、桶的元數據、桶的多版本、上傳對象刪除對象、初始化段任務、上傳段、合并段、拷貝段、取消多段上傳任務,可以獲取該桶內對象的內容和元數據。不能應用在對象上。 |
| bucket-owner-full-control | 設在桶上,桶的擁有者擁有完全控制的權限,其他任何人都沒有訪問權限。設在對象上,桶或對象的擁有者擁有完全控制的權限,其他任何人都沒有訪問權限。 |
桶ACL使用場景
OBS ACL是基于帳號和群組級別的讀寫權限控制,權限控制細粒度不如桶策略和IAM策略。一般情況下,建議使用IAM策略和桶策略進行訪問控制。
在以下場景,建議您使用桶ACL:
- 授予指定帳號桶讀取權限和桶寫入權限,用以共享桶數據或掛載外部桶。
對象ACL使用場景
OBS ACL是基于帳號和群組級別的讀寫權限控制,權限控制細粒度不如桶策略和IAM策略。一般情況下,建議使用IAM策略和桶策略進行訪問控制。
在以下場景,建議您使用對象ACL:
- 需要對象級的訪問權限控制時。桶策略可以授予對象或對象集訪問權限,當授予一個對象集權限后,想對對象集中某一個對象再進行單獨授權,通過配置桶策略的方法顯然不太實際。此時建議使用對象ACL,使得單個對象的權限控制更加方便。
- 使用對象鏈接訪問對象時。一般使用對象ACL,將某一個對象通過對象鏈接開放給匿名用戶進行讀取操作。