

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

# 停用所有新儲存貯體的 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)。