疑難排解 Amazon S3 中的拒絕存取 (403 Forbidden) 錯誤 - Amazon Simple Storage Service

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

疑難排解 Amazon S3 中的拒絕存取 (403 Forbidden) 錯誤

拒絕存取 (HTTP403 Forbidden) 錯誤會在 AWS 明確或隱含拒絕授權要求時出現。

  • 當政策包含特定 AWS 動作的Deny陳述式時,就會發生明確拒絕

  • 如果沒有適用的 Deny 陳述式,也沒有適用的 Allow 陳述式,則會發生隱含拒絕

由於 AWS Identity and Access Management (IAM) 原則預設會隱含拒絕IAM主參與者,因此原則必須明確允許主參與者執行動作。否則,政策會隱含拒絕存取。如需詳細資訊,請參閱IAM使用指南》中的明確拒絕和隱含拒絕之間的差異。如需決定是否允許或拒絕存取要求之原則評估邏輯的相關資訊,請參閱《IAM使用指南》中的原則評估邏輯

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

注意

對於拒絕存取 (HTTP403 Forbidden) 錯誤,當請求在儲存貯體擁有者的個別 AWS 帳戶或儲存貯體擁有者的 AWS 組織外部啟動時,Amazon S3 不會向儲存貯體擁有者收取費用。

注意

如果您嘗試對權限問題進行疑難排解,請從該訪問被拒絕的消息示例以及如何解決它們區段開始,然後前往值區政策和IAM政策本節。此外,請務必遵循中的指引檢查許可的秘訣

訪問被拒絕的消息示例以及如何解決它們

重要

自 2024 年 8 月 21 日起,針對相同帳戶要求的增強型存取遭拒錯誤訊息將在未來幾週內提供。這些訊息將在所有地區提供 AWS 區域,包括 AWS GovCloud (US) Regions 和中國地區。

大多數拒絕存取錯誤訊息的格式為 User user-arn is not authorized to perform action on "resource-arn" because context。就本範例而言,用戶代碼 是沒有接收訪問權ARN限的用戶的 Amazon 資源名稱()動作 是政策拒絕的服務行動,以及 資源庫 是策略作用ARN的資源。所以此 context 欄位代表原則類型的其他內容,說明原則拒絕存取的原因。

當原則因為原則包含Deny陳述式而明確拒絕存取時,存取遭拒錯誤訊息會包含該片語with an explicit deny in a type policy。當原則隱含拒絕存取時,「拒絕存取」錯誤訊息會包含這個片語。because no type policy allows the action action

重要
  • 僅針對相同帳戶要求傳回增強型拒絕存取訊息。跨帳戶要求會傳回一般Access Denied訊息。

    如需決定是否允許或拒絕跨帳戶存取要求的原則評估邏輯的相關資訊,請參閱《IAM使用者指南》中的跨帳戶原則評估邏輯。如需瞭解如何授予跨帳戶存取權的逐步解說,請參閱範例 2:授予跨帳戶儲存貯體許可的儲存貯體擁有者

  • 針對對目錄值區發出的要求,不會傳回增強型存取遭拒錯誤訊息。目錄值區要求會傳回一般Access Denied訊息。

  • 如果相同原則類型的多個原則拒絕授權要求,則存取遭拒錯誤訊息不會指定原則數目。

  • 如果有多個原則類型拒絕授權要求,則錯誤訊息只會包含其中一種原則類型。

  • 如果存取要求因多種原因而遭到拒絕,則錯誤訊息只會包含拒絕的其中一個原因。

下列範例顯示不同類型存取遭拒錯誤訊息的格式,以及如何疑難排解每種類型的訊息。

因服務控制政策而拒絕存取 – 隱含拒絕

  1. 檢查服務控制原則 (SCPs) 中的動作是否有遺漏的Allow陳述式。對於下列範例,動作是 s3:GetObject

  2. SCP通過添加Allow聲明來更新您的。若要取得更多資訊,請參閱《使用指南》SCP中的AWS Organizations 〈更新〉

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

