本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 ACL
本節說明如何使用存取控制清單 (ACL) 來管理 S3 儲存貯體和物件的存取許可。您可以使用 AWS Management Console、 AWS Command Line Interface (CLI)、REST API 或 AWS SDK 將授權新增至資源 ACL。
儲存貯體許可與物件許可各自互相獨立。物件不會繼承其儲存貯體的許可。例如,若您建立儲存貯體,並將寫入存取授予使用者,除非使用者明確授予存取權給您,否則您無法存取該使用者的物件。
您可以將權限授與其他 AWS 帳戶 使用者或預先定義的群組。您要授予許可的使用者或群組稱為「被授予者」。擁有者 (亦即建立儲存貯體的 AWS 帳戶 ) 預設會有完整許可。
您每授予使用者或群組一項許可,就會在與儲存貯體相關聯的 ACL 中新增一個項目。ACL 會列出授予,其中指出被授予者及獲授予之許可。
S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,您可以用來同時控制上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL。根據預設,物件擁有權設定為「儲存貯體擁有者強制執行」設定,而且所有 ACL 都會停用。停用 ACL 時,儲存貯體擁有者會擁有儲存貯體中的所有物件,並使用存取管理政策專門管理對這些物件的存取。
Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保持停用狀態,除非在異常情況下必須個別控制每個物件的存取。停用 ACL 後,您可以使用政策來控制對儲存貯體中所有物件的存取,無論是誰將物件上傳到您的儲存貯體。如需詳細資訊,請參閱 控制物件的擁有權並停用儲存貯體的 ACL。
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
警告
我們強烈建議您避免授與寫入權限給 Everyone (公開存取) 或「已驗證的使用者」群組 (所有 AWS 已驗證的使用者) 群組。如需詳細資訊了解授予寫入存取權限對這些群組的影響,請參閱「Amazon S3 預先定義的群組」。
主控台會顯示重複被授予者的合併存取授予。若要查看 ACL 的完整清單,請使用 Amazon S3 REST API 或 AWS 開發套件。 AWS CLI
下表顯示您可以在 Amazon S3 主控台中為儲存貯體設定的 ACL 許可。
儲存貯體的 Amazon S3 主控台 ACL 許可 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
主控台許可 | ACL 許可 | Access (存取) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objects (物件) – List (列出) | READ |
允許被授予者列出儲存貯體中的物件。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Objects (物件) - Write (寫入) | WRITE |
允許被授予者在儲存貯體中建立新物件。對於現有物件的儲存貯體和物件擁有者,還允許刪除和覆寫這些物件。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bucket ACL (儲存貯體 ACL) - Read (讀取) | READ_ACP |
允許被授予者讀取儲存貯體 ACL。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bucket ACL (儲存貯體 ACL) - Write (寫入) | WRITE_ACP |
允許被授予者寫入適用儲存貯體的 ACL。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
每個人(公開存取):物件 - 列出 | READ |
對儲存貯體中的物件授予公開讀取存取權限。當您將列出存取權限授予每個人(公開存取權限)時,世界上的任何人都可以存取儲存貯體中的物件。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
每個人 (公開存取權限):儲存貯體 ACL - 讀取 | READ_ACP |
對儲存貯體 ACL 授予公開讀取存取權限。當您將讀取存取權限授予每個人(公開存取權限)時,世界上的任何人都可以存取儲存貯體 ACL。 |
如需 ACL 許可的詳細資訊,請參閱存取控制清單 (ACL) 概觀。
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
設定儲存貯體的 ACL 許可
登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇要設定許可的儲存貯體名稱。
-
選擇 Permissions (許可)。
-
在 Access control list (存取控制清單) 下,選擇 Edit (編輯)。
您可以編輯儲存貯體的下列 ACL 許可:
物件
-
List (清單) – 允許承授者列出儲存貯體中的物件。
-
Write (寫入) – 允許承授者在儲存貯體中建立新物件。對於現有物件的儲存貯體和物件擁有者,還允許刪除和覆寫這些物件。
在 S3 主控台中,您只能授與寫入存取權給 S3 日誌傳遞群組和儲存貯體擁有者 (您的 AWS 帳戶)。強烈建議您不要授予其他承授者的寫入存取權。不過,如果您需要授與寫入存取權,您可以使用 AWS CLI、 AWS SDK 或 REST API。
儲存貯體 ACL
-
Read (讀取) – 允許承授者讀取儲存貯體 ACL。
-
Write (寫入) – 允許承授者寫入適用儲存貯體的 ACL。
-
-
若要變更值區擁有者的權限,請在值區擁有者 (您的 AWS 帳戶) 旁清除或選取下列 ACL 權限:
-
Objects (物件) – List (列出) 或 Write (寫入)
-
Bucket ACL (儲存貯體) – Read (讀取) 或 Write (寫入)
擁有者指的是 IAM 使用者 AWS 帳戶根使用者,而不是 AWS Identity and Access Management IAM 使用者。如需根使用者的詳細資訊,請參閱《IAM 使用者指南》中的 AWS 帳戶根使用者。
-
-
若要授予或復原一般公眾 (網際網路上的所有人) 的許可,請在 Everyone (public access) (所有人 (公開存取)) 旁邊,清除或從下列 ACL 許可中選取:
-
Objects (物件) – List (列出)
-
Bucket ACL (儲存貯體) – Read (讀取)
警告
將 S3 儲存貯體的公開存取授予 Everyone (每個人) 群組時請小心。當您將存取授予此群組時,全世界的所有人都能存取您的儲存貯體。強烈建議您絕不要授予任何種類的 S3 儲存貯體公用寫入存取。
-
-
若要授與或復原任何擁有「已驗證使用者」群組 (擁有 AWS 帳戶) 旁的使用者的權限,請清除或從下列 ACL 權限中選取: AWS 帳戶
-
Objects (物件) – List (列出)
-
Bucket ACL (儲存貯體) – Read (讀取)
-
-
若要授予或復原 Amazon S3 將伺服器存取日誌寫入儲存貯體的許可,請在 S3 log delivery group (S3 日誌交付群組) 下,清除或從下列 ACL 許可中選取:
-
Objects (物件) – List (列出) 或 Write (寫入)
-
Bucket ACL (儲存貯體) – Read (讀取) 或 Write (寫入)
如果儲存貯體設定為要接收存取日誌的目標儲存貯體,儲存貯體許可必須將儲存貯體的寫入存取授予 Log Delivery (日誌交付) 群組。當您啟用儲存貯體上的伺服器存取記錄日誌時,Amazon S3 主控台會將寫入存取權限授予您選擇接收日誌之目標儲存貯體的 Log Delivery (日誌交付) 群組。如需伺服器存取記錄日誌的詳細資訊,請參閱「啟用 Amazon S3 伺服器存取記錄日誌」。
-
-
若要授與存取權給另一個人 AWS 帳戶,請執行下列動作:
-
選擇 Add grantee (新增承授者)。
-
在 Grantee (被授予者) 方塊中,輸入其他 AWS 帳戶的正式 ID。
-
從下列 ACL 許可中選取:
-
Objects (物件) – List (列出) 或 Write (寫入)
-
Bucket ACL (儲存貯體) – Read (讀取) 或 Write (寫入)
-
警告
當您授與資源的其他 AWS 帳戶 存取權時,請注意, AWS 帳戶 可以將其權限委派給其帳戶下的使用者。這稱為跨帳戶存取。如需有關使用跨帳戶存取的資訊,請參閱《IAM 使用者指南》中的建立角色將許可委派給 IAM 使用者。
-
-
若要移除對其他人的存取權 AWS 帳戶,請在 [其他 AWS 帳戶存取權] 下選擇 [移除]
-
若要儲存您所做的變更,請選擇 Save changes (儲存變更)。
主控台會顯示重複被授予者的合併存取授予。若要查看 ACL 的完整清單,請使用 Amazon S3 REST API 或 AWS 開發套件。 AWS CLI下表顯示您可以在 Amazon S3 主控台中為物件設定的 ACL 許可。
物件的 Amazon S3 主控台 ACL 許可 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
主控台許可 | ACL 許可 | Access (存取) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
物件 - 讀取 | READ |
允許被授予者讀取物件資料及其中繼資料。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
物件 ACL - 讀取 | READ_ACP |
允許被授予者讀取物件 ACL。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
物件 ACL - 寫入 | WRITE_ACP |
允許被授予者寫入適用物件的 ACL |
如需 ACL 許可的詳細資訊,請參閱存取控制清單 (ACL) 概觀。
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
設定物件的 ACL 許可
登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇包含該物件的儲存貯體名稱。
-
在 objects (物件) 清單中,選擇您要設定許可的物件名稱。
-
選擇 Permissions (許可)。
-
在 Access control list (ACL) (存取控制清單 (ACL)) 下,選擇 Edit (編輯)。
您可以編輯物件的下列 ACL 許可:
物件
-
Read (讀取) – 允許承授者讀取物件資料及其中繼資料
物件 ACL
-
Read (讀取) – 允許承授者讀取物件 ACL。
-
Write (寫入) – 允許承授者寫入適用物件的 ACL。在 S3 主控台中,您只能授予儲存貯體擁有者 (您的 AWS 帳戶) 的寫入存取權。強烈建議您不要授予其他承授者的寫入存取權。不過,如果您需要授與寫入存取權,您可以使用 AWS CLI、 AWS SDK 或 REST API。
-
-
您可以管理下列項目的物件存取許可:
-
其他擁有者的存取
擁有者指的是 AWS 帳戶根使用者,而不是 AWS Identity and Access Management IAM 使用者。如需根使用者的詳細資訊,請參閱《IAM 使用者指南》中的 AWS 帳戶根使用者。
若要變更擁有者的物件存取權限,請在「物件擁有者的存取權」下選擇「您的 AWS 帳戶 (擁有者)」。
選取您要變更之許可的核取方塊,然後選擇 Save (儲存)。
-
訪問其他 AWS 帳戶
若要授與其他 AWS 使用者的權限 AWS 帳戶,請在 [其他使用者的存取權] 底下 AWS 帳戶,選擇 [新增帳戶]。在「輸入 ID」欄位中,輸入您要授與物件權限之 AWS 使用者的標準 ID。如需尋找正式 ID 的相關資訊,請參閱《Amazon Web Services 一般參考》中的 AWS 帳戶 識別符。您最多可以新增 99 個使用者。
選取您要授予使用者之許可的核取方塊,然後選擇 Save (儲存)。若要顯示許可的相關資訊,請選擇說明圖示。
-
公用存取
若要將物件的存取權授予一般大眾 (全世界的所有人),請在 Public access (公開存取) 下,選擇 Everyone (每個人)。授予公用存取許可表示全世界的所有人都能存取該物件。
選取您要授予之許可的核取方塊,然後選擇 Save (儲存)。
警告
將 Amazon S3 物件的匿名存取權授予每個人群組時請謹慎小心。當您將存取權授予此群組時,全世界任何人都能存取您的物件。若必須將存取權授予每個人,強烈建議您只授予 Read objects (讀取物件) 許可。
強烈建議您「不要」將寫入物件許可授予 Everyone (每個人) 群組。否則所有人都可覆寫物件的 ACL 許可。
-
此章節提供範例說明如何設定存取控制清單 (ACL) 授與給儲存貯體和物件。
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
Amazon S3 API 可讓您在建立儲存貯體或物件時設定 ACL。Amazon S3 也提供在現有儲存貯體或物件上設定 ACL 的 API。這些 API 提供下列方法來設定 ACL:
-
使用請求標頭設定 ACL – 當您傳送請求以建立資源 (儲存貯體或物件) 時,您可以使用請求標頭來設定 ACL。您可以使用這些標頭來指定固定的 ACL,或明確指定授予 (明確識別被授予者與許可)。
-
使用請求內文設定 ACL – 當您傳送請求以在現有的資源上設定 ACL 時,您可以在請求標頭或內文中設定 ACL。
如需有關 REST API 支援管理 ACL 的資訊,請參閱《Amazon Simple Storage Service API 參考》中的下列章節:
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。
存取控制清單 (ACL)-特定請求標頭
您可以使用標頭,授予以存取控制清單 (ACL) 為基礎的許可。所有物件預設皆為私有。只有擁有者有完整的存取控制權。新增物件時,您可以將許可授與個別 AWS 帳戶 或 Amazon S3 定義的預先定義群組。然後,這些許可會新增至物件上的存取控制清單 (ACL)。如需詳細資訊,請參閱 存取控制清單 (ACL) 概觀。
透過此操作,您可以使用下列兩種方法之一授與存取許可:
-
固定的 ACL (
x-amz-acl
) — Amazon S3 支援一組預先定義的 ACL,稱為固定的 ACL。每個固定的 ACL 都有一組預先定義的被授與者和許可。如需詳細資訊,請參閱 固定的 ACL。 -
存取權限 — 若要明確授與特定 AWS 帳戶 或群組的存取權限,請使用下列標頭。每個標頭映射到 Amazon S3 在 ACL 中支援的特定許可。如需詳細資訊,請參閱 存取控制清單 (ACL) 概觀。在標頭中,您指定取得特定許可的授與者清單。
x-amz-grant-read
x-amz-grant-write
x-amz-grant-read-ACP
x-amz-grant-write-ACP
x-amz-grant-full-控制
若要取得有關使用管理 ACL 的更多資訊 AWS CLI,請參閱《AWS CLI 指令參考》put-bucket-acl
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。