AWS 签名版本 4(SigV4)身份认证特定的策略键
下表显示了与 AWS 签名版本 4(SigV4)身份认证有关的条件键,您可以将这些条件键用于 Amazon S3 on Outposts。您可以在存储桶策略中添加这些条件,以便在使用签名版本 4 对请求进行身份认证时强制执行特定的行为。有关示例策略,请参阅 使用与签名版本 4 有关的条件键的存储桶策略示例。有关使用签名版本 4 对请求进行身份认证的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的请求的身份认证(AWS 签名版本 4)。
适用的键 |
描述 |
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 请求。
- JSON
-
-
{
"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 参考》中的身份认证方法。
- JSON
-
-
{
"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 参考》中的对请求进行身份认证和身份认证方法。
- JSON
-
-
{
"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"
}
}
}
]
}