因服務控制政策而拒絕存取 – 明確拒絕

  1. 檢查服務控制策略(SCPs)中的操作Deny聲明。對於下列範例,動作是 s3:GetObject

  2. SCP通過刪除Deny聲明來更新您的。若要取得更多資訊,請參閱《使用指南》SCP中的AWS Organizations 〈更新〉

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

由於VPC端點策略而拒絕訪問-隱式拒絕

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

  2. 新增陳述式以更新VPC端點政Allow策。如需詳細資訊,請參閱AWS PrivateLink 指南中的更新VPC端點策略

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端點策略而拒絕訪問-明確拒絕

  1. 檢查虛擬私有雲 (VPC) 端點策略中的動作明確Deny聲明。對於下列範例,動作是 s3:GetObject

  2. 移除Deny陳述式以更新您的VPC端點政策。如需詳細資訊,請參閱AWS PrivateLink 指南中的更新VPC端點策略

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

因許可界限而拒絕存取 – 隱含拒絕

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

  2. 將陳述式新增至您的IAM政策,以更新您的Allow權限界限。如需詳細資訊,請參閱IAM使用指南中的IAM實體權限界限編輯IAM策略

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

因許可界限而拒絕存取 – 明確拒絕

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

  2. 從您的IAM政策中移除Deny陳述式,以更新您的權限界限。如需詳細資訊,請參閱IAM使用指南中的IAM實體權限界限編輯IAM策略

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

因工作階段政策而拒絕存取 – 隱含拒絕

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

  2. 透過新增 Allow 陳述式來更新您的工作階段政策。如需詳細資訊,請參閱《IAM使用指南》中的工作階段IAM策略和編輯策略

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

因工作階段政策而拒絕存取 – 明確拒絕

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

  2. 透過移除 Deny 陳述式來更新您的工作階段政策。如需詳細資訊,請參閱《IAM使用指南》中的工作階段IAM策略和編輯策略

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

因以資源為基礎的政策而拒絕存取 – 隱含拒絕

注意

以資源為基礎的政策是指儲存貯體政策和存取點政策等原則。

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

  2. 透過新增 Allow 陳述式來更新您的政策。如需詳細資訊,請參閱《IAM使用指南》中的以資源為基礎IAM策略和編輯策略

    您可能還需要調整值IgnorePublicAcls區、存取點或帳戶的封鎖公開存取設定。如需詳細資訊,請參閱 因封鎖公用存取設定而遭拒存取為您的 S3 儲存貯體設定封鎖公開存取

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

因以資源為基礎的政策而拒絕存取 – 明確拒絕

注意

以資源為基礎的政策是指儲存貯體政策和存取點政策等原則。

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

  2. 透過移除 Deny 陳述式來更新您的政策。如需詳細資訊,請參閱《IAM使用指南》中的以資源為基礎IAM策略和編輯策略

    您可能還需要調整值RestrictPublicBuckets區、存取點或帳戶的封鎖公開存取設定。如需詳細資訊,請參閱 因封鎖公用存取設定而遭拒存取為您的 S3 儲存貯體設定封鎖公開存取

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

因以身分為基礎的政策而拒絕存取 – 隱含拒絕

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

  2. 透過新增 Allow 陳述式來更新您的政策。如需詳細資訊,請參閱《IAM使用指南》中的以身分識別為基礎IAM策略和編輯策略

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

因以身分為基礎的政策而拒絕存取 – 明確拒絕

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

  2. 透過移除 Deny 陳述式來更新您的政策。如需詳細資訊,請參閱《IAM使用指南》中的以身分識別為基礎IAM策略和編輯策略

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

因封鎖公用存取設定而遭拒存取

Amazon S3 封鎖公開存取功能可提供存取點、儲存貯體和帳戶的設定,以協助您管理對 Amazon S3 資源的公開存取。如需 Amazon S3 如何定義「公開」的詳細資訊,請參閱 「公有」的意義

依預設,新的儲存貯體、存取點和物件不允許公開存取。不過,使用者可以修改值區政策、存取點原則、IAM使用者原則、物件權限或存取控制清單 (ACLs),以允許公開存取。S3 區塊公開存取設定會覆寫這些政策、許可和ACLs. 自 2023 年 4 月起,新值區預設會啟用所有「封鎖公用存取」設定。

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

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

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

