本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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:::amzn-s3-demo-bucket1/*", "Effect": "Allow" }, { "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:GetBucketPublicAccessBlock", "s3:GetBucketRequestPayment", "s3:GetBucketPolicyStatus", "s3:GetBucketPolicy", "s3:GetBucketAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1", "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 存储桶设置是否阻止对象被公众访问。此脚本执行以下功能:-
评估公共访问屏蔽设置
-
根据您在
MaxObjects
、S3PrefixName
和StartAfter
参数中指定的值返回 S3 存储桶中的对象。 -
返回 S3 存储桶策略,以模拟从 S3 存储桶返回的对象的自定义 IAM policy。
-
如果
HttpGet
参数设置为true
,则对返回的对象执行部分 HTTP 请求。使用 Range HTTP 标头仅返回对象的第一个字节。 -
检查返回的对象的键名以确认它是以一个还是两个句点结尾。无法从 Amazon S3 控制台下载以句点结尾的对象键名。
-
检查返回的对象的所有者是否匹配 S3 存储桶的所有者。
-
检查对象的 ACL 是否向匿名用户授予
READ
或FULL_CONTROL
权限。 -
返回与对象关联的标签。
-
使用模拟的 IAM policy 确认
GetObject
API 操作的 S3 存储桶策略中是否明确拒绝此对象。 -
返回对象的元数据以确认是否支持该存储类别。
-
检查对象的服务器端加密设置,以确认是否使用 AWS Key Management Service (AWS KMS) 客户管理的密钥对对象进行加密。
-
输出
AnalyzeObjects.buck
AnalyzeObjects.object