

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

# 對 Amazon S3 中的存取遭拒 (403 Forbidden) 錯誤進行故障診斷
<a name="troubleshoot-403-errors"></a>

當 AWS 明確或隱含拒絕授權請求時，會出現存取遭拒 (HTTP `403 Forbidden`) 錯誤。
+ 當政策包含特定 AWS 動作的`Deny`陳述式時，會發生*明確拒絕*。
+ 如果沒有適用的 `Deny` 陳述式，也沒有適用的 `Allow` 陳述式，則會發生*隱含拒絕*。

由於 AWS Identity and Access Management (IAM) 政策預設會隱含拒絕 IAM 委託人，因此該政策必須明確允許委託人執行動作。否則，政策會隱含拒絕存取。如需詳細資訊，請參閱《IAM 使用者指南》**中的[明確和隱含拒絕之間的差異](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay)。如需判斷允許或拒絕存取請求的評估邏輯資訊，請參閱《IAM 使用者指南》**中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

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

下列主題涵蓋 Amazon S3 中存取遭拒錯誤的最常見原因。

**注意**  
對於存取遭拒 (HTTP `403 Forbidden`) 錯誤，當請求在儲存貯體擁有者的個別 AWS 帳戶或儲存貯體擁有者 AWS 的組織之外啟動時，Amazon S3 不會向儲存貯體擁有者收費。

