如何對所有資源均來自相同 AWS 帳戶的 Amazon S3 儲存貯體「403 存取遭拒」錯誤進行疑難排解?

2 分的閱讀內容
0

我想要存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體。所有相關資源均來自相同的 AWS 帳戶。但我收到「403 存取遭拒」的錯誤。

簡短描述

如果您對 Amazon S3 儲存貯體執行禁止的請求,服務即會傳回「403 存取遭拒」的錯誤。若要手動對「403 存取遭拒」錯誤進行疑難排解,請參閱如何對 Amazon S3 的「403 存取遭拒」錯誤進行疑難排解?

您還可以使用 AWS Systems ManagerAWSSupport-TroubleshootS3AccessSameAccount 執行手冊,以協助您診斷 Amazon S3 儲存貯體的存取遭拒問題。該執行手冊會針對來自相同 AWS 帳戶的所有相關資源,評估授予請求者對 Amazon S3 資源的存取層級。這包括與 Amazon S3 資源相關聯的存取、使用者和資源型政策。它還包括在輸入參數中指定的 AWS Identity and Access Management (IAM) 使用者或角色。

**注意:**AWSSupport-TroubleshootS3AccessSameAccount 不會評估跨帳戶資源的權限。此外,請求者還必須與 Amazon S3 儲存貯體或物件位於相同的 AWS 帳戶。

解決方法

必要步驟

請依照這些步驟從 Systems Manager 主控台執行 AWSSupport-TroubleshootS3AccessSameAccount 執行手冊:

1.    開啟 Systems Manager 主控台

2.    在導覽窗格中,選擇自動化

3.    選擇執行自動化

4.    在「選擇文件」下方,選擇由 Amazon 擁有索引標籤。

5.    在「自動化文件」搜尋列中,從下拉式清單中選擇文件名稱前綴篩選條件。然後,從下拉式清單中選擇等於並輸入 AWSSupport-TroubleshootS3AccessSameAccount。接著,按 Enter 鍵

6.    選取 AWSSupport-TroubleshootS3AccessSameAccount

7.    選擇下一步

8.    選取簡單執行

9.    對於 S3ResourceArn,輸入您要疑難排解 S3 儲存貯體或物件的 ARN。例如,測試物件上傳或下載。

arn:aws:s3:::bucket_name/key_name

10.    對於 S3Action,選擇您要執行手冊評估的 S3 動作。

11.    對於 RequesterARN,輸入您要在特定 S3 資源上尋找其存取層級的 IAM 使用者或角色 ARN:

arn:aws:iam::123456789012:user/user_name or arn:aws:iam::123456789012:role/example-rol

12.    選擇執行

使用執行狀態追蹤文件進度。狀態變更為成功後,請檢閱輸出區段中列出的結果。結果包括每個經過評估之物件的錯誤碼。
注意:若要檢閱評估中個別步驟的結果,請在「已執行步驟」下方選擇相關的步驟 ID

選用步驟

以下為選用步驟。

  • 對於 AutomationAssumeRole,您可以選取要讓 Systems Manager 擔任的 IAM 角色,以將請求傳送至的儲存貯體。如果您將此欄位保留空白,Systems Manager 即會使用您用於設定文件的 IAM 身分。如需相關資訊,請參閱 AutomationAssumeRole 的必要 IAM 權限一節。
    **重要:**您選取的 IAM 角色信任政策必須允許 Systems Manager Automation 擔任該角色。同時,IAM 角色必須具有執行 AWSSupport-TroubleshootS3AccessSameAccount 執行手冊的權限。

  • 如果 IAM ARN 是一個角色,而且您想提供特定工作階段名稱,請為 RequesterRoleSessionName 輸入工作階段名稱。

  • 如果物件有多個版本,則為 S3ObjectVersionId 輸入物件的 VersionId。此參數可讓您指定要評估存取內容的物件版本。

  • 如果這與動作相關,則為 KmsKeyArn 輸入 KMS 金鑰 ARN。例如,測試使用 KMS 金鑰加密物件的下載。

  • 對於 VpcEndpointId,您可以輸入與存取評估相關的 Amazon Virtual Private Cloud (Amazon VPC) 端點 ID。Amazon S3 儲存貯體政策可以控制從特定 Amazon VPC 端點存取儲存貯體。

  • 對於 ContextKeyList,您可以輸入條件內容金鑰清單,以及與政策評估相關的對應值。例如,儲存貯體政策中對 PutObject 的明確拒絕:

    {"ContextKeyName":"s3:x-amz-server-side-encryption-aws-kms-key-id","ContextKeyValues':["arn:aws:kms:us-east-1:123456789012:key/abc12345-b1e9-45a3-aa90-39ec93dd9b82'],"ContextKeyType":"string'}
  • 如果您要執行手冊將輸入與特定 AWS Organizations 服務控制政策 (SCP) 進行比較,則對 SCPPolicy 輸入 SCP。當您輸入值時,請移除任何新行、定位點或空格。如果從組織的管理帳戶執行您的執行手冊,則不需要進行此步驟。

  • 對於標籤,您可以標記自動化以協助進行分類。

  • 對於 AWS CLI 命令和可共享的執行連結,執行手冊會提供適用於 Linux、Unix 及 macOS X 的範例 AWS Command Line Interface (AWS CLI) 命令。執行手冊還提供可共用的連結。

AutomationAssumeRole 的必要 IAM 權限

AutomationAssumeRole 參數需要某些動作才能使用執行手冊。

下列範例政策包括自動化角色的必要動作:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iam:SimulateCustomPolicy",
        "iam:GetUser",
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListAttachedUserPolicies",
        "iam:ListUserPolicies",
        "iam:GetUserPolicy",
        "iam:ListGroupsForUser",
        "iam:ListGroupPolicies",
        "iam:GetGroupPolicy",
        "iam:ListAttachedGroupPolicies",
        "iam:GetRole",
        "iam:GetRolePolicy",
        "iam:ListAttachedRolePolicies",
        "iam:ListRolePolicies"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetObjectAcl",
        "s3:GetObjectVersionAcl",
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": "arn:aws:s3:::bucket_name/destination-prefix",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetBucketPolicy",
        "s3:GetBucketAcl",
        "s3:ListBucket",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::bucket_name",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ec2:DescribeVpcEndpoints"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "kms:GetKeyPolicy"
      ],
      "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "Effect": "Allow"
    },
    {
      "Action": [
        "organizations:ListPolicies",
        "organizations:DescribePolicy"
      ],
      "Resource": "arn:aws:organizations::aws:policy/service_control_policy/*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:GetAutomationExecution",
        "ssm:DescribeAutomationExecutions"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "ssm:StartAutomationExecution",
      "Resource": "arn:aws:ssm:*:*:automation-definition/AWSSupport-TroubleshootS3AccessSameAccount:*",
      "Effect": "Allow",
      "Sid": "StartAutomationExecution"
    },
    {
      "Action": "access-analyzer:ValidatePolicy",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}