AWSSupport-TroubleshootS3PublicRead - AWS Systems Manager 自动化运行手册参考

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWSSupport-TroubleshootS3PublicRead

描述

AWSSupport-TroubleshootS3PublicRead 运行手册将诊断从您在 S3BucketName 参数中指定的公有 Amazon Simple Storage Service (Amazon S3) 存储桶读取对象时遇到的问题。还会分析 S3 存储桶中对象的设置子集。

运行此自动化(控制台)

限制

  • 此自动化不会检查是否存在允许对对象进行公共访问的接入点。

  • 此自动化不会评估 S3 存储桶策略中的条件密钥。

  • 如果您使用的是 AWS Organizations,此自动化不会评估服务控制策略以确认是否允许访问 Amazon S3。

文档类型

自动化

所有者

Amazon

平台

Linux、macOS、Windows

参数

  • AutomationAssumeRole

    类型:字符串

    描述:(可选)允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称(ARN)。如果未指定角色,Systems Manager Automation 将使用启动此运行手册的用户的权限。

  • CloudWatchLogGroupName

    类型:字符串

    描述:(可选)您要向其中发送自动化输出的 Amazon CloudWatch 日志组。如果找不到与您指定的值匹配的日志组,此自动化将使用该参数值创建一个日志组。此自动化创建的日志组的保留期为 14 天。

  • CloudWatchLogStreamName

    类型:字符串

    描述:(可选)您要将自动化输出发送到的 CloudWatch 日志日志流。如果找不到与您指定的值匹配的日志流,此自动化将使用该参数值创建一个日志流。如果您未为该参数指定一个值,此自动化将使用 ExecutionId 作为日志流的名称。

  • HttpGet

    类型:布尔值

    有效值:true | false

    默认:True

    描述:(可选)如果此参数设置为 true,此自动化将对您在 S3BucketName 中指定的对象发出部分 HTTP 请求。使用 Range HTTP 标头仅返回对象的第一个字节。

  • IgnoreBlockPublicAccess

    类型:布尔值

    有效值:true | false

    默认值:false

    描述:(可选)如果此参数设置为 true,则此自动化将忽略您在 S3BucketName 参数中指定的 S3 存储桶的公共访问屏蔽设置。不建议更改该参数的默认值。

  • MaxObjects

    类型:整数

    有效值:1-25

    默认:5

    描述:(可选)您在 S3BucketName 参数中指定的 S3 存储桶中要分析的对象数量。

  • S3 BucketName

    类型:字符串

    描述:(必需)要排查问题的 S3 存储桶的名称。

  • S3 PrefixName

    类型:字符串

    描述:(可选)要在 S3 存储桶中分析的对象的密钥名称前缀。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的对象密钥

  • StartAfter

    类型:字符串

    描述:(可选)您希望此自动化开始分析 S3 存储桶中对象的对象密钥名称。

  • ResourcePartition

    类型:字符串

    有效值:aws |aws-us-gov |aws-cn

    默认:aws

    描述:(必需)您的 S3 存储桶所在的分区。

  • 详细

    类型:布尔值

    有效值:true | false

    默认值:false

    描述:(可选)要在自动化期间返回更多详细信息,请将此参数设置为 true。如果将此参数设置为 false,则只会返回警告和错误消息。

所需的 IAM 权限

AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。

仅当您希望自动化将logs:CreateLogGroup日志数据发送到 Log CloudWatch s 时,才需要logs:CreateLogStream、和logs:PutLogEvents权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:SimulateCustomPolicy", "iam:GetContextKeysForCustomPolicy", "s3:ListAllMyBuckets", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy", "s3:GetAccountPublicAccessBlock" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Effect": "Allow" }, { "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:GetBucketPublicAccessBlock", "s3:GetBucketRequestPayment", "s3:GetBucketPolicyStatus", "s3:GetBucketPolicy", "s3:GetBucketAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1", "Effect": "Allow" } ] }

文档步骤

  • aws:assertAwsResourceProperty - 确认 S3 存储桶存在并且可以访问。

  • aws:executeScript - 返回 S3 存储桶位置和您的规范用户 ID。

  • aws:executeScript - 返回对您的账户和 S3 存储桶的公共访问屏蔽设置。

  • aws:assertAwsResourceProperty - 确认 S3 存储桶付款方被设置为 BucketOwner。如果在 S3 存储桶上启用 Requester Pays,此自动化将结束。

  • aws:executeScript - 返回 S3 存储桶策略状态并确定其是否被视为公开。有关公有 S3 存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》“公有”的含义

  • aws:executeAwsApi - 返回 S3 存储桶策略。

  • aws:executeAwsApi - 返回在 S3 存储桶策略中找到的所有上下文键。

  • aws:assertAwsResourceProperty - 确认 S3 存储桶策略中是否有对 GetObject API 操作的明确拒绝。

  • aws:executeAwsApi - 返回 S3 桶的访问控制列表 (ACL)。

  • aws:executeScript-如果您为CloudWatchLogGroupName参数指定值,则创建 CloudWatch 日志组和日志流。

  • aws:executeScript - 根据您在运行手册输入参数中指定的值,评估自动化期间收集的任何 S3 存储桶设置是否阻止对象被公众访问。此脚本执行以下功能:

    • 评估公共访问屏蔽设置

    • 根据您在 MaxObjectsS3PrefixNameStartAfter 参数中指定的值返回 S3 存储桶中的对象。

    • 返回 S3 存储桶策略,以模拟从 S3 存储桶返回的对象的自定义 IAM policy。

    • 如果 HttpGet 参数设置为 true,则对返回的对象执行部分 HTTP 请求。使用 Range HTTP 标头仅返回对象的第一个字节。

    • 检查返回的对象的键名以确认它是以一个还是两个句点结尾。无法从 Amazon S3 控制台下载以句点结尾的对象键名。

    • 检查返回的对象的所有者是否匹配 S3 存储桶的所有者。

    • 检查对象的 ACL 是否向匿名用户授予 READFULL_CONTROL 权限。

    • 返回与对象关联的标签。

    • 使用模拟的 IAM policy 确认 GetObject API 操作的 S3 存储桶策略中是否明确拒绝此对象。

    • 返回对象的元数据以确认是否支持该存储类别。

    • 检查对象的服务器端加密设置,以确认是否使用 AWS Key Management Service (AWS KMS) 客户管理的密钥对对象进行加密。

输出

AnalyzeObjects.buck

AnalyzeObjects. 对象