すべてのリソースが同じ AWS アカウントからのものである場合、Amazon S3 バケットからの 403 アクセス拒否エラーをトラブルシューティングする方法を教えてください。
Amazon Simple Storage Service (Amazon S3) バケットにアクセスしたいと考えています。関連するリソースはすべて同じ AWS アカウントからのものです。しかし、「403 アクセスが拒否されました」というエラーが表示されます。
簡単な説明
Amazon S3 バケットに対して禁止リクエストを実行すると、サービスにより「403 アクセス拒否」エラーが返されます。403 アクセス拒否エラーを手動でトラブルシューティングするには、「Amazon S3 からの 403 アクセス拒否エラーをトラブルシューティングするにはどうすればよいですか?」を参照してください。
また、AWS Systems Manager の AWS 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" } ] }
関連するコンテンツ
- 質問済み 4年前lg...
- 質問済み 1年前lg...
- 質問済み 6年前lg...
- AWS公式更新しました 1年前