

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 控制物件的擁有權並停用儲存貯體的 ACL
<a name="about-object-ownership"></a>

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，您可以用來控制上傳至儲存貯體之物件的擁有權，以及停用或啟用[存取控制清單 (ACL)](acl-overview.md)。根據預設，物件擁有權設定為「儲存貯體擁有者強制執行」設定，而且所有 ACL 都會停用。停用 ACL 時，儲存貯體擁有者會擁有儲存貯體中的所有物件，並使用存取管理政策專門管理對資料的存取。

Amazon S3 中的大多數現代使用案例不再需要使用 ACL，建議您將 ACL 保持停用狀態，除非是必須個別控制每個物件存取權的情況。停用 ACL 後，您可以使用政策，更輕鬆地控制對儲存貯體中每個物件的存取，無論是誰上傳了您儲存貯體中的物件。

「物件擁有權」有三項設定，可讓您用來控制對上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL：

**已停用 ACL**
+ **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

**已啟用 ACL**
+ **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。
+ **Object writer** (物件寫入者) – 上傳物件的 AWS 帳戶 ，上傳的物件可擁有物件、完全控制該物件，並且可以透過 ACL 授權其他使用者存取該物件。

對於 S3 中的大多數現代使用案例，建議您將 ACL 保持停用狀態，方法為套用儲存貯體擁有者強制執行設定，並視需要使用您的儲存貯體政策與帳戶外的使用者共用資料。這種方法可簡化許可管理。您可以在新建立和現有儲存貯體上停用 ACL。針對新建立的儲存貯體，預設會停用 ACL。在現有儲存貯體中已有物件的情況下，停用 ACL 之後，物件和儲存貯體 ACL 不再是存取評估的一部分，並根據政策授予或拒絕存取。對於現有儲存貯體，您可以在停用 ACL 之後隨時重新啟用，並還原之前存在的儲存貯體和物件 ACL。

在停用 ACL 之前，建議您檢閱儲存貯體政策，以確保其涵蓋您打算將存取權授予帳戶外儲存貯體的所有方式。停用 ACL 之後，儲存貯體只接受未指定 ACL 的 `PUT` 請求或儲存貯體擁有者完全控制 ACL 的 `PUT` 請求，例如 `bucket-owner-full-control` 標準 ACL 或以 XML 表達此 ACL 的同等形式。支援儲存貯體擁有者完全控制 ACLs現有應用程式不會有任何影響。包含其他 ACLs（例如，對特定 的自訂授權 AWS 帳戶) 的`PUT`請求會失敗，並傳回`400`錯誤碼為 的錯誤`AccessControlListNotSupported`。

相比之下，具有「儲存貯體擁有者偏好」設定的儲存貯體會繼續接受並遵循儲存貯體和物件 ACL。使用此設定時，儲存貯體擁有者會自動擁有使用 `bucket-owner-full-control` 標準 ACL 寫入的新物件，而不是物件寫入者。所有其他 ACL 行為都會保留在原位。若要要求所有 Amazon S3 `PUT` 操作包含 `bucket-owner-full-control` 標準 ACL，您可以[新增儲存貯體政策](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，只允許使用此 ACL 上傳物件。

若要查看哪些物件擁有權設定套用至儲存貯體，您可以使用 Amazon S3 Storage Lens 指標。S3 Storage Lens 是一種雲端儲存體分析功能，您可以用來了解整個組織使用物件儲存體的情況及其活動情形。如需詳細資訊，請參閱[使用 S3 Storage Lens 尋找物件擁有權設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-access-management.html?icmpid=docs_s3_user_guide_about-object-ownership.html)。

**注意**  
如需將 Amazon S3 Express One Zone 儲存類別與目錄儲存貯體搭配使用的詳細資訊，請參閱 [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) 和 [使用目錄儲存貯體](directory-buckets-overview.md)。

## 「物件擁有權」設定
<a name="object-ownership-overview"></a>

此資料表顯示每個「物件擁有權」設定對 ACL、物件、物件擁有權和物件上傳的影響。


| 設定 | 適用對象 | 對物件所有權的影響 | 對 ACL 的影響 | 已接受上傳 | 
| --- | --- | --- | --- | --- | 
| 儲存貯體擁有者強制執行 (預設) | 全部新的和現有物件 | 儲存貯體擁有者擁有每個物件。 |  ACL 已停用，不再影響儲存貯體的存取許可。設定或更新 ACL 的請求失敗。不過，仍支援讀取 ACL 的請求。 儲存貯體擁有者擁有完整的擁有權和控制權。 物件寫入者不再擁有完整的擁有權和控制權。  | 儲存貯體擁有者完全控制 ACL 的上傳或未指定 ACL 的上傳 | 
| 儲存貯體擁有者偏好 | 新物件 | 如果物件上傳包含 bucket-owner-full-control 標準 ACL，則儲存貯體擁有者會擁有物件。與其他 ACL 一起上傳的物件是由寫入帳戶所擁有。 |  ACL 可以更新，而且可以授予許可。 如果物件上傳包含 `bucket-owner-full-control` 標準 ACL，則儲存貯體擁有者擁有完整的存取控制權，而且物件寫入者不再擁有完整的存取控制權。  | 所有上傳 | 
| 物件寫入器 | 新物件 | 物件寫入者擁有物件。 |  ACL 可以更新，而且可以授予許可。 物件寫入者具有完整的存取控制權。  | 所有上傳 | 

## 透過停用 ACL 引入的變更
<a name="object-ownership-changes"></a>

套用物件擁有權的「儲存貯體擁有者強制執行」設定時，ACL 會停用，而且您會自動擁有並完全控制儲存貯體中的每個物件，而不會採取任何其他動作。儲存貯體擁有者強制執行是所有新建儲存貯體的預設設定。在套用儲存貯體擁有者強制執行設定之後，您會看到三個變更：
+ 會停用所有儲存貯體 ACL 和物件 ACL，這可讓您身為儲存貯體擁有者擁有完整的存取權。在儲存貯體或物件上執行讀取 ACL 請求時，您會看到完整存取權僅提供給儲存貯體擁有者。
+ 您身為儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。
+ ACL 不再影響儲存貯體的存取許可。因此，資料的存取控制是以政策為基礎，例如 AWS Identity and Access Management (IAM) [身分型政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_id-based-policy-examples.html)、Amazon S3 儲存[貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)、VPC 端點政策，以及 Organizations [服務控制政策 (SCPs)](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_scps.html) 或[資源控制政策 RCPs)](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_rcps.html)。