Amazon S3 區塊公開存取提供的四個設定如下:

  • BlockPublicAcls— 此設定適用於PutBucketAclPutObjectAclPutObjectCreateBucketCopyObject、和POST Object請求。此設BlockPublicAcls定會導致下列行為:

    • PutBucketAcl如果指定的訪問控制列表(ACL)是公共的,則PutObjectAcl調用失敗。

    • PutObject如果要求包含公用,則呼叫會失敗ACL。

    • 如果此設定套用至帳戶,如果要求包含公用,則CreateBucket呼叫會失敗並顯示 HTTP 400 (Bad Request) 回應ACL。

    例如,當因為BlockPublicAcls設定而拒絕CopyObject要求的存取時,您會收到下列訊息:

    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 access control lists (ACLs) are blocked by the BlockPublicAcls block public access setting.
  • IgnorePublicAcls— 此IgnorePublicAcls設定會導致 Amazon S3 忽略儲存貯體及其包含的任何物件ACLs上的所有公用。如果您的請求權限僅由公眾授予ACL,則該IgnorePublicAcls設置會拒絕該請求。

    由此IgnorePublicAcls設定造成的任何拒絕都是隱含的。例如,如果因為公開而IgnorePublicAcls拒絕GetObject要求ACL,您會收到下列訊息:

    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— 此設定適用於PutBucketPolicyPutAccessPointPolicy請求。

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

    如果指定的政策 (BlockPublicPolicy針對存取點或基礎儲存貯體) 允許公開存取,則存取點的設定會導致 Amazon S3 拒絕呼叫,PutAccessPointPolicyPutBucketPolicy透過存取點進行呼叫。

    例如,當因為BlockPublicPolicy設定而拒絕PutBucketPolicy要求存取時,您會收到下列訊息:

    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 blocked by the BlockPublicPolicy block public access setting.
  • 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

如需這些設定的詳細資訊,請參閱 封鎖公開存取設定。若要檢閱和更新這些設定,請參閱設定封鎖公開存取

值區政策和IAM政策

儲存貯體層級操作

如果沒有存儲桶策略,則存儲桶隱式允許來自值區所有者帳戶中任何 AWS Identity and Access Management (IAM)身份的請求。值區也會隱含拒絕來自任何其他帳戶的任何其他IAM身分識別的要求,以及匿名 (未簽署) 要求。但是,如果沒有IAM使用者原則,請求者 (除非他們是 AWS 帳戶 root 使用者) 會隱含拒絕提出任何要求。如需有關此評估邏輯的詳細資訊,請參閱《IAM使用指南》中的判斷帳戶內是否拒絕或允許要求。

物件層級操作

如果物件是值區擁有的帳戶所擁有,則值區原則和IAM使用者原則的運作方式與物件層級作業的運作方式與執行儲存貯體層級作業的運作方式相同。例如,如果沒有儲存貯體政策,則值區會隱含地允許來自值區擁有者帳戶中任何IAM身分識別的物件要求。值區也會隱含拒絕來自任何其他帳戶的任何其他IAM身分的物件要求,以及匿名 (未簽署) 要求。不過,如果沒有IAM使用者原則,請求者 (除非他們是 AWS 帳戶 root 使用者) 會隱含拒絕發出任何物件要求。

如果物件由外部帳戶擁有,則只能透過物件存取控制清單 (ACLs) 授與物件的存取權。值區政策和使用IAM者政策仍可用於拒絕物件要求。

因此,若要確保您的儲存貯體政策或IAM使用者政策不會造成「拒絕存取」(403 禁止) 錯誤,請確定符合下列要求:

  • 對於同一帳戶存取,在儲存貯體策略或使用者策略中,對您嘗試授予權限的請求IAM者不得有明確的Deny聲明。如果您只想要使用儲存貯體原則和使用IAM者原則來授與權限,則其中一個原則中至少必須有一個Allow明確的陳述式。

  • 對於跨帳戶訪問,在存儲桶策略或用戶策略中,不得對您嘗試授予權限的請求IAM者明確Deny聲明。若要僅使用儲存貯體政策和使用IAM者政策來授與跨帳戶權限,請確定儲存貯體政策和要求者的使用IAM者政策都包含明Allow確的陳述式。

