すべてのリソースが同じ AWS アカウントに属している Amazon S3 バケットの「403 Access Denied」(403 アクセス拒否) エラーをトラブルシューティングするにはどうすればよいですか?

最終更新日: 2022 年 10 月 13 日

Amazon Simple Storage Service (Amazon S3) バケットにアクセスしようとしています。関連するリソースはすべて同じ AWS アカウントに属しています。しかし、「403 Access Denied」(403 アクセス拒否) エラーが表示されています。

簡単な説明

Amazon S3 バケットに対して禁止リクエストを実行すると、サービスは「403 Access Denied」(403 アクセス拒否) エラーを返します。「403 Access Denied」(403 アクセス拒否) エラーを手動でトラブルシューティングするには、「Amazon S3 から「403 Access Denied」(403 アクセス拒否) エラーをトラブルシューティングする方法とは?」を参照してください。

AWS Systems ManagerAWSSupport-TroubleshootS3AccessSameAccount ランブックを使用して、S3 バケットからのアクセス拒否の問題の診断に役立てることもできます。ランブックは、同じ AWS アカウントのすべての関連リソースについて、S3 リソースのリクエスタに付与されたアクセス権のレベルを評価します。これには、S3 リソースと、入力パラメータで指定された AWS Identity and Access Management (IAM) ユーザーまたはロールに関連付けられたアクセス、ユーザー、およびリソースベースのポリシーが含まれます。

注: AWSSupport-TroubleshootS3AccessSameAccount では、クロスアカウントリソースの許可は評価されません。また、リクエスタは S3 バケットまたはオブジェクトと同じ AWS アカウントに属している必要があります。

解決方法

必要なステップ

Systems Manager コンソールから AWSSupport-TroubleshootS3AccessSameAccount ランブックを実行するには、次のステップに従います。

1.    Systems Manager コンソールを開きます

2.    ナビゲーションペインで [オートメーション] を選択します。

3.    [Execute automation] (オートメーションの実行) を選択します。

4.    [Choose document] (ドキュメントの選択) で、[Owned by Amazon] (Amazon 所有) タブを選択します。

5.    オートメーションドキュメント検索バーで、ドロップダウンリストから [Document name prefix] (ドキュメント名プレフィックス) フィルターを選択します。その後、ドロップダウンリストから [Equals] (次と等しい:) を選択し、AWSSupportTroubleshootS3AccessSameAccount と入力します。その後、Enter キーを押します。

6.    [AWSSupport-TroubleshootS3AccessSameAccount] を選択します。

7.    [次へ] を選択します。

8.    [Simple execution] (シンプルな実行) を選択します。

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-role

12.    [Execute] (実行) を選択します。

ドキュメントの進行状況を追跡するには、[Execution] (実行) ステータスを使用します。ステータスが [Success] (成功) に変わったら、[Outputs] (出力) セクションでリストされる結果を確認します。結果には、評価される各オブジェクトのエラーコードが含まれます。

注: 評価の個別のステップの結果を確認するには、[Executed steps] (実行されたステップ) で関連する [Step ID] (ステップ 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 を入力します。値を入力したら、改行、タブ、空白を削除してください。

注: Organization の管理アカウントからランブックを実行する場合、前述のステップは必要ありません。

[Tags] (タグ) で、分類しやすいように、オートメーションにタグを付けることができます。

AWS CLI コマンドと共有可能な実行リンクについては、Linux、Unix、macOS X 向けの AWS コマンドラインインターフェイス (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"
    }
  ]
}

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?