在 Amazon S3 中使用物件 ACL 的使用案例有哪些?

2 分的閱讀內容
0

我想使用存取控制清單 (ACL) 委派對 Amazon Simple Storage Service (Amazon S3) 物件的存取權。使用物件或儲存貯體 ACL 的一些使用案例有哪些?

解決方案

Amazon S3 存取控制清單 (ACL) 讓您能夠管理對 S3 儲存貯體和物件的存取權。每個 S3 儲存貯體和物件都有作為子資源與其連接的 ACL。ACL 定義了哪些 AWS 帳戶或群組被授予存取權及存取類型。當您針對資源提交請求時,Amazon S3 會檢查相應的 ACL 以確認您擁有必要的許可。

授予對物件或儲存貯體存取權的大多數使用案例不再需要 ACL。但在某些情況下,使用 ACL 可能更合適。例如,下面是您可能需要使用 ACL 來管理儲存貯體或物件存取權的一些使用案例:

  • 若要授予對不屬於儲存貯體擁有者的物件的存取權,物件 ACL 是唯一的方法。依預設,當另一個 AWS 帳戶將物件上傳至 S3 儲存貯體時,該帳戶 (物件寫入器) 將擁有該物件。此外,物件寫入器具有物件的存取權,並且可以使用 ACL 授予其他使用者對該物件的存取權。
  • 當您需要在物件級管理許可時,可以使用物件 ACL。例如,如果您需要委派對整個資料夾的存取權,可以使用儲存貯體政策。但如果存取權因物件而異,則使用儲存貯體政策向個別物件授予許可可能不切實際。因此,物件 ACL 可能更適合管理物件存取權。
  • 如果您希望擁有其他 AWS 帳戶寫入您的儲存貯體的新物件 (並且您的 ACL 未停用),則可套用儲存貯體擁有者偏好設定。使用此設定,透過 bucket-owner-full-control ACL 寫入的新物件將自動歸儲存貯體擁有者 (而不是物件寫入器) 所擁有。所有其他 ACL 行為保持原樣。
    注意:若要停用 ACL,請使用 S3 物件擁有權的強制執行儲存貯體擁有者設定。停用 ACL 後,您可以使用儲存貯體政策,輕鬆維護由不同 AWS 帳戶 (跨帳戶) 上傳物件的儲存貯體。如果您的儲存貯體使用 S3 物件擁有權的「強制執行儲存貯體擁有者」設定,則設定或更新 ACL 的請求將會失敗,傳回 AccessControlListNotSupported 錯誤代碼。但仍然支援讀取 ACL 的請求。
  • 儲存貯體 ACL 可用於授予 AWS 服務 (如 Amazon CloudFront) 的許可,以便對您的儲存貯體執行某些動作。例如,當您建立或更新 CloudFront 分發並啟用 CloudFront 日誌記錄時,CloudFront 會更新儲存貯體 ACL。此更新為 awslogsdelivery 帳户授予 FULL_CONTROL 許可,以將日誌寫入您的儲存貯體。 如需詳細資訊,請參閲設定置標準日誌記錄與存取日誌檔案所需的許可

將 ACL 套用至物件

範例 1

如果您要將物件上傳至不同 AWS 帳戶中的儲存貯體,請使用 bucket-owner-full-control 標準 ACL:

aws s3api put-object --bucket destination_bucket --key dir-1/myfile --body dir-1/myfile --acl bucket-owner-full-control

bucket-owner-full-control 標準 ACL 提供對儲存貯體擁有者帳戶的存取權。

**注意:**Amazon S3 支援一組稱為標準 ACL 的預先定義 ACL (如本範例中使用的 bucket-owner-full-control ACL)。

範例 2

物件上傳工具還可以新增 ACL,以向其他 AWS 帳戶授予讀取許可:

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read emailaddress=user1@amazon.com,id=canonical-id-of-account

**注意:**您只能在以下 AWS 區域使用電子郵件地址指定被授權者:維吉尼亞北部、加利佛尼亞北部、奧勒岡、新加坡、雪梨、愛爾蘭、東京和聖保羅。

範例 3

您還可以更新現有物件的 ACL:

aws s3api put-object-acl --bucket destination_bucket --key dir/myfile --acl bucket-owner-full-control

範例 4

Amazon S3 具有一組預先定義的群組。您可以使用物件 ACL,向屬於這些預先定義群組的使用者授予許可。

例如,您可以授予對經驗證使用者群組的存取權,以向任何經過身分驗證的 AWS 使用者授予物件存取權:

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers

注意:在授予對經驗證使用者群組的存取權之前,請在帳戶和儲存貯體級停用 ACL 的封鎖公有存取設定。否則,您會收到存取遭拒錯誤。若要解決與 ACL 相關的拒絕遭拒錯誤,請參閲有權將物件新增至我的 Amazon S3 儲存貯體的使用者收到「存取遭拒」錯誤。為什麼?


相關資訊

如何對來自 Amazon S3 的「403 存取遭拒」錯誤進行疑難排解?

使用 ACL 管理存取權

何時使用以 ACL 為基礎的存取政策 (儲存貯體和物件 ACL)

AWS 官方
AWS 官方已更新 2 年前