設定 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 的請求。
警告
強烈建議您避免將寫入存取權授予每個人 (公開存取) 或已驗證的使用者群組 (所有 AWS 驗證的使用者) 群組。如需詳細資訊了解授予寫入存取權限對這些群組的影響,請參閱「Amazon S3 預先定義的群組」。
主控台會顯示重複被授予者的合併存取授予。若要查看 ACL 的完整清單,請使用 Amazon S3 REST API、AWS CLI 或 AWS SDK。
下表顯示您可以在 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,並開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在 Buckets (儲存貯體) 清單中,選擇要設定許可的儲存貯體名稱。
-
選擇 Permissions (許可)。
-
在 Access control list (存取控制清單) 下,選擇 Edit (編輯)。
您可以編輯儲存貯體的下列 ACL 許可:
物件
-
List (清單) – 允許承授者列出儲存貯體中的物件。
-
Write (寫入) – 允許承授者在儲存貯體中建立新物件。對於現有物件的儲存貯體和物件擁有者,還允許刪除和覆寫這些物件。
在 S3 主控台中,您只能授予對 S3 日誌傳遞群組和儲存貯體擁有者 (您的 AWS 帳戶) 的寫入存取權。強烈建議您不要授予其他承授者的寫入存取權。但是,如果您需要授予寫入存取權,則可以使用 AWS CLI、AWS SDK 或 REST API。
儲存貯體 ACL
-
Read (讀取) – 允許承授者讀取儲存貯體 ACL。
-
Write (寫入) – 允許承授者寫入適用儲存貯體的 ACL。
-
-
若要變更儲存貯體擁有者的許可,請在 Bucket owner (your AWS 帳戶 account) (儲存貯體擁有者 (您的 AWS 帳戶 帳戶)) 旁邊清除或選取下列 ACL 許可:
-
Objects (物件) – List (列出) 或 Write (寫入)
-
Bucket ACL (儲存貯體) – Read (讀取) 或 Write (寫入)
擁有者是指 AWS 帳戶根使用者,而不是 AWS Identity and Access Management IAM 使用者。如需根使用者的詳細資訊,請參閱《IAM 使用者指南》中的 AWS 帳戶根使用者。
-
-
若要授予或復原一般公眾 (網際網路上的所有人) 的許可,請在 Everyone (public access) (所有人 (公開存取)) 旁邊,清除或從下列 ACL 許可中選取:
-
Objects (物件) – List (列出)
-
Bucket ACL (儲存貯體) – Read (讀取)
警告
將 S3 儲存貯體的公開存取授予 Everyone (每個人) 群組時請小心。當您將存取授予此群組時,全世界的所有人都能存取您的儲存貯體。強烈建議您絕不要授予任何種類的 S3 儲存貯體公用寫入存取。
-
-
若要為擁有 AWS 帳戶 的任何人授予或復原許可,請在 Authenticated Users group (anyone with an AWS 帳戶) (已驗證的使用者群組 (擁有 AWS 帳戶 帳戶的任何人)) 旁邊,清除或選取下列 ACL 許可:
-
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 帳戶 的存取權,請在 Access for other AWS 帳戶 (其他 AWS 帳戶 帳戶的存取權) 下選擇 Remove (移除)。
-
若要儲存您所做的變更,請選擇 Save changes (儲存變更)。
主控台會顯示重複被授予者的合併存取授予。若要查看 ACL 的完整清單,請使用 Amazon S3 REST API、AWS CLI 或 AWS SDK。下表顯示您可以在 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,並開啟位於 https://console.aws.amazon.com/s3/
的 Amazon 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 帳戶根使用者。
若要變更擁有者的物件存取許可,請在 Access for object owner (物件擁有者的存取權) 下,選擇 Your AWS Account (owner) (您的 AWS 帳戶 (擁有者))。
選取您要變更之許可的核取方塊,然後選擇 Save (儲存)。
-
其他 AWS 帳戶 的存取權
若要將許可授予其他 AWS 帳戶 的 AWS 使用者,請在 Access for other AWS 帳戶 accounts (其他 AWS 帳戶的存取權) 下,選擇 Add account (新增帳戶)。在 Enter an ID (輸入 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。 -
Access Permissions (存取許可) – 若要明確授予特定 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-control
-
如需有關使用 AWS CLI 來管理 ACL 的詳細資訊,請參閱《AWS CLI 命令參考》中的 put-bucket-acl
重要
如果儲存貯體使用 S3 物件擁有權的儲存貯體擁有者強制執行設定,則您必須使用政策將存取權授予儲存貯體及其中的物件。在啟用儲存貯體擁有者強制執行設定的情況下,請求設定存取控制清單 (ACL) 或更新 ACL 失敗,並傳回 AccessControlListNotSupported
錯誤碼。仍支援讀取 ACL 的請求。