拒絕對存取進行故障診斷 (403 Forbidden) Amazon S3 中的錯誤 - Amazon Simple Storage Service

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

拒絕對存取進行故障診斷 (403 Forbidden) Amazon S3 中的錯誤

當 AWS 明確或隱含拒絕授權請求時,會出現存取遭拒 (HTTP 403 Forbidden) 錯誤。

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

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

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

如需依 S3 資源類型進行 S3 API 操作之許可的詳細資訊,請參閱 Amazon S3 API 操作的必要許可

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

注意

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

注意

如果您嘗試疑難排解許可問題,請從 存取拒絕的訊息範例,以及如何進行疑難排解區段開始,然後前往 儲存貯體政策和 IAM 政策區段。此外,請務必遵循 中的指引檢查許可的秘訣

存取拒絕的訊息範例,以及如何進行疑難排解

Amazon S3 現在會在存取遭拒 (HTTP403 Forbidden) 錯誤中包含對相同資源提出請求的其他內容 AWS 帳戶。此新內容包括拒絕存取的政策類型、拒絕原因,以及請求存取資源的 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)動作 是政策拒絕的服務動作,以及 resource-arn 是政策在其上執行動作之資源的 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. 檢查 資源控制政策 (RCPs) 中動作的Deny陳述式。對於下列範例,動作是 s3:GetObject

  2. 移除 Deny陳述式以更新您的 RCP。如需詳細資訊,請參閱 AWS Organizations 使用者指南中的更新資源控制政策 (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

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

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

  2. 新增 Allow陳述式以更新您的 SCP。如需詳細資訊,請參閱 AWS Organizations 使用者指南中的更新 SCP

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. 檢查 Service Control 政策 (SCPs) 中是否有動作的Deny陳述式。對於下列範例,動作是 s3:GetObject

  2. 透過變更Deny陳述式來更新 SCP,以允許使用者必要的存取。如需如何執行此操作的範例,請參閱 AWS Organizations 使用者指南中的防止 IAM 使用者和角色進行指定的變更,指定管理員角色的例外狀況除外。如需更新 SCP 的詳細資訊,請參閱 AWS Organizations 使用者指南中的更新 SCP

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. 新增 Allow陳述式以更新您的 VPC 端點政策。如需詳細資訊,請參閱 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 端點政策,以允許使用者必要的存取。例如,您可以更新Deny陳述式,將aws:PrincipalAccount條件索引鍵與StringNotEquals條件運算子搭配使用,以允許特定主體存取,如 所示範例 7:從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. Allow 陳述式新增至 IAM 政策,以更新許可界限。如需詳細資訊,請參閱 IAM 使用者指南中的 Word 實體和編輯 Word 政策的許可界限 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陳述式來更新許可界限,以允許使用者必要的存取。例如,您可以更新Deny陳述式,將aws:PrincipalAccount條件索引鍵與StringNotEquals條件運算子搭配使用,以允許特定主體存取,如 所示 aws:PrincipalAccount (在 IAM 使用者指南中) 如需詳細資訊,請參閱 IAM 使用者指南中的 Word 實體和編輯 Word 政策的許可界限 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 陳述式來更新您的工作階段政策。如需詳細資訊,請參閱 Word 使用者指南中的工作階段政策和編輯 Word 政策。 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 陳述式來更新工作階段政策,以允許使用者必要的存取。例如,您可以更新Deny陳述式,將aws:PrincipalAccount條件索引鍵與StringNotEquals條件運算子搭配使用,以允許特定主體存取,如 所示範例 7:從Deny陳述式中排除特定主體。如需更新工作階段政策的詳細資訊,請參閱 Word 使用者指南中的工作階段政策和編輯 Word 政策。 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 Block Public Access 設定是否套用至儲存貯體、存取點或帳戶層級。對於下列範例,動作是 s3:GetObject

  2. 透過新增 Allow 陳述式來更新您的政策。如需詳細資訊,請參閱 Word 使用者指南中的資源型政策和編輯 Word 政策。 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 Block Public Access 設定是否套用至儲存貯體、存取點或帳戶層級。對於下列範例,動作是 s3:GetObject

  2. 透過變更 Deny 陳述式來更新政策,以允許使用者必要的存取。例如,您可以更新Deny陳述式,將aws:PrincipalAccount條件索引鍵與StringNotEquals條件運算子搭配使用,以允許特定主體存取,如 所示範例 7:從Deny陳述式中排除特定主體。如需更新資源型政策的詳細資訊,請參閱 Word 使用者指南中的資源型政策和編輯 Word 政策。 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 陳述式來更新您的政策。如需詳細資訊,請參閱 Word 使用者指南中的身分型政策和編輯 Word 政策。 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 陳述式來更新政策,以允許使用者必要的存取。例如,您可以更新Deny陳述式,將aws:PrincipalAccount條件索引鍵與StringNotEquals條件運算子搭配使用,以允許特定主體存取,如 所示 aws:PrincipalAccount (在 IAM 使用者指南中) 如需詳細資訊,請參閱 Word 使用者指南中的身分型政策和編輯 Word 政策。 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 Block Public Access 提供的四個設定如下:

  • BlockPublicAcls – 此設定適用於 PutBucketAclPutObjectAclPutObjectCreateBucketCopyObjectPOST Object請求。BlockPublicAcls 設定會導致下列行為:

    • PutBucketAcl 如果指定的存取控制清單 (ACL) 為公有,則 和 PutObjectAcl呼叫會失敗。

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

    • 如果此設定套用至帳戶,則如果請求包含公有 HTTP,CreateBucket則呼叫會失敗並顯示 ACL 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 access control lists (ACLs) are blocked by the BlockPublicAcls block public access setting.
  • IgnorePublicAclsIgnorePublicAcls設定會導致 Amazon S3 忽略儲存貯體上的所有公有 ACLs 及其包含的任何物件。如果您請求的許可僅由公有 ACL 授予,則IgnorePublicAcls設定會拒絕請求。

    IgnorePublicAcls設定而產生的任何拒絕都是隱含的。例如,如果因為公有 ACL IgnorePublicAcls拒絕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 – 此設定適用於 PutBucketPolicyPutAccessPointPolicy請求。

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

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

    例如,當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 blocked by the BlockPublicPolicy block public access setting.
  • RestrictPublicBucketsRestrictPublicBuckets設定限制存取具有公有政策的存取點或儲存貯體,僅限於儲存貯體擁有者帳戶和存取點擁有者帳戶中的 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 帳戶 根使用者) 會隱含拒絕提出任何請求。如需此評估邏輯的詳細資訊,請參閱 IAM 使用者指南中的判斷 帳戶內是否拒絕或允許請求