注意

儲存貯體政策中的 Allow 陳述式僅適用於同一儲存貯體擁有帳戶所擁有的物件。不過,儲存貯體政策中的 Deny 陳述式會套用至所有物件,不論物件擁有權為何。

檢視或編輯儲存貯體政策
注意

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

  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 儲存貯體清單中,選擇要檢視或建立其儲存貯體政策的儲存貯體名稱。

  4. 選擇許可索引標籤標籤。

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

若要使用 AWS Command Line Interface (AWS CLI) 檢閱或編輯值區政策,請使用get-bucket-policy指令。

注意

如果您因為儲存貯體政策不正確而遭到鎖定,請使用 AWS 帳戶 root AWS Management Console 使用者認證登入。若要重新取得儲存貯體的存取權,請務必使用 AWS 帳戶 root 使用者認證刪除不正確的值區政策。

檢查許可的秘訣

若要檢查請求者是否具有適當的許可來執行 Amazon S3 操作,請嘗試以下動作:

Amazon S3 ACL 設置

檢查ACL設定時,請先檢閱「物件擁有權」設定,以檢查值區ACLs是否已啟用。請注意,ACL權限只能用於授予權限,無法用於拒絕請求。ACLs此外,也無法用來授與要求者的存取權,而這些要求者在值區政策或IAM使用者政策中遭到明確拒絕。

「物件擁有權」會設定為套用儲存貯體擁有者強制執行。

如果已啟用值區擁有者強制執行設定,則ACL設定不太可能導致存取遭拒 (403 禁止) 錯誤,因為此設定會停用所有套ACLs用至值區和物件的設定。儲存貯體擁有者強制執行是 Amazon S3 儲存貯體的預設 (和建議) 設定。

「物件擁有權」設定會設定為儲存貯體擁有者偏好或物件寫入者

ACL在值區擁有者偏好設定或物件寫入器設定下,權限仍然有效。有兩種ACLs:桶ACLs和對象ACLs。如需這兩種類型的差異ACLs,請參閱ACL權限對應和存取原則權限

根據已拒絕請求的動作,檢查值區或物件的ACL權限

  • 如果 Amazon S3 拒絕了某個LISTGetBucketAclPUT物件或PutBucketAcl請求,請檢閱儲存貯體的ACL許可。

    注意

    您無法透過值區ACL設定授與GET物件權限。

  • 如果 Amazon S3 拒絕 S3 物件或GETPutObjectAcl求的請求,請檢閱該物件的ACL許可。

    重要

    如果擁有物件的帳戶與擁有儲存貯體的帳戶不同,則儲存貯體政策不會控制物件的存取。

針對跨帳戶物件擁有權期間來自 GET 物件請求的「拒絕存取 (403 禁止)」錯誤進行疑難排解

檢閱儲存貯體的物件擁有權設定,以判斷物件擁有者。如果您擁有物件的存取權ACLs,您也可以檢查物件擁有者的帳戶。若要檢視物件擁有者的帳戶,請檢閱 Amazon S3 主控台中的物件ACL設定。) 或者,您也可以提出 GetObjectAcl 請求以尋找物件擁有者的正式 ID,以驗證物件擁有者帳戶。根據預設,將GET要求的明確允許權限ACLs授與物件擁有者的帳戶。

