Amazon 签名版本 4(SigV4)身份认证特定的策略键 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon 签名版本 4(SigV4)身份认证特定的策略键

下表显示了与 Amazon 签名版本 4(SigV4)身份认证有关的条件键,您可以将这些条件键用于 Amazon S3 on Outposts。您可以在存储桶策略中添加这些条件,以便在使用签名版本 4 对请求进行身份认证时强制执行特定的行为。有关示例策略,请参阅 使用与签名版本 4 有关的条件键的存储桶策略示例。有关使用签名版本 4 对请求进行身份认证的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的请求的身份认证(Amazon 签名版本 4)

适用于 s3-outposts:* 操作或任何 S3 on Outposts 操作的键
适用的键 描述

s3-outposts:authType

S3 on Outposts 支持多种身份认证方法。要限定传入的请求使用特定的身份认证方法,您可以使用此可选条件键。例如,您可以使用此条件键以仅允许在请求身份认证中使用 HTTP Authorization 标头。

有效值:

REST-HEADER

REST-QUERY-STRING

s3-outposts:signatureAge

签名在已通过身份认证的请求中的有效期(以毫秒为单位)。

此条件仅适用于预签名 URL。

在签名版本 4 中,签名键的有效期最长为 7 天。因此,签名的有效期最初也为 7 天。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 签名请求简介。您可以使用此条件进一步限制签名有效期。

示例值: 600000

s3-outposts:x-amz-content-sha256

您可以使用此条件键禁止存储桶中未签名的内容。

使用签名版本 4 时,对于使用 Authorization 标头的请求,您需要在签名计算中添加 x-amz-content-sha256 标头,然后将它的值设置为哈希负载。

您可以在存储桶策略中使用此条件键来拒绝上传任何未签名的有效负载。例如:

  • 拒绝使用 Authorization 标头对请求进行身份认证,但未对有效负载进行签名的上传。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的在单个区块中传输有效负载

  • 拒绝使用预签名 URL 的上传。预签名 URL 始终有一个 UNSIGNED_PAYLOAD。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的对请求进行身份认证身份认证方法

有效值:UNSIGNED-PAYLOAD

使用与签名版本 4 有关的条件键的存储桶策略示例

要使用以下示例,请将 user input placeholders 替换为您自己的信息。

例 : s3-outposts:signatureAge

以下存储桶策略将在签名的存在时间超过 10 分钟时拒绝对 example-outpost-bucket 中对象的 S3 on Outposts 预签名 URL 请求。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 minutes old", "Effect": "Deny", "Principal": {"AWS":"444455556666"}, "Action": "s3-outposts:*", "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*", "Condition": { "NumericGreaterThan": {"s3-outposts:signatureAge": 600000}, "StringEquals": {"s3-outposts:authType": "REST-QUERY-STRING"} } } ] }

例 : s3-outposts:authType

以下存储桶策略仅允许使用 Authorization 标头进行请求身份认证的请求。任何预签名的 URL 请求都将被拒绝,因为预签名 URL 使用查询参数来提供请求和身份认证信息。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的身份认证方法

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow only requests that use the Authorization header for request authentication. Deny presigned URL requests.", "Effect": "Deny", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:*", "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*", "Condition": { "StringNotEquals": { "s3-outposts:authType": "REST-HEADER" } } } ] }

例 : s3-outposts:x-amz-content-sha256

以下存储桶策略拒绝任何带有未签名有效负载的上传,例如使用预签名 URL 的上传。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的对请求进行身份认证身份认证方法

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny uploads with unsigned payloads.", "Effect": "Deny", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:*", "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket/object/*", "Condition": { "StringEquals": { "s3-outposts:x-amz-content-sha256": "UNSIGNED-PAYLOAD" } } } ] }