物件層級操作

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

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

因此,為了確保您的儲存貯體政策或 IAM 使用者政策不會導致存取遭拒 (403 禁止) 錯誤,請確定符合下列要求:

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

  • 對於跨帳戶存取,對於您嘗試在儲存貯體政策或 IAM 使用者政策中授予許可的請求者,不得有明確Deny陳述式。若要僅使用儲存貯體政策和 IAM 使用者政策授予跨帳戶許可,請確定請求者的儲存貯體政策和 IAM 使用者政策都包含明確Allow陳述式。

注意

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

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

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

  1. 登入 AWS Management Console 並在 Word 開啟 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 Management Console 請使用您的 AWS 帳戶 根使用者憑證登入 。若要重新取得儲存貯體的存取權,請務必使用您的 AWS 帳戶 根使用者憑證刪除不正確的儲存貯體政策。

檢查許可的秘訣

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

Amazon S3 ACL 設定

檢查 ACL 設定時,請先檢閱物件擁有權設定,以檢查儲存貯體上是否已啟用 ACLs。請注意,ACL 許可只能用於授予許可,不能用於拒絕請求。ACLs 也無法用來授予請求者的存取權,因為儲存貯體政策或 IAM 使用者政策中有明確拒絕。

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

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

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

對於儲存貯體擁有者偏好設定或物件寫入器設定,ACL 許可仍然有效。ACLs 有兩種:儲存貯體 ACLs 和物件 ACLs。如需這兩種 ACLs 類型之間的差異,請參閱映射 ACL 許可和存取政策許可