![\[此圖表顯示當您套用「儲存貯體擁有者強制執行」設定以停用 ACL 時會發生什麼情況。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/bucket-owner-enforced.png)


如果您使用 S3 版本控制，則儲存貯體擁有者會擁有並且可以完全控制儲存貯體中的所有物件版本。套用「儲存貯體擁有者強制執行」設定不會新增物件的版本。

只有在使用儲存貯體擁有者完全控制 ACL 或未指定 ACL 時，新物件才能上傳到儲存貯體。如果物件指定任何其他 ACL，則物件上傳會失敗。如需詳細資訊，請參閱[疑難排解](object-ownership-error-responses.md)。

因為以下使用 AWS Command Line Interface (AWS CLI) 的範例 `PutObject` 操作包含 `bucket-owner-full-control` 標準 ACL，所以可將物件上傳至已停用 ACL 的儲存貯體。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file --acl bucket-owner-full-control
```

因為以下 `PutObject` 操作未指定 ACL，所以對於已停用 ACL 的儲存貯體也會成功。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file
```

**注意**  
如果其他 AWS 帳戶 需要在上傳後存取物件，您必須透過儲存貯體政策授予這些帳戶其他許可。如需詳細資訊，請參閱[使用政策來管理 Amazon S3 資源存取的逐步解說](example-walkthroughs-managing-access.md)。

**重新啟用 ACL**  
您可以隨時從「儲存貯體擁有者強制執行」設定變更為另一個「物件擁有權」設定，以重新啟用 ACL。如果您在套用「儲存貯體擁有者強制執行」設定之前，先使用物件 ACL 進行許可管理，而且未將這些物件 ACL 許可遷移至儲存貯體政策，則重新啟用 ACL 之後，這些許可會還原。此外，在套用「儲存貯體擁有者強制執行」設定時寫入儲存貯體的物件仍然由儲存貯體擁有者擁有。

例如，如果您從「儲存貯體擁有者強制執行」設定變更回「物件寫入器」設定，身為儲存貯體擁有者，您就不再擁有之前由其他 AWS 帳戶擁有的物件，且不對其擁有完整控制權。相反，上傳帳戶再次擁有這些物件。其他帳戶擁有的物件會使用 ACL 來取得許可，因此您無法使用政策為這些物件授予許可。此外，您身為儲存貯體擁有者，仍然擁有在套用「儲存貯體擁有者強制執行」設定時寫入儲存貯體的任何物件。即使您重新啟用 ACL，這些物件也不屬於物件寫入者。

如需使用、 AWS Command Line Interface (CLI) AWS 管理主控台、REST API 或 AWS SDKs 啟用和管理 ACLs 的說明，請參閱 [設定 ACL](managing-acls.md)。

## 停用 ACL 的先決條件
<a name="object-ownership-considerations"></a>

停用現有儲存貯體的 ACL 之前，請先完成下列先決條件。
+ [檢閱儲存貯體和物件 ACL，並遷移 ACL 許可](object-ownership-migrating-acls-prerequisites.md#object-ownership-acl-permissions)

  
+ [識別需要 ACL 進行授權的所有請求](object-ownership-migrating-acls-prerequisites.md#object-ownership-acl-identify)

  
+ [檢閱和更新使用 ACL 相關條件索引鍵的儲存貯體政策](object-ownership-migrating-acls-prerequisites.md#object-ownership-bucket-policies)

  

## 「物件擁有權」許可
<a name="object-ownership-permissions"></a>

若要套用、更新或刪除儲存貯體的「物件擁有權」設定，您需要 `s3:PutBucketOwnershipControls` 許可。若要退回儲存貯體的「物件擁有權」設定，您需要 `s3:GetBucketOwnershipControls` 許可。如需更多詳細資訊，請參閱 [在建立儲存貯體時設定「物件擁有權」](object-ownership-new-bucket.md) 及 [檢視 S3 儲存貯體的「物件擁有權」設定](object-ownership-retrieving.md)。

## 停用所有新儲存貯體的 ACL
<a name="requiring-bucket-owner-enforced"></a>

根據預設，所有新的儲存貯體是在套用儲存貯體擁有者強制執行設定，並停用 ACL 的情況下建立。建議將 ACL 保持停用狀態。一般而言，我們建議使用 S3 以資源為基礎的政策 (儲存貯體政策與存取點原則) 或 IAM 政策來獲取存取控制而非 ACL。政策是一種簡化且更具彈性的存取控制選項。使用儲存貯體政策和存取點政策，您可以定義若干規則，廣泛應用於 Amazon S3 資源的所有請求。

## 複寫與物件所有權
<a name="object-ownership-replication"></a>

當您使用 S3 複寫，且來源和目的地儲存貯體由不同的 擁有時 AWS 帳戶，您可以停用 ACLs （使用儲存貯體擁有者強制執行的物件擁有權設定），將複本擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。此設定會模擬現有的擁有者覆寫行為，而無需 `s3:ObjectOwnerOverrideToBucketOwner` 許可。使用「儲存貯體擁有者強制執行」設定複寫至目的地儲存貯體的所有物件都由目的地儲存貯體擁有者所擁有。如需複寫組態之擁有者覆寫選項的詳細資訊，請參閱 [變更複本擁有者](replication-change-owner.md)。

## 設定「物件擁有權」
<a name="object-ownership-setting"></a>

您可以使用 Amazon S3 主控台、 AWS CLI、 AWS SDKs、Amazon S3 REST API 或 套用物件擁有權設定 AWS CloudFormation。下列 REST API 和 AWS CLI 命令支援物件擁有權：


| REST API | AWS CLI | Description | 
| --- | --- | --- | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html) | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html)  | 建立或修改現有 S3 儲存貯體的「物件擁有權」設定。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)  | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html) | 使用 x-amz-object-ownership 請求標頭建立儲存貯體，以指定「物件所有權」設定。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)  | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html) | 抓取 Amazon S3 儲存貯體的「物件擁有權」設定。 | 
| [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketOwnershipControls.html) | [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-ownership-controls.html) | 刪除 Amazon S3 儲存貯體的「物件擁有權」設定。 | 

如需有關套用和使用「物件擁有權」設定的更多資訊，請參閱以下主題。