**Topics**
+ [存取遭拒訊息範例及如何對其進行故障診斷](#access-denied-message-examples)
+ [因申請者付款設定而存取遭拒](#access-denied-requester-pays)
+ [儲存貯體政策與 IAM 政策](#bucket-iam-policies)
+ [Amazon S3 ACL 設定](#troubleshoot-403-acl-settings)
+ [S3 封鎖公開存取設定](#troubleshoot-403-bpa)
+ [Amazon S3 加密設定](#troubleshoot-403-encryption)
+ [S3 物件鎖定設定](#troubleshoot-403-object-lock)
+ [VPC 端點政策](#troubleshoot-403-vpc)
+ [AWS Organizations 政策](#troubleshoot-403-orgs)
+ [CloudFront 分佈存取](#troubleshoot-403-cloudfront)
+ [存取點設定](#troubleshoot-403-access-points)
+ [其他資源](#troubleshoot-403-additional-resources)

**注意**  
如果您嘗試對許可問題進行故障診斷，請從[存取遭拒訊息範例及如何對其進行故障診斷](#access-denied-message-examples)一節開始，然後前往[儲存貯體政策與 IAM 政策](#bucket-iam-policies)一節。也請務必遵循[檢查許可的秘訣](#troubleshoot-403-tips)中的指引。

## 存取遭拒訊息範例及如何對其進行故障診斷
<a name="access-denied-message-examples"></a>

對於對相同 AWS 帳戶 或相同組織中的資源提出的請求，Amazon S3 現在會在存取遭拒 (HTTP `403 Forbidden`) 錯誤中包含其他內容 AWS Organizations。此新內容包括拒絕存取的政策類型、拒絕原因，以及請求存取資源的 IAM 使用者或角色相關資訊。

此額外內容可協助您對存取問題進行故障診斷、找出存取遭拒錯誤的根本原因，並透過更新相關政策來修正不正確的存取控制。此額外內容也可用於 AWS CloudTrail 日誌。所有 現已提供相同帳戶或相同組織請求的增強型存取遭拒錯誤訊息 AWS 區域，包括 AWS GovCloud (US) Regions 和中國區域。

大多數拒絕存取錯誤訊息的格式為 `User {{user-arn}} is not authorized to perform {{action}} on "{{resource-arn}}" because {{context}}`。在此範例中，{{`user-arn`}} 是未獲得存取權之使用者的 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)，{{`action`}} 是政策拒絕的服務動作，而 {{`resource-arn`}} 是政策執行動作所在資源的 ARN。{{`context`}} 欄位代表政策類型的額外內容，其中說明政策拒絕存取的原因。

當政策由於包含 `Deny` 陳述式而明確拒絕存取時，則存取遭拒錯誤訊息會包含 `with an explicit deny in a {{type}} policy` 一詞。當政策隱含拒絕存取時，則存取遭拒錯誤訊息會包含 `because no {{type}} policy allows the {{action}} action` 一詞。

**重要**  
增強型存取遭拒訊息只會針對相同帳戶請求，或針對 AWS Organizations中相同組織內的請求傳回。同一組織外部的跨帳戶請求會傳回一般 `Access Denied` 訊息。  
如需判斷允許或拒絕跨帳戶存取請求的評估邏輯資訊，請參閱《IAM 使用者指南》**中的[跨帳戶政策評估邏輯](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)。如需示範如何授予跨帳戶存取權的逐步解說，請參閱[範例 2：授予跨帳戶儲存貯體許可的儲存貯體擁有者](example-walkthroughs-managing-access-example2.md)。
對於 AWS Organizations中相同組織內的請求：  
如果拒絕是因為虛擬私有雲端 (VPC) 端點政策而發生，則不會傳回增強型存取遭拒訊息。
每當儲存貯體擁有者和呼叫者帳戶都屬於 AWS Organizations中的相同組織時，就會提供增強型存取遭拒訊息。雖然設定了 S3 物件擁有權**儲存貯體擁有者偏好的**，或**物件寫入器**設定的儲存貯體，可能包含不同帳戶擁有的物件，但物件擁有權不會影響增強型存取遭拒訊息。只要儲存貯體擁有者和呼叫者位於同一個組織中，無論誰擁有特定物件，都會針對所有物件請求傳回增強型存取遭拒訊息。如需有關物件擁有權設定和組態的資訊，請參閱 [控制物件的擁有權並停用儲存貯體的 ACL](about-object-ownership.md)。
對於向目錄儲存貯體提出的請求，不會傳回增強型存取遭拒錯誤訊息。目錄儲存貯體請求會傳回一般 `Access Denied` 訊息。
如果相同政策類型的多個政策拒絕授權請求，則存取遭拒錯誤訊息不會指定政策數目。
如果多種政策類型拒絕授權請求，錯誤訊息只會包含其中一種政策類型。
如果存取請求因多個原因遭到拒絕，錯誤訊息只會包含其中一個拒絕原因。

下列範例顯示不同存取遭拒錯誤訊息類型的格式，並示範如何對每種訊息類型進行故障診斷。

### 由於封鎖加密類型而拒絕存取
<a name="access-denied-due-to-blocked-encryption-type"></a>

若要限制您可以在一般用途儲存貯體中使用的伺服器端加密類型，您可以選擇透過更新儲存貯體的預設加密組態來封鎖 SSE-C 寫入請求。此儲存貯體層級組態會封鎖上傳指定 SSE-C 物件的請求。 當儲存貯體的 SSE-C 遭到封鎖時，任何指定 SSE-C 加密的 `PutObject`、`CopyObject``PostObject`、 或 分段上傳或複寫請求都會遭到 HTTP 403 `AccessDenied`錯誤拒絕。

此設定是 `PutBucketEncryption` API 上的參數，如果您有 `s3:PutEncryptionConfiguration`許可，也可以使用 S3 主控台、 AWS CLI 和 AWS SDKs進行更新。有效值為 `SSE-C`，可封鎖一般用途儲存貯體的 SSE-C 加密，以及 `NONE`，允許使用 SSE-C 寫入儲存貯體。

例如，當 `BlockedEncryptionTypes`設定封鎖指定 SSE-C 的寫入請求而拒絕存取`PutObject`請求時，您會收到下列訊息：

```
An error occurred (AccessDenied) when calling the PutObject operation:   
User: arn:aws:iam::123456789012:user/MaryMajor  is not   
authorized to perform: s3:PutObject on resource:   
"arn:aws:s3:::amzn-s3-demo-bucket1/object-name" because this   
bucket has blocked upload requests that specify   
Server Side Encryption with Customer provided keys (SSE-C).   
Please specify a different server-side encryption type
```

如需有關此設定的詳細資訊，請參閱 [封鎖或取消封鎖一般用途儲存貯體的 SSE-C](blocking-unblocking-s3-c-encryption-gpb.md)。

### 因資源控制政策而拒絕存取 – 明確拒絕
<a name="access-denied-rcp-examples-explicit"></a>

1. 在資源控制政策 (RCP) 中檢查該動作是否有 `Deny` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 透過移除 `Deny` 陳述式來更新您的 RCP。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[更新資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_update.html#update_policy-rcp)。

```
An error occurred (AccessDenied) when calling the GetObject operation: 
User: arn:aws:iam::{{777788889999}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" 
with an explicit deny in a resource control policy
```

### 因服務控制政策而拒絕存取 – 隱含拒絕
<a name="access-denied-scp-examples-implicit"></a>

1. 在服務控制政策 (SCP) 中檢查該動作是否有缺少的 `Allow` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 透過新增 `Allow` 陳述式來更新您的 SCP。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[更新 SCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html#update_policy)。

```
User: arn:aws:iam::{{777788889999}}:user/{{MaryMajor}} is not authorized to perform:
s3:GetObject because no service control policy allows the s3:GetObject action
```

### 因服務控制政策而拒絕存取 – 明確拒絕
<a name="access-denied-scp-examples-explicit"></a>

1. 在服務控制政策 (SCP) 中檢查該動作是否有 `Deny` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 變更 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的 SCP。如需如何執行這項操作的範例，請參閱《AWS Organizations 使用者指南》**中的[防止 IAM 使用者和角色進行指定的變更，但指定管理員角色除外](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples_general.html#example-scp-restricts-with-exception)。如需有新 SCP 的詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[更新 SCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html#update_policy)。

```
User: arn:aws:iam::{{777788889999}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject with an explicit deny in a service control policy
```

### 因 VPC 端點政策而拒絕存取 – 隱含拒絕
<a name="access-denied-vpc-endpoint-examples-implicit"></a>

1. 在您的虛擬私有雲端 (VPC) 端點政策中檢查該動作是否有遺失的 `Allow` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 透過新增 `Allow` 陳述式來更新 VPC 端點政策。如需詳細資訊，請參閱《AWS PrivateLink 指南》**中的[更新 VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject because no VPC endpoint policy allows the s3:GetObject action
```

### 因 VPC 端點政策而拒絕存取 – 明確拒絕
<a name="access-denied-vpc-endpoint-examples-explicit"></a>

1. 在您的虛擬私有雲端 (VPC) 端點政策中檢查該動作是否有明確的 `Deny` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 變更 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的 VPC 端點政策。例如，您可以更新 `Deny` 陳述式使用 `aws:PrincipalAccount` 條件索引鍵搭配 `StringNotEquals` 條件運算子，以便允許特定主體存取，如[範例 7：從 `Deny` 陳述式中排除特定主體](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement)所示。如需更新 VPC 端點政策的詳細資訊，請參閱《AWS PrivateLink 指南》**中的[更新 VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#update-vpc-endpoint-policy)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" with 
an explicit deny in a VPC endpoint policy
```

### 因許可界限而拒絕存取 – 隱含拒絕
<a name="access-denied-permissions-boundary-examples-implicit"></a>

1. 在許可界限中檢查該動作是否有遺失的 `Allow` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 透過將 `Allow` 陳述式新增至您的 IAM 政策來更新您的許可界限。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 實體的許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" 
because no permissions boundary allows the s3:GetObject action
```

### 因許可界限而拒絕存取 – 明確拒絕
<a name="access-denied-permissions-boundary-examples-explicit"></a>

1. 在許可界限中檢查該動作是否有明確的 `Deny` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 變更 IAM 政策中的 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的許可界限。例如，您可以更新 `Deny` 陳述式使用 `aws:PrincipalAccount` 條件索引鍵搭配 `StringNotEquals` 條件運算子，以便允許特定主體存取，如 IAM 使用者指南》**中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) 所示。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 實體的許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{777788889999}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject with an explicit deny in a permissions boundary
```

### 因工作階段政策而拒絕存取 – 隱含拒絕
<a name="access-denied-session-policy-examples-implicit"></a>

1. 在工作階段政策中檢查該動作是否有遺失的 `Allow` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 透過新增 `Allow` 陳述式來更新您的工作階段政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject because no session policy allows the s3:GetObject action
```

### 因工作階段政策而拒絕存取 – 明確拒絕
<a name="access-denied-session-policy-examples-explicit"></a>

1. 在工作階段政策中檢查該動作是否有明確的 `Deny` 陳述式。對於下列範例，動作是 `s3:GetObject`。

1. 變更 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的工作階段政策。例如，您可以更新 `Deny` 陳述式使用 `aws:PrincipalAccount` 條件索引鍵搭配 `StringNotEquals` 條件運算子，以便允許特定主體存取，如[範例 7：從 `Deny` 陳述式中排除特定主體](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement)所示。如需更新工作階段政策的詳細資訊，請參閱《IAM 使用者指南》**中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" with 
an explicit deny in a session policy
```

### 因以資源為基礎的政策而拒絕存取 – 隱含拒絕
<a name="access-denied-resource-based-policy-examples-implicit"></a>

**注意**  
「資源型政策」**是指儲存貯體政策和存取點政策等政策。

1. 在以資源為基礎的政策中檢查該動作是否有遺失的 `Allow` 陳述式。另請檢查是否在儲存貯體、存取點或帳戶層級套用 `IgnorePublicAcls` S3 封鎖公開存取設定。對於下列範例，動作是 `s3:GetObject`。

1. 透過新增 `Allow` 陳述式來更新您的政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的[資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

   您可能還需要調整儲存貯體、存取點或帳戶的 `IgnorePublicAcls` 封鎖公開存取設定。如需詳細資訊，請參閱[因封鎖公開存取設定而拒絕存取](#access-denied-bpa-examples)及[為您的 S3 儲存貯體設定封鎖公開存取](configuring-block-public-access-bucket.md)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject because no resource-based policy allows the s3:GetObject action
```

### 因以資源為基礎的政策而拒絕存取 – 明確拒絕
<a name="access-denied-resource-based-policy-examples-explicit"></a>

**注意**  
「資源型政策」**是指儲存貯體政策和存取點政策等政策。

1. 在以資源為基礎的政策中檢查該動作是否有明確的 `Deny` 陳述式。另請檢查是否在儲存貯體、存取點或帳戶層級套用 `RestrictPublicBuckets` S3 封鎖公開存取設定。對於下列範例，動作是 `s3:GetObject`。

1. 變更 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的政策。例如，您可以更新 `Deny` 陳述式使用 `aws:PrincipalAccount` 條件索引鍵搭配 `StringNotEquals` 條件運算子，以便允許特定主體存取，如[範例 7：從 `Deny` 陳述式中排除特定主體](amazon-s3-policy-keys.md#example-exclude-principal-from-deny-statement)所示。如需更新資源型政策的詳細資訊，請參閱《IAM 使用者指南》**中的[資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

   您可能還需要調整儲存貯體、存取點或帳戶的 `RestrictPublicBuckets` 封鎖公開存取設定。如需詳細資訊，請參閱[因封鎖公開存取設定而拒絕存取](#access-denied-bpa-examples)及[為您的 S3 儲存貯體設定封鎖公開存取](configuring-block-public-access-bucket.md)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" with 
an explicit deny in a resource-based policy
```

### 因以身分為基礎的政策而拒絕存取 – 隱含拒絕
<a name="access-denied-identity-based-policy-examples-implicit"></a>

1. 在連接至身分的以身分為基礎的政策中，檢查該動作是否有遺失的 `Allow` 陳述式。對於下列範例，動作是連接至使用者 `MaryMajor` 的 `s3:GetObject`。

1. 透過新增 `Allow` 陳述式來更新您的政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的[身分型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_id-based)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject because no identity-based policy allows the s3:GetObject action
```

### 因以身分為基礎的政策而拒絕存取 – 明確拒絕
<a name="access-denied-identity-based-policy-examples-explicit"></a>

1. 在連接至身分的以身分為基礎的政策中檢查該動作是否有明確的 `Deny` 陳述式。對於下列範例，動作是連接至使用者 `MaryMajor` 的 `s3:GetObject`。

1. 變更 `Deny` 陳述式以允許使用者進行必要存取，藉此更新您的政策。例如，您可以更新 `Deny` 陳述式使用 `aws:PrincipalAccount` 條件索引鍵搭配 `StringNotEquals` 條件運算子，以便允許特定主體存取，如 IAM 使用者指南》**中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) 所示。如需詳細資訊，請參閱《IAM 使用者指南》**中的[身分型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_id-based)和[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

```
User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" with 
an explicit deny in an identity-based policy
```

### 因封鎖公開存取設定而拒絕存取
<a name="access-denied-bpa-examples"></a>

Amazon S3 封鎖公開存取功能可提供存取點、儲存貯體和帳戶的設定，以協助您管理對 Amazon S3 資源的公開存取。如需 Amazon S3 如何定義「公開」的詳細資訊，請參閱 [「公有」的意義](access-control-block-public-access.md#access-control-block-public-access-policy-status)。

依預設，新的儲存貯體、存取點和物件不允許公開存取。不過，使用者可以修改儲存貯體政策、存取點政策、IAM 使用者政策、物件許可或存取控制清單 (ACL)，以允許公開存取。S3 封鎖公開存取設定會覆寫這些政策、許可和 ACL。自 2023 年 4 月起，新儲存貯體的所有封鎖公開存取設定預設為啟用。

Amazon S3 在收到請求存取儲存貯體或物件時，將會判斷儲存貯體或儲存貯體擁有者的帳戶是否套用封鎖公開存取設定。如果請求是透過存取點提出，Amazon S3 也會檢查存取點的封鎖公開存取設定。若有禁止所請求存取的現有封鎖公開存取設定，Amazon S3 便會拒絕該請求。

Amazon S3 封鎖公開存取提供四個設定。這些是獨立的設定，且可以任意組合使用。每個設定都可以套用至存取點、儲存貯體或整個 AWS 帳戶。如果存取點、儲存貯體或帳戶的封鎖公開存取設定不同，則 Amazon S3 會套用存取點、儲存貯體和帳戶設定的最嚴格組合。

Amazon S3 在評估封鎖公開存取設定是否禁止操作時，將會拒絕任何違反存取點、儲存貯體或帳戶設定的請求。

Amazon S3 封鎖公開存取提供下列四種設定：
+ `BlockPublicAcls` – 此設定適用於 `PutBucketAcl`、`PutObjectAcl`、`PutObject`、`CreateBucket`、`CopyObject` 和 `POST Object` 請求。`BlockPublicAcls` 設定會導致下列行為：
  + 如果指定的存取控制清單 (ACL) 為公有，則 `PutBucketAcl` 和 `PutObjectAcl` 呼叫會失敗。
  + 如果請求包含公有 ACL，則 `PutObject` 呼叫會失敗。
  + 若將此設定套用至帳戶，則當請求包含公有 ACL 時，`CreateBucket` 呼叫會失敗並以 HTTP `400` (`Bad Request`) 回應。

  例如，當 `CopyObject` 請求的存取由於 `BlockPublicAcls` 設定而遭到拒絕時，您會收到下列訊息：

  ```
  An error occurred (AccessDenied) when calling the CopyObject operation: 
  User: arn:aws:sts::{{123456789012}}:user/{{MaryMajor}} is not authorized to 
  perform: s3:CopyObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" 
  because public ACLs are prevented by the BlockPublicAcls setting in S3 Block Public Access.
  ```
+ `IgnorePublicAcls` – `IgnorePublicAcls` 設定會導致 Amazon S3 在儲存貯體及其所包含的任何物件上忽略所有公有 ACL。如果請求的許可僅由公有 ACL 授予，則 `IgnorePublicAcls` 設定會拒絕該請求。

  任何由於 `IgnorePublicAcls` 設定所導致的拒絕都是隱含的。例如，若 `IgnorePublicAcls` 由於公有 ACL 而拒絕 `GetObject` 請求，您會收到下列訊息：

  ```
  User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
  s3:GetObject because no resource-based policy allows the s3:GetObject action
  ```
+ `BlockPublicPolicy` – 此設定適用於 `PutBucketPolicy` 和 `PutAccessPointPolicy` 請求。

  如果指定的儲存貯體政策允許公開存取，則針對儲存貯體設定 `BlockPublicPolicy` 會導致 Amazon S3 拒絕呼叫 `PutBucketPolicy`。如果指定的政策允許公開存取，此設定也會導致 Amazon S3 拒絕對所有儲存貯體的相同帳戶存取點呼叫 `PutAccessPointPolicy`。

  如果指定的政策 (存取點或基礎儲存貯體) 允許公開存取，則針對存取點設定 `BlockPublicPolicy` 會導致 Amazon S3 拒絕透過存取點提出的 `PutAccessPointPolicy` 和 `PutBucketPolicy` 呼叫。

  例如，當 `PutBucketPolicy` 請求的存取由於 `BlockPublicPolicy` 設定而遭到拒絕時，您會收到下列訊息：

  ```
  An error occurred (AccessDenied) when calling the PutBucketPolicy operation: 
  User: arn:aws:sts::{{123456789012}}:user/{{MaryMajor}} is not authorized to 
  perform: s3:PutBucketPolicy on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" 
  because public policies are prevented by the BlockPublicPolicy setting in S3 Block Public Access.
  ```
+ `RestrictPublicBuckets` – `RestrictPublicBuckets`設定會將具有公有政策的存取點或儲存貯體存取權限制為只有儲存貯體擁有者帳戶和存取點擁有者帳戶中的 AWS 服務 主體和授權使用者。此設定會封鎖對存取點或儲存貯體 ( AWS 服務 主體除外） 的所有跨帳戶存取，同時仍允許帳戶中的使用者管理存取點或儲存貯體。此設定也會拒絕所有匿名 (或未簽署) 呼叫。

  任何由於 `RestrictPublicBuckets` 設定所導致的拒絕都是明確的。例如，若 `RestrictPublicBuckets` 由於公有儲存貯體或存取點政策而拒絕 `GetObject` 請求，您會收到下列訊息：

  ```
  User: arn:aws:iam::{{123456789012}}:user/{{MaryMajor}} is not authorized to perform: 
  s3:GetObject on resource: "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/{{object-name}}" with 
  an explicit deny in a resource-based policy
  ```

如需這些設定的詳細資訊，請參閱 [封鎖公開存取設定](access-control-block-public-access.md#access-control-block-public-access-options)。若要檢閱和更新這些設定，請參閱[設定封鎖公開存取](access-control-block-public-access.md#configuring-block-public-access)。

## 因申請者付款設定而存取遭拒
<a name="access-denied-requester-pays"></a>

如果您嘗試存取的 Amazon S3 儲存貯體已啟用申請者付款功能，您需要確保在向該儲存貯體提出請求時，傳遞正確的請求參數。Amazon S3 中的申請者付款功能，可讓申請者而非儲存貯體擁有者支付存取儲存貯體中物件的資料傳輸成本和請求成本。為儲存貯體啟用申請者付款時，不會向儲存貯體擁有者收取其他 AWS 帳戶提出的請求費用。

如果您在未傳遞必要參數的情況下，向已啟用申請者付款的儲存貯體提出請求，您將會收到存取遭拒 (403 Forbidden) 錯誤。若要存取已啟用申請者付款功能的儲存貯體中的物件，您必須執行下列動作：

1. 使用 CLI AWS 提出請求時，您必須包含 `--request-payer requester` 參數。例如，若要將具有位於 `s3://{{amzn-s3-demo-bucket}}/` S3 儲存貯體中的索引鍵 `object.txt` 的物件複製到本機電腦上的某位置，如果此儲存貯體已啟用申請者付款，您也必須傳遞 `--request-payer requester` 參數。

   ```
   aws s3 cp s3://{{amzn-s3-demo-bucket}}/object.txt /local/path \
   --request-payer requester
   ```

1. 使用 AWS SDK 提出程式設計請求時，請將 `x-amz-request-payer`標頭設定為值 `requester`。如需範例，請參閱 [從請求者付費儲存貯體下載物件](ObjectsinRequesterPaysBuckets.md)。

1. 確定提出請求的 IAM 使用者或角色具有存取申請者付款儲存貯體的必要權限，例如 `s3:GetObject` 和 `s3:ListBucket` 許可權。

透過包含 `--request-payer requester` 參數或設定 `x-amz-request-payer` 標頭，您即會通知 Amazon S3，身為申請者的您將支付存取已啟用申請者付款之儲存貯體中的物件相關費用。如此可防止存取遭拒 (403 Forbidden) 錯誤。

## 儲存貯體政策與 IAM 政策
<a name="bucket-iam-policies"></a>

### 儲存貯體層級操作
<a name="troubleshoot-403-bucket-level-ops"></a>

如果沒有儲存貯體政策，則儲存貯體會隱含地允許來自儲存貯體擁有者帳戶中任何 AWS Identity and Access Management (IAM) 身分的請求。儲存貯體也會隱含地拒絕來自任何其他帳戶中任何其他 IAM 身分的請求，以及匿名 (未簽署) 請求。不過，如果沒有 IAM 使用者政策，請求者 （除非是 AWS 帳戶 根使用者） 會隱含拒絕提出任何請求。如需評估邏輯的詳細資訊，請參閱《IAM 使用者指南》**中的[判斷允許還是拒絕帳戶內的請求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)。

### 物件層級操作
<a name="troubleshoot-403-object-level-ops"></a>

如果物件是儲存貯體擁有帳戶所擁有，則儲存貯體政策和 IAM 使用者政策的運作方式與物件層級操作的運作方式相同，因為它們都適用於物件層級操作。例如，如果沒有適當的儲存貯體政策，則儲存貯體會隱含地允許來自儲存貯體擁有帳戶中任何 IAM 身分的物件請求。儲存貯體也會隱含地拒絕來自任何其他帳戶中任何其他 IAM 身分的物件請求，以及匿名 (未簽署) 請求。不過，如果沒有 IAM 使用者政策，請求者 （除非是 AWS 帳戶 根使用者） 會隱含拒絕提出任何物件請求。

如果物件是由外部帳戶擁有，則只能透過物件存取控制清單 (ACL) 授予物件的存取權。儲存貯體政策和 IAM 使用者政策仍可用來拒絕物件請求。

因此，若要確保您的儲存貯體政策或 IAM 使用者政策不會造成「存取遭拒 (403 Forbidden)」錯誤，請確定符合下列要求：
+ 對於同一帳戶存取，在儲存貯體政策或 IAM 使用者政策中，對您嘗試授予其許可的請求者不得有明確的 `Deny` 陳述式。如果您只想要使用儲存貯體政策和 IAM 使用者政策授予許可，則其中一項政策中至少須有一個明確的 `Allow` 陳述式。
+ 對於跨帳戶存取權，在儲存貯體政策或 IAM 使用者政策中，對您嘗試授予其許可的請求者不得有明確的 `Deny` 陳述式。若要使用儲存貯體政策和 IAM 使用者政策來授予跨帳戶許可，請確定請求者的儲存貯體政策和 IAM 使用者政策都會包含明確的 `Allow` 陳述式。

**注意**  
儲存貯體政策中的 `Allow` 陳述式僅適用於[同一儲存貯體擁有帳戶所擁有](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)的物件。不過，儲存貯體政策中的 `Deny` 陳述式會套用至所有物件，不論物件擁有權為何。

**檢視或編輯儲存貯體政策**
**注意**  
若要檢視或編輯儲存貯體政策，您必須具備 `s3:GetBucketPolicy` 許可。

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

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 從**儲存貯體**清單中，選擇要檢視或建立其儲存貯體政策的儲存貯體名稱。

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

1. 在 **Bucket policy (儲存貯體政策)** 下方，選擇 **Edit (編輯)**。**Edit bucket policy** (編輯儲存貯體政策) 頁面隨即出現。

若要使用 AWS Command Line Interface (AWS CLI) 檢閱或編輯儲存貯體政策，請使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)命令。

**注意**  
如果您因為儲存貯體政策不正確而遭到鎖定，[AWS 管理主控台 請使用您的 AWS 帳戶 根使用者憑證登入 。](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html)若要重新取得儲存貯體的存取權，請務必使用 AWS 帳戶 根使用者憑證刪除不正確的儲存貯體政策。

### 檢查許可的秘訣
<a name="troubleshoot-403-tips"></a>

若要檢查請求者是否具有適當的許可來執行 Amazon S3 操作，請嘗試以下動作：
+ 識別請求者。如果它是未簽署的請求，則為沒有 IAM 使用者政策的匿名請求。如果是使用預先簽署 URL 的請求，則使用者政策會與簽署請求之 IAM 使用者或角色的使用者政策相同。
+ 確認您使用的是正確的 IAM 使用者或角色。您可以檢查 AWS 管理主控台 的右上角或使用 [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) 命令來驗證 IAM 使用者或角色。
+ 檢查與 IAM 使用者或角色相關的 IAM 政策。您可以使用下列其中一種方法：
  + [使用 IAM 政策模擬器測試 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)。
  + 檢閱不同的 [IAM 政策類型](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ 如有需要，請[編輯您的 IAM 使用者政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。
+ 請檢閱下列明確拒絕或允許存取的政策範例：
  + 明確允許 IAM 使用者政策：[IAM：以程式設計方式和在主控台中允許和拒絕對多個服務的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_multiple-services-console.html)
  + 明確允許儲存貯體政策：[將許可授予多個帳戶，以上傳物件或設定物件 ACL 進行公開存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-acl-1)
  + 明確拒絕 IAM 使用者政策：[AWS： AWS 根據請求拒絕對 的存取 AWS 區域](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-requested-region.html)
  + 明確拒絕儲存貯體政策：[寫入儲存貯體的所有物件都需要 SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-encryption-1)

## Amazon S3 ACL 設定
<a name="troubleshoot-403-acl-settings"></a>

檢查 ACL 設定時，請先[檢閱物件擁有權設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-retrieving.html)，以檢查儲存貯體上是否已啟用 ACL。請注意，ACL 許可只能用來授予許可，無法用來拒絕請求。ACL 也無法用來將存取權授予儲存貯體政策或 IAM 使用者政策中明確拒絕的請求者。

### 「物件擁有權」設定已設定為「儲存貯體擁有者強制執行」。
<a name="troubleshoot-403-object-ownership-1"></a>

如果已啟用**儲存貯體擁有者強制執行**設定，則 ACL 設定不太可能造成「存取遭拒 (403 Forbidden)」錯誤，因為此設定會停用所有套用至儲存貯體和物件的 ACL。**儲存貯體擁有者強制執行**是 Amazon S3 儲存貯體的預設 (和建議) 設定。

### 物件擁有權設定會設定為偏好的儲存貯體擁有者或物件寫入器
<a name="troubleshoot-403-object-ownership-2"></a>

ACL 許可權仍適用於**偏好的儲存貯體擁有者**設定，或**物件寫入者**設定。有兩種 ACL：儲存貯體 ACL 和物件 ACL。如需這兩種 ACL 類型之間的差異，請參閱 [ACL 許可與存取政策許可的對應](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#acl-access-policy-permission-mapping)。

根據遭拒請求的動作，[檢查儲存貯體或物件的 ACL 許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)：
+ 如果 Amazon S3 拒絕了`LIST`、`PUT` 物件、`GetBucketAcl` 或 `PutBucketAcl` 請求，請[檢閱儲存貯體的 ACL 許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。
**注意**  
您無法使用儲存貯體 ACL 設定授予 `GET` 物件許可。
+ 如果 Amazon S3 拒絕了 S3 物件上的 `GET` 請求，或 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) 請求，請[檢閱物件的 ACL 許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。
**重要**  
如果擁有物件的帳戶與擁有儲存貯體的帳戶不同，則儲存貯體政策不會控制物件的存取。

### 針對跨帳戶物件擁有權期間來自 `GET` 物件請求的「存取遭拒 (403 Forbidden)」錯誤進行疑難排解
<a name="troubleshoot-403-object-ownership-tips"></a>

檢閱儲存貯體的[物件擁有權設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html#object-ownership-overview)，以判斷物件擁有者。如果您有權存取[物件 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)，也可以檢查物件擁有者的帳戶。(若要檢視物件擁有者的帳戶，請檢閱 Amazon S3 主控台中的物件 ACL 設定。) 或者，您也可以提出 `GetObjectAcl` 請求以尋找物件擁有者的[正式 ID](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)，以驗證物件擁有者帳戶。根據預設，ACL 會將 `GET` 請求的明確允許許可授予物件擁有者的帳戶。

在確認了物件擁有者與儲存貯體擁有者不同之後，請根據您的使用案例和存取層級，選擇下列其中一種方法來協助解決「存取遭拒 (403 Forbidden)」錯誤：
+ **停用 ACL (建議)** - 此方法將套用至所有物件，並可由儲存貯體擁有者執行。此方法會自動給與儲存貯體擁有者擁有權，並讓其完全控制儲存貯體中的每個物件。實作此方法之前，請檢查[停用 ACL 的先決條件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-migrating-acls-prerequisites.html)。如需如何將儲存貯體設定為**儲存貯體擁有者強制執行** (建議) 模式的相關資訊，請參閱[設定現有儲存貯體的物件擁有權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-existing-bucket.html)。
**重要**  
若要避免發生「存取遭拒 (403 Forbidden)」錯誤，請務必先將 ACL 許可遷移至儲存貯體政策，然後再停用 ACL。如需詳細資訊，請參閱[從 ACL 許可遷移的儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-ownership-migrating-acls-prerequisites.html#migrate-acl-permissions-bucket-policies)。
+ **將物件擁有者變更為儲存貯體擁有者** - 此方法可套用至個別物件，但只有物件擁有者 (或具有適當許可的使用者) 才能變更物件的擁有權。可能需要支付額外的 `PUT` 費用。(如需詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。) 此方法授予儲存貯體擁有者物件的完整擁有權，允許儲存貯體擁有者透過儲存貯體政策控制物件的存取。

  若要變更物件的擁有權，請執行下列其中一個動作：
  + 您 (儲存貯體擁有者) 可將[物件複製](https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html#CopyingObjectsExamples)回儲存貯體。
  + 您可以將儲存貯體的「物件擁有權」設定變更為**偏好的儲存貯體擁有者**。如果停用版本控制，則會覆寫儲存貯體中的物件。如果啟用了版本控制，則相同物件的重複版本將會出現在儲存貯體中，而儲存貯體擁有者可以[將生命週期規則設定為過期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)。如需如何變更「物件擁有權」設定的指示，請參閱 [設定現有儲存貯體的「物件擁有權」](object-ownership-existing-bucket.md)。
**注意**  
當您將「物件擁有權」設定更新為**偏好的儲存貯體擁有者**時，此設定只會套用於上傳至儲存貯體的新物件。
  + 您可以使用 `bucket-owner-full-control` 標準物件 ACL 讓物件擁有者重新上傳物件。
**注意**  
對於跨帳戶上傳，您也可以在儲存貯體政策中要求 `bucket-owner-full-control` 標準物件 ACL。如需儲存貯體政策範例，請參閱[授予跨帳戶許可，以在確保儲存貯體擁有者具有完全控制時上傳物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-acl-2)。
+ **將物件寫入者保留為物件擁有者** - 此方法不會變更物件擁有者，但可讓您個別授予物件的存取權。若要授予物件的存取權，您必須具有該物件的 `PutObjectAcl` 許可。然後，若要修正「存取遭拒 (403 Forbidden)」錯誤，請將請求者新增為[被授予者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee)，以存取物件 ACL 中的物件。如需詳細資訊，請參閱[設定 ACL](managing-acls.md)。

## S3 封鎖公開存取設定
<a name="troubleshoot-403-bpa"></a>

如果失敗的請求涉及公開存取或公開政策，請檢查帳戶、儲存貯體或存取點上的 S3 封鎖公開存取設定。如需對 S3 封鎖公開存取設定相關存取遭拒錯誤進行故障診斷的詳細資訊，請參閱[因封鎖公開存取設定而拒絕存取](#access-denied-bpa-examples)。

## Amazon S3 加密設定
<a name="troubleshoot-403-encryption"></a>

Amazon S3 支援儲存貯體上的伺服器端加密。伺服器端加密是指接收資料的應用程式或服務在目的地將資料加密。Amazon S3 會在將資料寫入 AWS 資料中心的磁碟時，在物件層級加密資料，並在您存取資料時將其解密。

依預設，Amazon S3 現在將伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 套用為 Amazon S3 中每個儲存貯體的基本加密層級。Amazon S3 也可讓您在上傳物件時指定伺服器端加密方法。

**檢閱儲存貯體的伺服器端加密狀態和加密設定**

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

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 從**儲存貯體**清單中，選擇要檢查其加密設定的儲存貯體。

1. 選擇**屬性**索引標籤。

1. 向下捲動至**預設加密**區段，然後檢視**加密類型**設定。

若要使用 檢查您的加密設定 AWS CLI，請使用 [https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-encryption.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-encryption.html)命令。

**檢查物件的加密狀態**

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

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 從**儲存貯體**清單中，選擇包含該物件的儲存貯體名稱。

1. 從**物件**清單中，選擇您想要新增或變更其加密的物件名稱。

   物件的詳細資訊頁面隨即出現。

1. 向下捲動至**伺服器端加密設定**區段，以檢視物件的伺服器端加密設定。

若要使用 檢查您的物件加密狀態 AWS CLI，請使用 [https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html#examples](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html#examples)命令。

### 加密和許可需求
<a name="troubleshoot-403-encryption-requirements"></a>

Amazon S3 支援三種類型的伺服器端加密：
+ 使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密
+ 使用 AWS Key Management Service (AWS KMS) 金鑰的伺服器端加密 (SSE-KMS)
+ 使用客戶提供金鑰 (SSE-C) 的伺服器端加密

根據您的加密設定，確定符合下列許可需求：
+ **SSE-S3** - 不需要額外的許可。
+ **SSE-KMS (搭配客戶受管金鑰)** - 若要上傳物件，需要 AWS KMS key 上的 `kms:GenerateDataKey` 權限。若要下載物件並執行物件的分段上傳，需要 KMS 金鑰上的 `kms:Decrypt` 許可。
+ **SSE-KMS （使用 AWS 受管金鑰)** – 請求者必須來自擁有 `aws/s3` KMS 金鑰的相同帳戶。請求者亦須具有正確的 Amazon S3 許可才能存取物件。
+ **SSE-C (搭配客戶提供的金鑰)** - 不需要其他許可。您可以設定儲存貯體政策，針對儲存貯體中的物件[使用客戶提供的加密金鑰來要求和限制伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html#ssec-require-condition-key)。

如果物件使用客戶受管金鑰加密，請確定 KMS 金鑰政策允許您執行 `kms:GenerateDataKey` 或 `kms:Decrypt` 動作。如需檢查 KMS 金鑰政策的指示，請參閱《AWS Key Management Service 開發人員指南》**中的[檢視金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html)。

## S3 物件鎖定設定
<a name="troubleshoot-403-object-lock"></a>

如果您的儲存貯體已啟用 [S3 物件鎖定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)，且物件受到[保留期間](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html#object-lock-retention-periods)或[法務保存](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html#object-lock-legal-holds)的保護，而且您嘗試刪除物件，Amazon S3 會根據您嘗試刪除物件的方式傳回下列其中一個回應：
+ **永久 `DELETE` 請求** – 如果您發出永久 `DELETE` 請求 (指定版本 ID 的請求)，Amazon S3 會在您嘗試刪除物件時傳回存取遭拒 (`403 Forbidden`) 錯誤。
+ **簡單 `DELETE` 請求** – 如果您發出簡單 `DELETE` 請求 (未指定版本 ID 的請求)，Amazon S3 會傳回 `200 OK` 回應，並在儲存貯體中插入[刪除標記](DeleteMarker.md)，而該標記會成為具有新 ID 的物件目前版本。

**檢查儲存貯體是否已啟用物件鎖定**

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

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 從**儲存貯體**清單中，選擇您要檢閱的儲存貯體名稱。

1. 選擇**屬性**索引標籤。

1. 向下捲動至**物件鎖定**區段。確認**物件鎖定**設定為**已啟用**或**已停用**。

若要判斷物件是否受到保留期或法務保存保護，請[檢視物件的鎖定資訊](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-view)。

如果物件受到保留期或法務保存保護，請檢查下列情況：
+ 如果物件版本受到合規保留模式保護，則沒有任何方式可將其永久刪除。來自任何請求者的永久`DELETE`請求，包括 AWS 帳戶 根使用者，將導致存取遭拒 (403 禁止） 錯誤。此外，請注意，當您針對受合規保留模式保護的物件提交 `DELETE` 請求時，Amazon S3 會為該物件建立[刪除標記](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)。
+ 如果物件版本受控管保留模式保護，且您具有 `s3:BypassGovernanceRetention` 許可，您可以略過保護並永久刪除版本。如需詳細資訊，請參閱[繞過控管模式](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-bypass)。
+ 如果物件版本受法務保存保護，則永久 `DELETE` 請求可能會導致「存取遭拒 (403 Forbidden)」錯誤。若要永久刪除物件版本，您必須移除物件版本上的法務保存。若要移除法務保存，您必須具有 `s3:PutObjectLegalHold` 許可。如需移除法務保存的詳細資訊，請參閱 [設定 S3 物件鎖定](object-lock-configure.md)。

## VPC 端點政策
<a name="troubleshoot-403-vpc"></a>

如果您使用虛擬私有雲端 (VPC) 端點來存取 Amazon S3，請確定 VPC 端點政策不會封鎖您存取 Amazon S3 資源。依預設，VPC 端點政策允許所有對 Amazon S3 的請求。您也可以設定 VPC 端點政策來限制特定請求。如需如何檢查 VPC 端點政策的資訊，請參閱下列資源：
+ [因 VPC 端點政策而拒絕存取 – 隱含拒絕](#access-denied-vpc-endpoint-examples-implicit)
+ [因 VPC 端點政策而拒絕存取 – 明確拒絕](#access-denied-vpc-endpoint-examples-explicit)
+ AWS PrivateLink 指南》**中的[使用端點政策控制對 VPC 端點的存取](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)

## AWS Organizations 政策
<a name="troubleshoot-403-orgs"></a>

如果您的 AWS 帳戶 屬於組織， AWS Organizations 政策可能會封鎖您存取 Amazon S3 資源。根據預設， AWS Organizations 政策不會封鎖對 Amazon S3 的任何請求。不過，請確定您的 AWS Organizations 政策尚未設定為封鎖對 S3 儲存貯體的存取。如需如何檢查 AWS Organizations 政策的指示，請參閱下列資源：
+ [因服務控制政策而拒絕存取 – 隱含拒絕](#access-denied-scp-examples-implicit)
+ [因服務控制政策而拒絕存取 – 明確拒絕](#access-denied-scp-examples-explicit)
+ [因資源控制政策而拒絕存取 – 明確拒絕](#access-denied-rcp-examples-explicit)
+ AWS Organizations 使用者指南》**中的[列出所有政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_info-operations.html#list-all-pols-in-org)

此外，如果您誤將成員帳戶的儲存貯體政策設定為拒絕所有使用者存取 S3 儲存貯體，您可以透過在 IAM 中啟動成員帳戶的特權工作階段來解除鎖定儲存貯體。啟動特權工作階段之後，您可以刪除設定錯誤的儲存貯體政策，以重新取得儲存貯體的存取權。如需詳細資訊，請參閱《 *AWS Identity and Access Management 使用者指南*》中的[在 AWS Organizations 成員帳戶上執行特權任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user-privileged-task.html)。

## CloudFront 分佈存取
<a name="troubleshoot-403-cloudfront"></a>

如果您在嘗試透過 CloudFront 存取 S3 靜態網站時收到存取遭拒 (403 Forbidden) 錯誤，請檢查下列常見問題：
+ **您是否有正確的原始網域名稱格式？**
  + 請確定您使用的是 S3 網站端點格式 (bucket-name.s3-website-region.amazonaws.com)，而不是 REST API 端點
  + 確認您的儲存貯體上已啟用靜態網站託管
+ **您的儲存貯體政策是否允許 CloudFront 存取？**
  + 確保您的儲存貯體政策包含 CloudFront 分佈原始存取身分 (OAI) 或原始存取控制 (OAC) 的許可權
  + 確認政策包含必要的 s3:GetObject 許可權

如需其他疑難排解步驟和組態，包括錯誤頁面設定和通訊協定設定，請參閱[當我使用 Amazon S3 網站端點作為 CloudFront 分佈的原始伺服器時，為什麼會收到「403 存取遭拒」錯誤？](https://repost.aws/knowledge-center/s3-website-cloudfront-error-403) AWS re:Post 知識中心的 。

**注意**  
此錯誤與直接存取 S3 時可能遇到的 403 錯誤不同。對於特定的 CloudFront 問題，請務必檢查 CloudFront 分佈設定和 S3 組態。

## 存取點設定
<a name="troubleshoot-403-access-points"></a>

如果您在透過 Amazon S3 Access Points 提出請求時收到「存取遭拒 (403 Forbidden)」錯誤，則可能需要檢查下列事項：
+ 存取點的組態
+ 用於存取點的 IAM 使用者政策
+ 用來管理或設定跨帳戶存取點的儲存貯體政策

**存取點組態與政策**
+ 建立存取點時，您可以選擇將**網際網路**或 **VPC** 指定為網路原點。如果網路原點設定為僅限 VPC，Amazon S3 將拒絕對非來自指定 VPC 的存取點所發出的任何請求。若要檢查存取點的網路原點，請參閱 [建立受限於 Virtual Private Cloud 的存取點](access-points-vpc.md)。
+ 使用存取點，您也可以設定自訂的「封鎖公開存取」設定，其運作方式與儲存貯體或帳戶層級的「封鎖公開存取」設定類似。若要檢查您的自訂「封鎖公開存取」設定，請參閱 [管理一般用途儲存貯體存取點的公開存取](access-points-bpa-settings.md)。
+ 若要使用存取點對 Amazon S3 提出成功的請求，請確保請求者具有必要的 IAM 許可。如需詳細資訊，請參閱[配置使用存取點的 IAM 原則](access-points-policies.md)。
+ 如果請求涉及跨帳戶存取點，請確定儲存貯體擁有者已更新儲存貯體政策，以授權來自存取點的請求。如需詳細資訊，請參閱[授予跨帳戶存取點的許可](access-points-policies.md#access-points-cross-account)。

如果檢查本主題中的所有項目後，存取遭拒 (403 禁止） 錯誤仍然存在，請[擷取您的 Amazon S3 請求 ID](https://docs.aws.amazon.com/AmazonS3/latest/userguide/get-request-ids.html) 並聯絡 支援 以取得其他指導。

## 其他資源
<a name="troubleshoot-403-additional-resources"></a>

如需有關存取遭拒 (403 Forbidden) 錯誤的更多指導方針，您可以檢查下列資源：
+ [如何對 Amazon S3 的 403 存取遭拒錯誤進行故障診斷？](https://repost.aws/knowledge-center/s3-troubleshoot-403) AWS re:Post 知識中心的 。
+ [當我嘗試存取 Amazon S3 儲存貯體或物件時，為什麼會收到 403 禁止錯誤？](https://repost.aws/knowledge-center/s3-403-forbidden-error) AWS re:Post 知識中心的 。
+ [當我嘗試存取相同 中的 Amazon S3 資源時，為什麼會收到存取遭拒錯誤 AWS 帳戶？](https://repost.aws/knowledge-center/s3-troubleshoot-403-resource-same-account) AWS re:Post 知識中心的 。
+ [當我嘗試存取具有公有讀取存取權的 Amazon S3 儲存貯體時，為什麼會收到存取遭拒錯誤？](https://repost.aws/knowledge-center/s3-troubleshoot-403-public-read) AWS re:Post 知識中心的 。
+ [當我嘗試使用預先簽章的 URL 將物件上傳至 Amazon S3 時，為什麼會收到「簽章不相符」錯誤？](https://repost.aws/knowledge-center/s3-presigned-url-signature-mismatch) AWS re:Post 知識中心的 。
+ [當我在 Amazon S3 儲存貯體上執行同步命令時，為什麼會收到 ListObjectsV2 的存取遭拒錯誤？](https://repost.aws/knowledge-center/s3-access-denied-listobjects-sync) AWS re:Post 知識中心的 。
+ [當我使用 Amazon S3 網站端點做為 CloudFront 分佈的原始伺服器時，為什麼會收到「403 存取遭拒」錯誤？ CloudFront ](https://repost.aws/knowledge-center/s3-website-cloudfront-error-403) AWS re:Post 知識中心的 。