在確認了物件擁有者與儲存貯體擁有者不同之後,請根據您的使用案例和存取層級,選擇下列其中一種方法來協助解決「拒絕存取 (403 禁止)」錯誤:

  • 停用 ACLs (建議使用) — 此方法將套用至所有物件,並可由值區擁有者執行。此方法會自動給與儲存貯體擁有者擁有權,並讓其完全控制儲存貯體中的每個物件。實作此方法之前,請檢查停用的先決條件ACLs。如需如何將儲存貯體設定為儲存貯體擁有者強制執行 (建議) 模式的相關資訊,請參閱在現有儲存貯體上設定物件擁有權

    重要

    若要避免發生「拒絕存取」(403 禁止) 錯誤,請務必先將ACL權限移轉至值區政策,然後再停用ACLs。如需詳細資訊,請參閱從ACL權限移轉的值區政策範例

  • 將物件擁有者變更為儲存貯體擁有者 - 此方法可套用至個別物件,但只有物件擁有者 (或具有適當許可的使用者) 才能變更物件的擁有權。可能需要PUT支付額外費用。(如需詳細資訊,請參閱 Amazon S3 定價。) 此方法授予儲存貯體擁有者物件的完整擁有權,允許儲存貯體擁有者透過儲存貯體政策控制物件的存取。

    若要變更物件的擁有權,請執行下列其中一個動作:

    • 您 (儲存貯體擁有者) 可將物件複製回儲存貯體。

    • 您可以將儲存貯體的「物件擁有權」設定變更為儲存貯體擁有者偏好。如果停用版本控制,則會覆寫儲存貯體中的物件。如果啟用了版本控制,則相同物件的重複版本將會出現在儲存貯體中,而儲存貯體擁有者可以將生命週期規則設定為過期。如需如何變更「物件擁有權」設定的指示,請參閱 設定現有儲存貯體的「物件擁有權」

      注意

      當您將「物件擁有權」設定更新為儲存貯體擁有者偏好時,此設定只會套用至上載至儲存貯體的新物件。

    • 您可以讓物件擁有者使用bucket-owner-full-control固定物件再次上傳物件ACL。

    注意

    對於跨帳戶上傳,您也可以在值區政策ACL中要求bucket-owner-full-control固定物件。如需儲存貯體政策範例,請參閱授予跨帳戶許可,以在確保儲存貯體擁有者具有完全控制時上傳物件

  • 將物件寫入者保留為物件擁有者 - 此方法不會變更物件擁有者,但可讓您個別授予物件的存取權。若要授予物件的存取權,您必須具有該物件的 PutObjectAcl 許可。然後,要修復拒絕訪問(403 禁止)錯誤,請將請求者添加為受權者以訪問對象中的對象。ACLs如需詳細資訊,請參閱配置 ACLs

S3 封鎖公開存取設定

如果失敗的請求涉及公共存取或公共政策,請檢查帳戶、儲存貯體或存取點上的 S3 封鎖公用存取設定。如需疑難排解與 S3 封鎖公用存取設定相關的拒絕存取錯誤的詳細資訊,請參閱因封鎖公用存取設定而遭拒存取

Amazon S3 加密設定

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

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

檢閱儲存貯體的伺服器端加密狀態和加密設定
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 儲存貯體清單中,選擇要檢查其加密設定的儲存貯體。

  4. 選擇屬性索引標籤。

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

若要使用檢查您的加密設定 AWS CLI,請使用get-bucket-encryption指令。

檢查物件的加密狀態
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 儲存貯體清單中,選擇包含該物件的儲存貯體名稱。

  4. 物件清單中,選擇您想要新增或變更其加密的物件名稱。

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

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

若要使用檢查物件加密狀態 AWS CLI,請使用head-object指令。

加密和許可需求

Amazon S3 支援三種類型的伺服器端加密:

  • 使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密

  • 使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 進行伺服器端加密

  • 使用客戶提供的金鑰 (SSE-C) 進行伺服器端

根據您的加密設定,確定符合下列許可需求:

  • SSE-S3 — 不需要額外的許可。

  • SSE-KMS (使用客戶管理的金鑰)-若要上傳物件,需要對的kms:GenerateDataKey AWS KMS key 權限。若要下載物件並執行物件的分段上傳,則需要KMS金鑰的kms:Decrypt權限。

  • SSE-KMS (使用 AWS 受管金鑰) — 要求者必須來自擁有aws/s3KMS金鑰的相同帳戶。請求者亦須具有正確的 Amazon S3 許可才能存取物件。

  • SSE-C (使用客戶提供的金鑰) — 不需要其他權限。您可以設定儲存貯體政策,針對儲存貯體中的物件使用客戶提供的加密金鑰來要求和限制伺服器端加密

