如何排查所有资源均来自同一 AWS 账户的 Amazon S3 存储桶的“403 Access Denied(403 访问被拒绝)”错误?
我正在尝试访问我的 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 Manager 的 AWSSupport-TroubleshootS3AccessSameAccount 运行手册,来帮助您诊断 S3 存储桶中的访问被拒绝问题。此运行手册可评估授予请求者对同一 AWS 账户中所有相关资源的 S3 资源的访问级别。其中包括基于访问、用户和资源的策略,这些策略与 S3 资源以及输入参数中指定的 AWS Identity and Access Management(IAM)用户或角色关联。
**注意:**AWSSupport-TroubleshootS3AccessSameAccount 不会评估跨账户资源的权限。此外,请求者必须与 S3 存储桶或对象位于同一个 AWS 账户中。
解决方法
必要步骤
请按照以下步骤,从 Systems Manager 控制台运行 AWSSupport-TroubleshootS3AccessSameAccount 运行手册:
2. 在导航窗格中,选择 Automation(自动化)。
3. 选择 Execute automation(执行自动化)。
4. 在 Choose document(选择文档)下,选择 Owned by Amazon(由 Amazon 所有)选项卡。
5. 在自动化文档搜索栏中,从下拉列表中选择 Document name prefix(文档名称前缀)筛选器。然后,从下拉列表中选择 Equals(等于),然后输入 AWSSupportTroubleshootS3AccessSameAccount。然后,按 Enter 键。
6. 选择 AWSSupport-TroubleshootS3AccessSameAccount。
7. 选择 Next(下一步)。
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 command and shareable execution link(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"
}
]
}

相关内容
- 已提问 1 个月前lg...
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- AWS 官方已更新 7 个月前
- AWS 官方已更新 8 个月前