根據拒絕請求的動作,檢查儲存貯體或物件的 ACL 許可

  • 如果 Amazon S3 拒絕 LISTPUT物件GetBucketAcl、 或 PutBucketAcl請求,請檢閱儲存貯體的 ACL 許可

    注意

    您無法使用儲存貯體 ACL 設定授予GET物件許可。

  • 如果 Amazon S3 拒絕 S3 物件的GET請求,或 PutObjectAcl 請求,然後檢閱物件的 ACL 許可

    重要

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

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

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

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

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

    重要

    若要防止存取遭拒 (403 禁止) 錯誤,請務必先將 ACL 許可遷移至儲存貯體政策,然後再停用 ACLs。如需詳細資訊,請參閱從 ACL 許可遷移的儲存貯體政策範例

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

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

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

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

      注意

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

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

    注意

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

  • 將物件寫入者保留為物件擁有者 - 此方法不會變更物件擁有者,但可讓您個別授予物件的存取權。若要授予物件的存取權,您必須具有該物件的 PutObjectAcl 許可。然後,若要修正存取遭拒 (403 禁止) 錯誤,請將請求者新增為授予者,以存取物件 ACLs 中的物件。如需詳細資訊,請參閱設定 ACLs

S3 封鎖公開存取設定

如果失敗的請求涉及公有存取或公有政策,請檢查您帳戶、儲存貯體或存取點上的 S3 封鎖公有存取設定。如需針對與 S3 Block Public Access 設定相關的存取遭拒錯誤進行疑難排解的詳細資訊,請參閱 由於封鎖公開存取設定而拒絕存取

Amazon S3 加密設定

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

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

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

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

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

  4. 選擇屬性索引標籤。

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

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

檢查物件的加密狀態
  1. 登入 AWS Management Console 並在 Word 開啟 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 (使用客戶受管金鑰) – 若要上傳物件, AWS KMS key 需要 上的kms:GenerateDataKey許可。若要下載物件並執行物件的分段上傳,需要 KMS 金鑰的kms:Decrypt許可。

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

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

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

S3 物件鎖定設定

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

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

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

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

  4. 選擇屬性索引標籤。

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

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

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

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

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

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

VPC 端點政策

如果您使用虛擬私有雲端 (VPC) 端點來存取 Amazon S3,請確定 VPC 端點政策並未封鎖您存取 Amazon S3 資源。依預設,VPC 端點政策允許 Amazon S3 的所有請求。您也可以設定 VPC 端點政策來限制特定請求。如需有關如何檢查 VPC 端點政策的資訊,請參閱下列資源:

AWS Organizations 政策

如果您的 AWS 帳戶 屬於組織, AWS Organizations 政策可能會封鎖您存取 Amazon S3 資源。根據預設, AWS Organizations 政策不會封鎖對 Amazon S3 的任何請求。不過,請確定您的 AWS Organizations 政策尚未設定為封鎖對 S3 儲存貯體的存取。如需如何檢查 AWS Organizations 政策的指示,請參閱下列資源:

此外,如果您為成員帳戶設定了儲存貯體政策,以拒絕所有使用者存取 S3 儲存貯體,您可以透過在 IAM 中啟動成員帳戶的特權工作階段來解除鎖定儲存貯體。啟動特殊權限工作階段後,您可以刪除設定錯誤的儲存貯體政策,以重新取得儲存貯體的存取權。如需詳細資訊,請參閱 AWS Identity and Access Management 使用者指南中的在 AWS Organizations 成員帳戶上執行特殊權限任務

存取點設定

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

  • 存取點的組態

  • 用於存取點的 IAM 使用者政策

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

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

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

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

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

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