**Topics**
+ [

## 「物件擁有權」設定
](#object-ownership-overview)
+ [

## 透過停用 ACL 引入的變更
](#object-ownership-changes)
+ [

## 停用 ACL 的先決條件
](#object-ownership-considerations)
+ [

## 「物件擁有權」許可
](#object-ownership-permissions)
+ [

## 停用所有新儲存貯體的 ACL
](#requiring-bucket-owner-enforced)
+ [

## 複寫與物件所有權
](#object-ownership-replication)
+ [

## 設定「物件擁有權」
](#object-ownership-setting)
+ [

# 停用 ACL 的先決條件
](object-ownership-migrating-acls-prerequisites.md)
+ [

# 在建立儲存貯體時設定「物件擁有權」
](object-ownership-new-bucket.md)
+ [

# 設定現有儲存貯體的「物件擁有權」
](object-ownership-existing-bucket.md)
+ [

# 檢視 S3 儲存貯體的「物件擁有權」設定
](object-ownership-retrieving.md)
+ [

# 停用所有新儲存貯體的 ACL 並強制執行「物件擁有權」
](ensure-object-ownership.md)
+ [

# 疑難排解
](object-ownership-error-responses.md)

# 停用 ACL 的先決條件
<a name="object-ownership-migrating-acls-prerequisites"></a>

Amazon S3 中的儲存貯體存取控制清單 (ACL) 是一種機制，可讓您定義 S3 儲存貯體中個別物件的精細許可，指定哪些 AWS 帳戶或群組可以存取和修改這些物件。Amazon S3 中的大多數新式使用案例不再需要使用 ACL。我們建議您使用 AWS Identity and Access Management (IAM) 和儲存貯體政策來管理存取權，並保持停用 ACLs，除非在需要個別控制每個物件的存取權的情況下。

如果您的儲存貯體已啟用 ACL，則在停用 ACL 之前，請完成下列先決條件：

**Topics**
+ [

## 檢閱儲存貯體和物件 ACL，並遷移 ACL 許可
](#object-ownership-acl-permissions)
+ [

## 識別需要 ACL 進行授權的所有請求
](#object-ownership-acl-identify)
+ [

## 檢閱和更新使用 ACL 相關條件索引鍵的儲存貯體政策
](#object-ownership-bucket-policies)
+ [

## 範例使用案例
](#object-ownership-migrating-acls)

## 檢閱儲存貯體和物件 ACL，並遷移 ACL 許可
<a name="object-ownership-acl-permissions"></a>

當您停用 ACL 時，儲存貯體和物件 ACL 所授予的許可不會再影響存取。停用 ACL 之前，請先檢閱儲存貯體和物件 ACL。

每個現有的儲存貯體和物件 ACL 在 IAM 政策中都有對應項。下列儲存貯體政策範例說明儲存貯體和物件 ACL 的 `READ` 和 `WRITE` 許可如何映射至 IAM 許可。如需每個 ACL 如何轉譯成 IAM 許可的詳細資訊，請參閱 [ACL 許可與存取政策許可的對應](acl-overview.md#acl-access-policy-permission-mapping)。

停用 ACL 之前：
+ 如果您的儲存貯體 ACL 授予 AWS 帳戶外部的存取權，您必須先將儲存貯體 ACL 許可遷移至儲存貯體政策。
+ 接著，將儲存貯體 ACL 重設為預設的私有 ACL。
+ 也建議您檢閱物件層級的 ACL 許可，並將其移轉至儲存貯體政策。

如果儲存貯體 ACL 將讀取或寫入權限授予帳戶外的其他人，則在停用 ACL 之前，必須先將這些權限移轉至儲存貯體政策。移轉這些權限後，您可以將**物件擁有權**設定為*儲存貯體擁有者強制執行*設定。如果您未遷移授予帳戶外讀取或寫入存取權的儲存貯體 ACL，則套用「儲存貯體擁有者強制執行」設定的請求會失敗，並傳回 [InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) 錯誤代碼。

如果您的儲存貯體 ACL 授予 外部的存取權 AWS 帳戶，則在停用 ACLs 之前，您必須將儲存貯體 ACL 許可遷移至儲存貯體政策，並將儲存貯體 ACL 重設為預設私有 ACL。如果您未移轉和重設，則套用「儲存貯體擁有者強制執行」設定來停用 ACL 的請求會失敗，並傳回 [InvalidBucketAclWithObjectOwnership](object-ownership-error-responses.md#object-ownership-error-responses-invalid-acl) 錯誤代碼。也建議您檢閱物件 ACL 許可，並將其遷移至儲存貯體政策。

若要檢閱 ACL 許可並將 ACL 許可遷移至儲存貯體政策，請參閱下列主題。

**Topics**
+ [

### 儲存貯體政策範例
](#migrate-acl-permissions-bucket-policies)
+ [

### 使用 S3 主控台來檢閱及遷移 ACL 許可
](#review-migrate-acl-console)
+ [

### 使用 AWS CLI 來檢閱和遷移 ACL 許可
](#review-migrate-acl-cli)

### 儲存貯體政策範例
<a name="migrate-acl-permissions-bucket-policies"></a>

這些範例儲存貯體政策說明如何將 `READ` 和 `WRITE` 儲存貯體及第三方 AWS 帳戶 的物件 ACL 許可遷移至儲存貯體政策。`READ_ACP` 和 `WRITE_ACP` ACL 與政策較不相關，因為其會授予與 ACL 相關的許可 (`s3:GetBucketAcl`、`s3:GetObjectAcl`、`s3:PutBucketAcl` 和 `s3:PutObjectAcl`)。

**Example — 儲存貯體的 `READ` ACL**  
如果您的儲存貯體具有授予 AWS 帳戶 `111122223333`許可的 `READ` ACL 來列出儲存貯體的內容，您可以撰寫儲存貯體政策來授予儲存貯體的 `s3:ListBucket`、`s3:ListBucketVersions`、 `s3:ListBucketMultipartUploads`許可。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to list the objects in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [

						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:ListBucket",
					"s3:ListBucketVersions",
					"s3:ListBucketMultipartUploads"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
			}
		]
	}
```

**Example – `READ` 儲存貯體中每個物件的 ACL**  
如果儲存貯體中的每個物件都有授予 存取權的 `READ` ACL AWS 帳戶 `111122223333`，您可以撰寫儲存貯體政策，為儲存貯體中的每個物件授予此帳戶的 `s3:GetObject`和 `s3:GetObjectVersion`許可。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Read permission for every object in a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:GetObject",
					"s3:GetObjectVersion"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```
此範例資源元素會授予特定物件的存取權。  

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
```

**Example –`WRITE` ACL，授予將物件寫入儲存貯體的許可**  
如果您的儲存貯體具有授予 AWS 帳戶 寫入物件至儲存貯體`111122223333`許可的 `WRITE` ACL，您可以寫入授予儲存貯體`s3:PutObject`許可的儲存貯體政策。    
****  

```
{
		"Version":"2012-10-17",		 	 	 
		"Statement": [
			{
				"Sid": "Permission to write objects to a bucket",
				"Effect": "Allow",
				"Principal": {
					"AWS": [
						"arn:aws:iam::111122223333:root"
					]
				},
				"Action": [
					"s3:PutObject"
				],
				"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
			}
		]
	}
```

### 使用 S3 主控台來檢閱及遷移 ACL 許可
<a name="review-migrate-acl-console"></a>

**檢閱儲存貯體的 ACL 許可**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Access control list** (存取控制清單 (ACL)) 下，請檢閱您的儲存貯體 ACL 許可。

**檢閱物件的 ACL 許可**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇包含您物件的儲存貯體名稱。

1. 在 **Object** (物件) 清單中，選擇您的物件名稱。

1. 選擇**許可**索引標籤。

1. 在 **Access control list** (存取控制清單 (ACL)) 下，請檢閱您的物件 ACL 許可。

**遷移 ACL 許可並更新您的儲存貯體 ACL**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您的儲存貯體名稱。

1. 在 **Permissions** (許可) 索引標籤上，**Bucket policy** (儲存貯體政策) 下，選擇 **Edit** (編輯)。

1. 在 **Policy** (政策) 方塊中，新增或更新儲存貯體政策。

   如需儲存貯體政策，請參閱 [儲存貯體政策範例](#migrate-acl-permissions-bucket-policies) 和 [範例使用案例](#object-ownership-migrating-acls)。

1. 選擇**儲存變更**。

1. [更新您的儲存貯體 ACL](managing-acls.md) 以移除對其他群組或 AWS 帳戶的 ACL 授予。

1. 針對物件擁有權[套用**儲存貯體擁有者強制執行**設定](object-ownership-existing-bucket.md)。

### 使用 AWS CLI 來檢閱和遷移 ACL 許可
<a name="review-migrate-acl-cli"></a>

1. 若要傳回儲存貯體的儲存貯體 ACL，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-acl.html) AWS CLI 命令：

   ```
   aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket
   ```

   例如，此儲存貯體 ACL 會向第三方帳戶授予 `WRITE` 和 `READ` 存取權。在此 ACL 中，第三方帳戶是由[正式使用者 ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) 識別。若要套用「儲存貯體擁有者強制執行」設定並停用 ACL，您必須將第三方帳戶的這些許可遷移至儲存貯體政策。

   ```
   {
   		"Owner": {
   			"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
   		},
   		"Grants": [
   			{
   				"Grantee": {
   					"ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "FULL_CONTROL"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "READ"
   			},
   			{
   				"Grantee": {
   					"ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID",
   					"Type": "CanonicalUser"
   				},
   				"Permission": "WRITE"
   			}
   		]
   	}
   ```

   如需其他範例 ACL，請參閱 [範例使用案例](#object-ownership-migrating-acls)。

1. 將您的儲存貯體 ACL 許可遷移至儲存貯體政策：

   此範例儲存貯體政策會為第三方帳戶授予 `s3:PutObject` 和 `s3:ListBucket` 許可。在儲存貯體政策中，第三方帳戶由 AWS 帳戶 ID () 識別`111122223333`。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   	policy.json:
   	{
   		"Version": "2012-10-17",		 	 	 
   		"Statement": [
   			{
   				"Sid": "PolicyForCrossAccountAllowUpload",
   				"Effect": "Allow",
   				"Principal": {
   					"AWS": [
   						"arn:aws:iam::111122223333:root"
   					]
   				},
   				"Action": [
   					"s3:PutObject",
   					"s3:ListBucket"
   				],
   				"Resource": [
   					"arn:aws:s3:::amzn-s3-demo-bucket",
   					"arn:aws:s3:::amzn-s3-demo-bucket/*"
   			}
   		]
   	}
   ```

   如需更多儲存貯體政策範例，請參閱 [儲存貯體政策範例](#migrate-acl-permissions-bucket-policies) 和 [範例使用案例](#object-ownership-migrating-acls)。

1. 若要傳回特定物件的 ACL，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-object-acl.html) AWS CLI 命令。

   ```
   aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
   ```

1. 如有必要，請將物件 ACL 許可遷移至儲存貯體政策。

   此範例資源元素會授予儲存貯體政策中特定物件的存取權。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
   ```

1. 將儲存貯體的 ACL 重設為預設 ACL。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. 針對物件擁有權[套用「儲存貯體擁有者強制執行」設定](object-ownership-existing-bucket.md)。

## 識別需要 ACL 進行授權的所有請求
<a name="object-ownership-acl-identify"></a>

若要識別需要 ACL 進行授權的 Amazon S3 請求，您可以使用 Amazon S3 伺服器存取日誌或 AWS CloudTrail中的 `aclRequired` 值。如果請求需要 ACL 進行授權，或者您有指定 ACL 的 `PUT` 請求，則字串為 `Yes`。如果不需要 ACL，或者您要設定 `bucket-owner-full-control` 固定 ACL，或者儲存貯體政策允許這些請求，則 Amazon S3 伺服器存取日誌中的 `aclRequired` 值字串為 "`-`"，且在 CloudTrail 中不存在。如需預期的 `aclRequired` 值詳細資訊，請參閱 [常見 Amazon S3 請求的 `aclRequired` 值](acl-overview.md#aclrequired-s3)。

如果您有 `PutBucketAcl` 或 `PutObjectAcl` 請求具有授予 ACL 型許可的標頭，但 `bucket-owner-full-control` 固定 ACL 除外，則您必須先移除這些標頭，才能停用 ACL。否則，請求將會失敗。

對於需要 ACL 進行授權的所有其他請求，請將這些 ACL 許可移轉至儲存貯體政策。然後，在啟用儲存貯體擁有者強制執行設定之前，移除任何儲存貯體 ACL。

**注意**  
請勿移除物件 ACL。否則，依賴物件 ACL 取得許可的應用程式將失去存取權。

如果您發現沒有請求要求 ACL 進行授權，您可以繼續停用 ACL。如需識別請求的詳細資訊，請參閱 [使用 Amazon S3 伺服器存取日誌來識別請求](using-s3-access-logs-to-identify-requests.md) 和 [使用 CloudTrail 來識別 Amazon S3 請求](cloudtrail-request-identification.md)。

## 檢閱和更新使用 ACL 相關條件索引鍵的儲存貯體政策
<a name="object-ownership-bucket-policies"></a>

套用「儲存貯體擁有者強制執行」設定以停用 ACL 之後，只有在請求使用儲存貯體擁有者完全控制 ACL 或未指定 ACL 時，才能將新物件上傳至儲存貯體。在停用 ACL 之前，請檢閱儲存貯體政策以取得與 ACL 相關的條件索引鍵。

如果您的儲存貯體政策使用與 ACL 相關的條件索引鍵來請求 `bucket-owner-full-control` 標準 ACL (例如 `s3:x-amz-acl`)，則您不需要更新儲存貯體政策。下列儲存貯體政策會使用 `s3:x-amz-acl` 以要求適用於 S3 `PutObject` 請求的 `bucket-owner-full-control` 標準 ACL。本政策*仍然*需要物件寫入者指定 `bucket-owner-full-control` 標準 ACL。不過，停用 ACL 的儲存貯體仍會接受此 ACL，因此請求會繼續成功，不需要用戶端進行變更。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"
                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

不過，如果儲存貯體政策使用需要不同 ACL 的 ACL 相關條件索引鍵，則必須移除此條件索引鍵。此範例儲存貯體政策存需要適用於 S3 `PutObject` 請求的 `public-read` ACL，因此必須先更新才能停用 ACL。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Only allow writes to my bucket with public read access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/ExampleUser"                ]
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "public-read"
                }
            }
        }
    ]
}
```

------

## 範例使用案例
<a name="object-ownership-migrating-acls"></a>

下列範例說明如何針對特定使用案例，將 ACL 許可遷移至儲存貯體政策。

**Topics**
+ [

### 授予 S3 日誌交付群組的存取權以進行伺服器存取日誌記錄
](#object-ownership-server-access-logs)
+ [

### 對儲存貯體中的物件授予公用讀取存取權。
](#object-ownership-public-read)
+ [

### 授權 Amazon ElastiCache (Redis OSS) 存取您的 S3 儲存貯體
](#object-ownership-elasticache-redis)

### 授予 S3 日誌交付群組的存取權以進行伺服器存取日誌記錄
<a name="object-ownership-server-access-logs"></a>

如果想要套用「儲存貯體擁有者強制執行」設定以針對伺服器存取記錄目的地儲存貯體 (也稱為*目標儲存貯體*) 停用 ACL，則您必須將 S3 日誌交付群組的儲存貯體 ACL 許可遷移至儲存貯體政策中的記錄服務主體 (`logging.s3.amazonaws.com`)。如需有關日誌交付許可的詳細資訊，請參閱 [日誌交付許可](enable-server-access-logging.md#grant-log-delivery-permissions-general)。

此儲存貯體 ACL 授予 S3 日誌交付群組的 `WRITE` 和 `READ_ACP` 存取權：

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    }, 
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser", 
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
            }, 
            "Permission": "FULL_CONTROL"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "WRITE"
        }, 
        {
            "Grantee": {
                "Type": "Group", 
                "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery"
            }, 
            "Permission": "READ_ACP"
        }
    ]
}
```

**將 S3 日誌交付群組的儲存貯體 ACL 許可遷移至儲存貯體政策中的日誌記錄服務主體**

1. 將以下儲存貯體政策新增至您的目的地儲存貯體，取代範例值。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:						{
       {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3ServerAccessLogsPolicy",
               "Effect": "Allow",
               "Principal": {
                   "Service": "logging.s3.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-LOGGING-PREFIX*",
               "Condition": {
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME"
                   },
                   "StringEquals": {
                       "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID"
                   }
               }
           }
       ]
   }
   ```

1. 將目的地儲存貯體的 ACL 重設為預設 ACL。

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. 針對物件擁有權[套用「儲存貯體擁有者強制執行」設定](object-ownership-existing-bucket.md)至您的目的地儲存貯體。

### 對儲存貯體中的物件授予公用讀取存取權。
<a name="object-ownership-public-read"></a>

如果您的物件 ACL 授予儲存貯體中所有物件的公用讀取存取權，則您可以將這些 ACL 許可遷移至儲存貯體政策。

此物件 ACL 會授予儲存貯體中物件的公用讀取存取權：

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}
```

**將公用讀取 ACL 許可遷移至儲存貯體政策**

1. 若要授予儲存貯體中所有物件的公用讀取存取權，請新增下列儲存貯體政策，取代範例值。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PublicReadGetObject",
               "Effect": "Allow",
               "Principal": "*",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

   若要授予儲存貯體政策中特定物件的公用存取權，請使用 `Resource` 元素的下列格式。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
   ```

   若要授予具有特定字首之所有物件的公用存取權，請使用 `Resource` 元素的下列格式。

   ```
   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
   ```

1. 針對物件擁有權[套用「儲存貯體擁有者強制執行」設定](object-ownership-existing-bucket.md)。

### 授權 Amazon ElastiCache (Redis OSS) 存取您的 S3 儲存貯體
<a name="object-ownership-elasticache-redis"></a>

您可以[將 ElastiCache (Redis OSS) 備份匯出](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)至 S3 儲存貯體，以便從 ElastiCache 外部存取備份。若要將備份匯出至 S3 儲存貯體，您必須授權 ElastiCache 將快照複製到儲存貯體。如果已將許可授予儲存貯體 ACL 中的 ElastiCache，則您必須先將這些許可遷移至儲存貯體政策，然後再套用「儲存貯體擁有者強制執行」設定來停用 ACL。如需詳細資訊，請參閱《Amazon ElastiCache 使用者指南**》中的[為您的 Amazon S3 儲存貯體授予 ElastiCache 存取權](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)。

下列範例顯示將許可授予 ElastiCache 的儲存貯體 ACL 許可。

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "WRITE"
        },
        {
            "Grantee": {
                "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353",
                "Type": "CanonicalUser"
            },
            "Permission": "READ_ACP"
        }
    ]
}
```

**將 ElastiCache (Redis OSS) 的儲存貯體 ACL 許可遷移至儲存貯體政策**

1. 將以下儲存貯體政策新增至您的儲存貯體，替換範例值。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   
   policy.json:
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt15399483",
               "Effect": "Allow",
               "Principal": {
                   "Service": "Region.elasticache-snapshot.amazonaws.com"
               },
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketAcl",
                   "s3:ListMultipartUploadParts",
                   "s3:ListBucketMultipartUploads"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           }
       ]
   }
   ```

1. 將儲存貯體的 ACL 重設為預設 ACL：

   ```
   aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
   ```

1. 針對物件擁有權[套用「儲存貯體擁有者強制執行」設定](object-ownership-existing-bucket.md)。

# 在建立儲存貯體時設定「物件擁有權」
<a name="object-ownership-new-bucket"></a>

建立儲存貯體時，您可以設定 S3 物件所有權。若要設定現有儲存貯體的「物件擁有權」，請參閱 [設定現有儲存貯體的「物件擁有權」](object-ownership-existing-bucket.md)。

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，可讓您停用[存取控制清單](acl-overview.md) (ACL) 並取得儲存貯體中每個物件的擁有權，簡化存放在 Amazon S3 中資料的存取管理。根據預設，新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定，而且會停用 ACL。停用 ACL 後，儲存貯體擁有者會擁有儲存貯體中的每個物件，並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態，除非在異常情況下必須個別控制每個物件的存取。

「物件擁有權」有三項設定，可讓您用來控制對上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL：

**已停用 ACL**
+ **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

**已啟用 ACL**
+ **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。
+ **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

**許可**：若要套用 **Bucket owner enforced** (儲存貯體擁有者強制執行) 設定或 **Bucket owner preferred** (儲存貯體擁有者偏好) 設定，您必須擁有以下許可：`s3:CreateBucket` 和 `s3:PutBucketOwnershipControls`。在套用 **Object writer** (物件寫入器) 設定的情況下建立儲存貯體時，不需要其他許可。如需 Amazon S3 許可的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

**重要**  
Amazon S3 中的大多數現代使用案例不再需要使用 ACL，建議您停用 ACL，除非在需要個別控制每個物件存取權的情況下。使用「物件擁有權」，您可以停用 ACL，並依賴政策來進行存取控制。當您停用 ACLs 時，您可以輕鬆維護儲存貯體，其中包含不同 AWS 帳戶上傳的物件。身為儲存貯體擁有者，您擁有儲存貯體中的所有物件，並且可以使用政策管理對物件的存取。

## 使用 S3 主控台
<a name="object-ownership-new-bucket-console"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在頁面頂端的導覽列中，選擇目前顯示的名稱 AWS 區域。​接下來，選擇您要在其中建立儲存貯體的區域。
**注意**  
建立儲存貯體後，您無法變更其區域。
請選擇接近您的區域，以充分降低延遲及成本，並因應法規要求。除非您明確地將儲存在區域中的物件傳輸到其他區域，否則物件絕對不會離開該區域。如需 Amazon S3 AWS 區域的清單，請參閱 中的[AWS 服務 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)*Amazon Web Services 一般參考*。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 選擇 **Create bucket** (建立儲存貯體)。**Create bucket (建立儲存貯體)** 頁面隨即開啟。

1. 針對 **Bucket name (儲存貯體名稱)**，輸入儲存貯體的名稱。

   儲存貯體名稱必須；
   + 在分割區內不重複。分割區是 Regions 的群組。 AWS 目前有三個分割區： `aws`（商業區域）、 `aws-cn`（中國區域） 和 `aws-us-gov`()AWS GovCloud (US) Regions。
   + 長度必須介於 3 與 63 個字元之間。
   + 只能由小寫字母、數字、句號 (`.`) 和連字號 (`-`) 組成。為了獲得最佳相容性，建議您避免在儲存貯體名稱中使用句號 (`.`)，但僅用於靜態網站託管的儲存貯體除外。
   + 開頭和結尾為字母或數字。
   + 如需儲存貯體命名規則的完整清單，請參閱 [一般用途儲存貯體命名規則](bucketnamingrules.md)。
**重要**  
建立儲存貯體後，便無法變更其名稱。
請勿在儲存貯體名稱中包含敏感資訊。在指向儲存貯體中之物件的 URL 中，會顯示儲存貯體名稱。

1. (選用) 在**一般組態**下，您可以選擇將現有儲存貯體的設定，複製到新的儲存貯體。如果您不想複製現有儲存貯體的設定，請跳至下一個步驟。
**注意**  
這個選項：  
無法在 中使用 AWS CLI ，且只能在 Amazon S3 主控台中使用
不會將現有儲存貯體中的儲存貯體政策複製到新儲存貯體

    若要複製現有儲存貯體的設定，請在**複製現有儲存貯體中的設定**下，選取**選擇儲存貯體**。**選擇儲存貯體**視窗隨即開啟。尋找您要複製其設定的儲存貯體，然後選取**選擇儲存貯體**。**選擇儲存貯體**視窗隨即關閉，並重新開啟**建立儲存貯體**視窗。

   在**複製現有儲存貯體中的設定**下，現在您會看到所選儲存貯體的名稱。新儲存貯體的設定目前符合您選取的儲存貯體設定。如果您想要移除複製的設定，請選擇**還原預設值**。在**建立儲存貯體**頁面上，檢閱其餘儲存貯體設定。如果您不要做任何變更，可以跳到最後一個步驟。

1. 在 **Object Ownership** (物件擁有權) 下，若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權，請選擇下列其中一個設定：

**已停用 ACL**
   +  **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制一般用途儲存貯體中的每個物件。ACL 不再影響 S3 一般用途儲存貯體中資料的存取許可。儲存貯體單獨使用政策來定義存取控制。

     根據預設，會停用 ACL。Amazon S3 中的大多數新式使用案例不再需要使用 ACL。建議您將 ACL 保時停用狀態，除非在必須個別控制每個物件存取的情況下。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

**已啟用 ACL**
   + **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。

     如果您套用**儲存貯體擁有者偏好**設定，以要求所有 Amazon S3 上傳都包含 `bucket-owner-full-control` 固定 ACL 時，您可以[新增儲存貯體政策](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，只允許使用此 ACL 的物件上傳。
   + **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。
**注意**  
預設設定為**儲存貯體擁有者強制執行**。若要套用預設設定並將 ACL 保持停用狀態，只需要 `s3:CreateBucket` 許可。若要啟用 ACL，您必須具有 `s3:PutBucketOwnershipControls` 許可。

1. 在**封鎖此儲存貯體的公開存取設定**之下，選擇要套用至儲存貯體的封鎖公開存取設定。

   根據預設，會啟用全部四個「封鎖公開存取」設定。建議您將所有設定保持啟用狀態，除非您知道需要針對特定使用案例關閉其中一或多個設定。如需封鎖公開存取的詳細資訊，請參閱 [封鎖對 Amazon S3 儲存體的公開存取權](access-control-block-public-access.md)。
**注意**  
若要啟用所有「封鎖公用存取」設定，只需要 `s3:CreateBucket` 許可。若要關閉任何「封鎖公開存取」設定，您必須具有 `s3:PutBucketPublicAccessBlock` 許可。

1. (選用) 根據預設，會停用**儲存貯體版本控制**。版本控制是在相同儲存貯體中保留多個物件版本的方式。您可以使用版本控制功能來保留、擷取和恢復在 儲存貯體中所存放每個物件的各個版本。透過版本控制，您可以更輕鬆地復原失誤的使用者動作和故障的應用程式。如需版本控制的詳細資訊，請參閱「[使用 S3 版本控制保留多個版本的物件](Versioning.md)」。

   若要在儲存貯體上啟用版本控制，請選擇**啟用**。

1. (選用) 在 **Tags** (標籤) 下，您可以選擇新增標籤至儲存貯體。透過 AWS 成本配置，您可以使用儲存貯體標籤來標註儲存貯體用量的帳單。標籤為一組金鑰/值對，代表指派給儲存貯體的標籤。如需詳細資訊，請參閱[使用成本分配 S3 儲存貯體標籤](CostAllocTagging.md)。

   若要新增儲存貯體標籤，請輸入 **Key** (金鑰) 並選擇性地輸入 **Value** (值)，然後選擇 **Add tag** (新增標籤)。

1. 若要設定**預設加密**，請在**加密類型**下，選擇下列其中一項：
   + **使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**
   + **伺服器端加密與 AWS Key Management Service 金鑰 (SSE-KMS)**
   + **使用 AWS Key Management Service (AWS KMS) 金鑰的雙層伺服器端加密 (DSSE-KMS)**
**重要**  
如果您針對預設加密組態使用 SSE-KMS 或 DSSE-KMS 選項，則受到 AWS KMS的每秒請求數目 (RPS) 配額限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

   儲存貯體和新物件會以 Amazon S3 受管金鑰 (SSE-S3) 做為基本加密組態層級，使用伺服器端加密來進行加密。如需預設加密的詳細資訊，請參閱[對 Amazon S3 儲存貯體設定預設伺服器端加密行為](bucket-encryption.md)。如需 SSE-S3 的詳細資訊，請參閱 [使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密](UsingServerSideEncryption.md)。

   如需有關使用伺服器端加密來加密資料的詳細資訊，請參閱 [使用加密來保護資料](UsingEncryption.md)。

1. 如果您選擇**使用 AWS Key Management Service 金鑰進行伺服器端加密 (SSE-KMS)** 或使用 ** AWS Key Management Service (AWS KMS) 金鑰進行雙層伺服器端加密 (DSSE-KMS)**，請執行下列動作：

   1. 在 **AWS KMS 金鑰**下，使用下列其中一種方式指定 KMS 金鑰：
      + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從中選擇 AWS KMS keys**，然後從可用的金鑰清單中選擇您的 **KMS** 金鑰。

         AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在此清單中。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
      + 若要輸入 KMS 金鑰 ARN，請選擇**輸入 AWS KMS key ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
      + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

        如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您只能使用 AWS 區域 與儲存貯體相同的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰，必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰，您必須先具有該金鑰的使用權限，然後輸入 KMS 金鑰 ARN。如需有關 KMS 金鑰跨帳戶權限的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。如需 SSE-KMS 的詳細資訊，請參閱「[使用 AWS KMS (SSE-KMS) 指定伺服器端加密](specifying-kms-encryption.md)」。如需 DSSE-KMS 的詳細資訊，請參閱 [使用雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS)](UsingDSSEncryption.md)。  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   1. 當您將儲存貯體設定為使用 SSE-KMS 的預設加密時，您還可以使用 S3 儲存貯體金鑰。S3 儲存貯體金鑰透過減少來自 Amazon S3 的請求流量來降低加密成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。DSSE-KMS 不支援 S3 儲存貯體金鑰。

      根據預設，會在 Amazon S3 主控台啟用 S3 儲存貯體金鑰。建議您將 S3 儲存貯體金鑰維持啟用狀態，以降低成本。若要停用儲存貯體的 S3 儲存貯體金鑰，請在**儲存貯體金鑰**下選擇**停用**。

1. (選用) S3 物件鎖定有助於保護新物件免遭刪除或覆寫。如需詳細資訊，請參閱[使用物件鎖定來鎖定物件](object-lock.md)。如果您想要啟用 S3 物件鎖定，請執行下列動作：

   1. 選擇 **Advanced settings (進階設定)**。
**重要**  
啟用物件鎖定會自動啟用儲存貯體的版本控制。啟用並成功建立儲存貯體之後，您還必須在儲存貯體的**屬性**索引標籤上設定物件鎖定預設保留，以及法務保存設定。

   1. 如果想要啟用物件鎖定，請選擇 **Enable** (啟用)、讀取出現的警告並確認。
**注意**  
若要建立已啟用物件鎖定的儲存貯體，您必須具備下列權限：`s3:CreateBucket`、`s3:PutBucketVersioning` 和 `s3:PutBucketObjectLockConfiguration`。

1. 選擇**建立儲存貯體**。

## 使用 AWS CLI
<a name="object-ownership-new-bucket-cli"></a>

若要在建立新儲存貯體時設定物件擁有權，請使用 `create-bucket` AWS CLI 命令搭配 `--object-ownership` 參數。

此範例會使用 AWS CLI為新的儲存貯體套用「儲存貯體擁有者強制執行」設定：

```
aws s3api create-bucket --bucket  amzn-s3-demo-bucket --region us-east-1 --object-ownership BucketOwnerEnforced
```

**重要**  
如果您在使用 建立儲存貯體時未設定物件擁有權 AWS CLI，則預設設定將為 `ObjectWriter`（啟用 ACLs)。

## 使用適用於 Java 的 AWS 開發套件
<a name="object-ownership-new-bucket-sdk-java"></a>

此範例會使用 適用於 Java 的 AWS SDK為新的儲存貯體設定「儲存貯體擁有者強制執行」設定：

```
    // Build the ObjectOwnership for CreateBucket
    CreateBucketRequest createBucketRequest = CreateBucketRequest.builder()
            .bucket(bucketName)
            .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
            .build()

     // Send the request to Amazon S3 
     s3client.createBucket(createBucketRequest);
```

## 使用 CloudFormation
<a name="object-ownership-new-bucket-cfn"></a>

若要在建立新儲存貯體時使用 `AWS::S3::Bucket` CloudFormation 資源來設定物件擁有權，請參閱*AWS CloudFormation 《 使用者指南》*[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-ownershipcontrols](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-ownershipcontrols)中的 。

## 使用 REST API
<a name="object-ownership-new-bucket-rest-api"></a>

若要套用 S3 物件擁有權的「儲存貯體擁有者強制執行」設定，請使用 `CreateBucket` API 操作 (`x-amz-object-ownership` 請求標頭設定為 `BucketOwnerEnforced`)。如需資訊和範例，請參閱《Amazon Simple Storage Service API 參考》**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)。

**後續步驟**：套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後，您可以進一步採取下列步驟：
+ [儲存貯體擁有者強制執行](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) – 需要使用 IAM 或 Organizations 政策，在停用 ACL 的情況下建立所有新儲存貯體。
+ [儲存貯體擁有者偏好](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) – 新增 S3 儲存貯體政策，以要求所有物件上傳到您儲存貯體的 `bucket-owner-full-control` 標準 ACL。

# 設定現有儲存貯體的「物件擁有權」
<a name="object-ownership-existing-bucket"></a>

您可以在現有 S3 儲存貯體上設定 S3 物件擁有權。若要在建立儲存貯體時套用「物件擁有權」，請參閱 [在建立儲存貯體時設定「物件擁有權」](object-ownership-new-bucket.md)。

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，可讓您停用[存取控制清單](acl-overview.md) (ACL) 並取得儲存貯體中每個物件的擁有權，簡化存放在 Amazon S3 中資料的存取管理。根據預設，新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定，而且會停用 ACL。停用 ACL 後，儲存貯體擁有者會擁有儲存貯體中的每個物件，並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態，除非在異常情況下必須個別控制每個物件的存取。

「物件擁有權」有三項設定，可讓您用來控制對上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL：

**已停用 ACL**
+ **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

**已啟用 ACL**
+ **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。
+ **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

**先決條件**：在套用「儲存貯體擁有者強制執行」設定以停用 ACL 之前，您必須將儲存貯體 ACL 許可遷移至儲存貯體政策，並將儲存貯體 ACL 重設為預設的私有 ACL。也建議您將物件 ACL 許可遷移至儲存貯體政策，並編輯需要 ACL (儲存貯體擁有者完全控制 ACL 除外) 的儲存貯體政策。如需詳細資訊，請參閱[停用 ACL 的先決條件](object-ownership-migrating-acls-prerequisites.md)。

**許可**：若要使用這項操作，您必須擁有 `s3:PutBucketOwnershipControls` 許可。如需 Amazon S3 許可的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

## 使用 S3 主控台
<a name="add-object-ownership"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您要將 S3 「物件擁有權」設定套用至其中的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Object Ownership** (物件擁有權) 下，選擇 **Edit** (編輯)。

1. 在 **Object Ownership** (物件擁有權) 下，若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權，請選擇下列其中一個設定：

**已停用 ACL**
   + **Bucket owner enforced** (儲存貯體擁有者強制執行) – 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

     若要要求使用 IAM 或 AWS Organizations 政策在停用 ACLs 的情況下建立所有新儲存貯體，請參閱 [停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced)。

**已啟用 ACL**
   + **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。

     如果您套用儲存貯體擁有者偏好設定，則要求所有 Amazon S3 上傳都包含 `bucket-owner-full-control` 罐裝 ACL 時，您可以[新增儲存貯體政策](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，只允許使用此 ACL 的物件上傳。
   + **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

1. 選擇**儲存**。

## 使用 AWS CLI
<a name="object-ownership-existing-bucket-cli"></a>

若要針對現有儲存貯體套用「物件擁有權」設定，請使用具有 `--ownership-controls` 參數的 `put-bucket-ownership-controls` 命令。擁有權的有效值為 `BucketOwnerEnforced`、`BucketOwnerPreferred` 或 `ObjectWriter`。

此範例會使用 AWS CLI為現有儲存貯體套用「儲存貯體擁有者強制執行」設定：

```
aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
```

如需 `put-bucket-ownership-controls` 的詳細資訊，請參閱《AWS Command Line Interface 使用者指南》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-ownership-controls.html)。

## 使用適用於 Java 的 AWS 開發套件
<a name="object-ownership-existing-bucket-sdk-java"></a>

此範例會使用 適用於 Java 的 AWS SDK為現有儲存貯體套用「物件擁有權」的 `BucketOwnerEnforced` 設定：

```
         // Build the ObjectOwnership for BucketOwnerEnforced
         OwnershipControlsRule rule = OwnershipControlsRule.builder()
                .objectOwnership(ObjectOwnership.BucketOwnerEnforced)
                .build();

         OwnershipControls ownershipControls = OwnershipControls.builder()
                   .rules(rule)
                   .build()

          // Build the PutBucketOwnershipControlsRequest
          PutBucketOwnershipControlsRequest putBucketOwnershipControlsRequest =
                PutBucketOwnershipControlsRequest.builder()
                        .bucket(BUCKET_NAME)
                        .ownershipControls(ownershipControls)
                        .build();
                        
          // Send the request to Amazon S3 
          s3client.putBucketOwnershipControls(putBucketOwnershipControlsRequest);
```

## 使用 CloudFormation
<a name="object-ownership-existing-bucket-cfn"></a>

若要使用 CloudFormation 為現有儲存貯體套用物件擁有權設定，請參閱*AWS CloudFormation 《 使用者指南*[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-ownershipcontrols.html)》中的 。

## 使用 REST API
<a name="object-ownership-existing-bucket-rest-api"></a>

若要使用 REST API 將「物件擁有權」設定套用至現有的 S3 儲存貯體，請使用 `PutBucketOwnershipControls`。如需詳細資訊，請參閱 Amazon Simple Storage Service API 參考**中的 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html)。

**後續步驟**：套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後，您可以進一步採取下列步驟：
+ [儲存貯體擁有者強制執行](ensure-object-ownership.md#object-ownership-requiring-bucket-owner-enforced) – 需要使用 IAM 或 Organizations 政策，在停用 ACL 的情況下建立所有新儲存貯體。
+ [儲存貯體擁有者偏好](ensure-object-ownership.md#ensure-object-ownership-bucket-policy) – 新增 S3 儲存貯體政策，以要求所有物件上傳到您儲存貯體的 `bucket-owner-full-control` 標準 ACL。

# 檢視 S3 儲存貯體的「物件擁有權」設定
<a name="object-ownership-retrieving"></a>

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定，可讓您停用[存取控制清單](acl-overview.md) (ACL) 並取得儲存貯體中每個物件的擁有權，簡化存放在 Amazon S3 中資料的存取管理。根據預設，新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定，而且會停用 ACL。停用 ACL 後，儲存貯體擁有者會擁有儲存貯體中的每個物件，並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態，除非在異常情況下必須個別控制每個物件的存取。

「物件擁有權」有三項設定，可讓您用來控制對上傳至儲存貯體之物件的擁有權，以及停用或啟用 ACL：

**已停用 ACL**
+ **儲存貯體擁有者強制執行 (預設)** - 停用 ACL，儲存貯體擁有者會自動擁有並完全控制儲存貯體中的每個物件。ACL 不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

**已啟用 ACL**
+ **儲存貯體擁有者偏好** – 儲存貯體擁有者擁有並完全控制其他帳戶使用 `bucket-owner-full-control` 標準 ACL 寫入儲存貯體的新物件。
+ **物件寫入器** – 上傳物件 AWS 帳戶 的 擁有物件、擁有物件的完整控制權，並可透過 ACLs。

您可以檢視 Amazon S3 儲存貯體的 S3 物件擁有權設定。若要設定新儲存貯體的「物件擁有權」，請參閱 [在建立儲存貯體時設定「物件擁有權」](object-ownership-new-bucket.md)。若要設定現有儲存貯體的「物件擁有權」，請參閱 [設定現有儲存貯體的「物件擁有權」](object-ownership-existing-bucket.md)。

**許可**：若要使用這項操作，您必須擁有 `s3:GetBucketOwnershipControls` 許可。如需 Amazon S3 許可的詳細資訊，請參閱服務授權參考**中的 [Amazon S3 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

## 使用 S3 主控台
<a name="object-ownership-retrieving-console"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇您要將「物件擁有權」設定套用至其中的儲存貯體名稱。

1. 選擇**許可**索引標籤。

1. 在 **Object Ownership** (物件擁有權) 下，您可以檢視儲存貯體的「物件擁有權」設定。

## 使用 AWS CLI
<a name="object-ownership-retrieving-cli"></a>

若要擷取 S3 儲存貯體的 S3 物件擁有權設定，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-ownership-controls.html) AWS CLI 命令。

```
aws s3api get-bucket-ownership-controls --bucket amzn-s3-demo-bucket
```

## 使用 REST API
<a name="object-ownership-retrieving-rest-api"></a>

若要擷取 S3 儲存貯體的「物件擁有權」設定，請使用 `GetBucketOwnershipControls` API 操作。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html)。

# 停用所有新儲存貯體的 ACL 並強制執行「物件擁有權」
<a name="ensure-object-ownership"></a>

建議您停用 Amazon S3 儲存貯體上的 ACL。您可以套用 S3 物件擁有權的「儲存貯體擁有者強制執行」設定來執行此操作。當您套用此設定時，會停用 ACL，而且您會自動擁有並完全控制儲存貯體中的所有物件。若要要求在停用 ACLs 的情況下建立所有新儲存貯體，請使用 AWS Identity and Access Management (IAM) 政策 AWS Organizations 或服務控制政策 (SCPs)，如下節所述。

若要在不停用 ACL 的情況下強制執行新物件的「物件擁有權」，您可以套用儲存貯體擁有者偏好設定。套用此設定時，強烈建議您更新儲存貯體政策以要求對您儲存貯體的所有 `PUT` 請求使用 `bucket-owner-full-control` 固定 ACL。用戶端也應該更新，以從其他帳戶傳送 `bucket-owner-full-control` 固定 ACL 到您的儲存貯體。

**Topics**
+ [

## 停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)
](#object-ownership-requiring-bucket-owner-enforced)
+ [

## 需要適用於 Amazon S3 `PUT` 操作的 bucket-owner-full-control 固定 ACL (儲存貯體擁有者偏好)
](#ensure-object-ownership-bucket-policy)

## 停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)
<a name="object-ownership-requiring-bucket-owner-enforced"></a>

下列範例 IAM 政策會拒絕特定 IAM 使用者或角色的 `s3:CreateBucket` 許可，除非為物件擁有權套用「儲存貯體擁有者強制執行」設定。`Condition` 區塊中的鍵值對會指定 `s3:x-amz-object-ownership` 作為其鍵，並指定 `BucketOwnerEnforced` 設定作為其值。換句話說，只有在 IAM 使用者為物件擁有權設定「儲存貯體擁有者強制執行」設定並停用 ACL 時，IAM 使用者才能建立儲存貯體。您也可以使用此政策做為 AWS 組織的界限 SCP。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RequireBucketOwnerFullControl",
            "Action": "s3:CreateBucket",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-object-ownership": "BucketOwnerEnforced"
                }
            }
        }
    ]
}
```

------

## 需要適用於 Amazon S3 `PUT` 操作的 bucket-owner-full-control 固定 ACL (儲存貯體擁有者偏好)
<a name="ensure-object-ownership-bucket-policy"></a>

使用「物件擁有權」的儲存貯體擁有者偏好設定，身為儲存貯體擁有者，您可以擁有並完全控制其他帳戶寫入您具有 `bucket-owner-full-control` 固定 ACL 之儲存貯體的物件。但是，如果其他帳戶將物件寫入沒有 `bucket-owner-full-control` 標準 ACL 的儲存貯體時，物件寫入者會維持完整的控制存取權。身為儲存貯體擁有者，您可以實作只有在其指定 `bucket-owner-full-control` 標準 ACL 時才允許寫入的儲存貯體政策。

**注意**  
如果使用「儲存貯體擁有者強制執行」設定停用了 ACL，則您身為儲存貯體擁有者會自動擁有並完全控制儲存貯體中的所有物件。您不需要使用此區段來更新儲存貯體政策，以強制執行儲存貯體擁有者的物件擁有權。

下列儲存貯體政策指定只有在物件的 ACL 設定為 `111122223333` 時，帳戶 *`amzn-s3-demo-bucket`* 才能將物件上傳至 *`bucket-owner-full-control`*。請務必使用您的帳戶取代 *`111122223333`*，以及使用您儲存貯體的名稱取代 *`amzn-s3-demo-bucket`*。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl",
         "Effect": "Allow",
         "Principal": {
            "AWS": [
               "arn:aws:iam::111122223333:user/ExampleUser"
            ]
         },
         "Action": [
            "s3:PutObject"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
         "Condition": {
            "StringEquals": {
               "s3:x-amz-acl": "bucket-owner-full-control"
            }
         }
      }
   ]
}
```

------

以下是範例複製操作，其中包含使用 AWS Command Line Interface (AWS CLI) 的 `bucket-owner-full-control` 固定 ACL。

```
aws s3 cp file.txt s3://amzn-s3-demo-bucket --acl bucket-owner-full-control
```

儲存貯體政策生效後，如果用戶端不包含 `bucket-owner-full-control` 固定 ACL，則操作會失敗，且上傳程式會收到下列錯誤：

呼叫 PutObject 操作時發生錯誤 (AccessDenied)：拒絕存取。

**注意**  
如果用戶端在上傳後需要存取物件，您必須授予上傳帳戶的額外許可。如需有關授予帳戶對資源的存取權的資訊，請參閱 [使用政策來管理 Amazon S3 資源存取的逐步解說](example-walkthroughs-managing-access.md)。

# 疑難排解
<a name="object-ownership-error-responses"></a>

套用 S3 物件擁有權的儲存貯體擁有者強制執行設定時，會停用存取控制清單 (ACL)，並且您身為儲存貯體擁有者會自動擁有儲存貯體中的所有物件。ACL 不再影響儲存貯體中物件的許可。您可以使用政策來授予許可。所有 S3 `PUT` 請求都必須指定 `bucket-owner-full-control` 固定 ACL 或不指定 ACL，否則這些請求將會失敗。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。

如果指定了無效的 ACL，或是儲存貯體 ACL 許可授予 AWS 帳戶以外的存取權，則您可能會見到下列錯誤回應。

## AccessControlListNotSupported
<a name="object-ownership-error-responses-acl-not-supported"></a>

在您套用物件擁有權的「儲存貯體擁有者強制執行」設定之後，ACL 會停用。設定 ACL 或更新 ACL 的請求失敗，並顯示 `400` 錯誤，傳回 AccessControlListNotSupported 錯誤代碼。仍支援讀取 ACL 的請求。讀取 ACL 的請求一律會傳回回應，顯示儲存貯體擁有者的完整控制權。在 `PUT` 操作中，您必須指定儲存貯體擁有者完全控制 ACL 或不指定 ACL。否則，您的 `PUT` 操作將失敗。

下列範例`put-object` AWS CLI 命令包含`public-read`標準 ACL。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object-key-name --body doc-example-body --acl public-read
```

如果儲存貯體使用「儲存貯體擁有者強制執行」設定來停用 ACL，則此操作會失敗，且上傳工具會收到下列錯誤訊息：

呼叫 PutObject 操作時發生錯誤 (AccessControlListNotSupported)：儲存貯體不允許 ACL

## InvalidBucketAclWithObjectOwnership
<a name="object-ownership-error-responses-invalid-acl"></a>

如果您想要套用「儲存貯體擁有者強制執行」設定來停用 ACL，則儲存貯體 ACL 必須將完全控制權僅提供給儲存貯體擁有者。您的儲存貯體 ACL 無法授予外部 AWS 帳戶 或任何其他群組的存取權。例如，如果您的`CreateBucket`請求設定儲存貯體擁有者強制執行，並指定提供外部存取權的儲存貯體 ACL AWS 帳戶，則您的請求會失敗並發生錯誤，`400`並傳回 InvalidBucketAclWithObjectOwnership 錯誤代碼。同樣地，如果您的 `PutBucketOwnershipControls` 請求設定在擁有儲存貯體 ACL (對其他人授予許可) 之儲存貯體上儲存貯體擁有者強制執行，則請求會失敗。

**Example ：現有儲存貯體 ACL 會授予公用讀取存取權**  
例如，如果現有儲存貯體 ACL 授予公用讀取存取權，則在將這些 ACL 許可遷移至儲存貯體政策，並將儲存貯體 ACL 重設為預設的私有 ACL 之前，您無法套用「儲存貯體擁有者強制執行」設定。如需詳細資訊，請參閱[停用 ACL 的先決條件](object-ownership-migrating-acls-prerequisites.md)。  
此範例儲存貯體 ACL 會授予公用讀取存取權：  

```
{
    "Owner": {
        "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID"
    },
    "Grants": [
        {
            "Grantee": {
                "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}
```
下列範例`put-bucket-ownership-controls` AWS CLI 命令會套用物件擁有權的儲存貯體擁有者強制執行設定：  

```
aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls Rules=[{ObjectOwnership=BucketOwnerEnforced}]
```
因為儲存貯體 ACL 會授予公用讀取存取權，所以請求會失敗，並傳回下列錯誤碼：  
呼叫 PutBucketOwnershipControls 操作時，發生錯誤 (InvalidBucketAclWithObjectOwnership)：儲存貯體無法使用 ObjectOwnership 的 BucketOwnerEnforced 設定來設定 ACL