すべてのリソースが同じ AWS アカウントからのものである場合、Amazon S3 バケットからの 403 アクセス拒否エラーをトラブルシューティングする方法を教えてください。

所要時間2分
0

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

簡単な説明

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

また、AWS Systems ManagerAWS Support-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.    オートメーションドキュメントの検索バーで、ドロップダウンリストから [ドキュメント名のプレフィックス] フィルターを選択します。次に、ドロップダウンリストから [等しい] を選択し、「AWSSupportTroubleshootS3AccessSameAccount」と入力します。その後 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 ID を使用します。詳細については、「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 を入力します。値を入力する際は、改行、タブ、または空白をすべて削除します。組織の管理アカウントからランブックを実行する場合は、前述の手順は必要ありません。

  • [Tags] では、オートメーションにタグを付けて分類しやすくできます。

  • AWS CLI コマンドと共有可能な実行リンクについては、ランブックに Linux、Unix、macOS 用の 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"
    }
  ]
}
コメントはありません

関連するコンテンツ