如果物件使用客戶管理的金鑰加密,請確定KMS金鑰政策允許您執行kms:GenerateDataKeykms:Decrypt動作。如需檢查KMS金鑰原則的指示,請參閱AWS Key Management Service 開發人員指南中的檢視金鑰政策

S3 物件鎖定設定

如果您的儲存貯體已啟用 S3 物件鎖定,且物件受到保留期法務保存的保護,則在您嘗試刪除物件時,Amazon S3 會傳回「拒絕存取 (403 禁止)」錯誤。

檢查儲存貯體是否已啟用物件鎖定
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 儲存貯體清單中,選擇您要檢閱的儲存貯體名稱。

  4. 選擇屬性索引標籤。

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

若要判斷物件是否受到保留期或法務保存保護,請檢視物件的鎖定資訊

如果物件受到保留期或法務保存保護,請檢查下列情況:

  • 如果物件版本受到合規保留模式保護,則沒有任何方式可將其永久刪除。來自任何DELETE請求者 (包括 AWS 帳戶 root 使用者) 的永久要求都會導致「拒絕存取」(403 禁止) 錯誤。此外,請注意,當您針對受合規保留模式保護的物件提交 DELETE 請求時,Amazon S3 會為該物件建立刪除標記

  • 如果物件版本受控管保留模式保護,且您具有 s3:BypassGovernanceRetention 許可,您可以略過保護並永久刪除版本。如需詳細資訊,請參閱繞過控管模式

  • 如果物件版本受法務保存保護,則永久 DELETE 請求可能會導致「拒絕存取 (403 禁止)」錯誤。若要永久刪除物件版本,您必須移除物件版本上的法務保存。若要移除法務保存,您必須具有 s3:PutObjectLegalHold 許可。如需移除法務保存的詳細資訊,請參閱 設定 S3 物件鎖定

VPC端點策略

如果您使用虛擬私有雲端 (VPC) 端點存取 Amazon S3,請確保VPC端點政策不會阻止您存取 Amazon S3 資源。根據預設,VPC端點政策允許向 Amazon S3 發出所有請求。您也可以設定VPC端點策略來限制特定要求。有關如何檢查VPC端點策略的詳細資訊,請參閱AWS PrivateLink 指南的使用VPC端點策略控制端點的存取。

AWS Organizations 政策

如果您 AWS 帳戶 屬於某個組織, AWS Organizations 政策可能會阻止您存取 Amazon S3 資源。根據預設, AWS Organizations 政策不會封鎖任何向 Amazon S3 發出的請求。不過,請確定您的 AWS Organizations 政策尚未設定為封鎖 S3 儲存貯體的存取。如需如何檢查 AWS Organizations 政策的指示,請參閱AWS Organizations 使用指南》中的「列出所有政策」。

存取點設定

如果您在透過 Amazon S3 存取點提出請求時收到「拒絕存取 (403 禁止)」錯誤,則可能需要檢查下列事項:

  • 存取點的組態

  • 用於存取點的使用IAM者原則

  • 用來管理或設定跨帳戶存取點的儲存貯體政策

存取點組態與政策
  • 建立存取點時,您可以選擇指定網網路或VPC網路原點。如果網路原點設定為「VPC僅」,Amazon S3 將拒絕對非來自指定VPC之存取點發出的任何請求。若要檢查存取點的網路原點,請參閱 建立受限於 Virtual Private Cloud 的存取點

  • 使用存取點,您也可以設定自訂的「封鎖公開存取」設定,其運作方式與儲存貯體或帳戶層級的「封鎖公開存取」設定類似。若要檢查您的自訂「封鎖公開存取」設定,請參閱 管理存取點的公開存取

  • 若要使用存取點成功向 Amazon S3 發出請求,請確保請求者具有必要的IAM許可。如需詳細資訊,請參閱設IAM定使用存取點的原則

  • 如果請求涉及跨帳戶存取點,請確定儲存貯體擁有者已更新儲存貯體政策,以授權來自存取點的請求。如需詳細資訊,請參閱授予跨帳戶存取點的許可

如果檢查本主題中的所有項目後,拒絕存取 (403 禁止) 錯誤仍然存在,請擷取您的 Amazon S3 請求 ID 並聯絡 AWS Support 以取得其他指引。