如何排查所有资源均来自同一 AWS 账户的 Amazon S3 桶的“403 访问被拒绝”错误?
我想要访问我的 Amazon Simple Storage Service(Amazon S3)桶。所有相关资源均来自同一 AWS 账户。但是,我收到了一个“403 访问被拒绝”错误。
简短描述
当您对 Amazon S3 桶执行被禁止的请求时,该服务会返回“403 访问被拒绝”错误。要手动排查“403 访问被拒绝”错误,请参阅如何排查 Amazon S3 的“403 访问被拒绝”错误?
您还可以使用 AWS Systems Manager 的 AWSSupport-TroubleshootS3AccessSameAccount 运行手册,以协助您诊断 Amazon S3 桶的访问被拒绝问题。针对来自同一 AWS 账户的所有相关资源,该运行手册会评估在 Amazon S3 资源上授予请求者的资源访问权限级别。这包括与 Amazon S3 资源关联的访问策略、用户策略和基于资源的策略。它还包括在输入参数中指定的 AWS Identity and Access Management(IAM)用户或角色。
**注意:**AWSSupport-TroubleshootS3AccessSameAccount 不对跨账户资源的权限进行评估。此外,请求者必须与 Amazon S3 桶或对象处于同一 AWS 账户。
解决方法
必要步骤
按照以下步骤从 Systems Manager 控制台运行 AWSSupport-TroubleshootS3AccessSameAccount 运行手册:
2. 在导航窗格中,选择自动化。
3. 选择执行自动化。
4. 在“选择文档”下选择由 Amazon 拥有选项卡。
5. 在自动化文档搜索栏中,从下拉列表中选择文档名称前缀筛选器。然后从下拉列表中选择相等,并输入 AWSSupport-TroubleshootS3AccessSameAccount。然后按确认。
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 的 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" } ] }

相关内容
- AWS 官方已更新 6 个月前