【问题标题】:Access Denied : Invalid according to Policy: Policy expired访问被拒绝:根据策略无效:策略已过期
【发布时间】:2018-04-08 01:25:19
【问题描述】:

尝试使用 http post 进行浏览器上传时,出现错误:

(Error)
(Code)AccessDenied(/Code)
(Message) Invalid according to Policy: Policy expired.
(/Message)
(RequestId) 6C79F2BC4E51766A (/RequestId)
(HostId) 
4uzKezeAmS/y0EAz47QevCu9Jh/3ivPxYRbOYn/Df+JoQnAgXNK+faFOmkDSlOukwynxUPzp4Uk= 
(/HostId)
(/Error)

我尝试更改我的系统时钟时间, 我检查了到期时间设置为当前日期,未来日期最长为 5 分钟、1 天、1 个月、1 年

发布政策是:

{  "expiration": "2019-06-06T13:45:00.000Z",
  "conditions": [
{"bucket": "tokendatabase"},
["starts-with", "$key", "user/user1/"],
{"acl": "public-read-write"},
{"success_action_redirect": ""},
["starts-with", "$Content-Type", "image/"],
{"x-amz-meta-uuid": "14365123651274"},
{"x-amz-server-side-encryption": "AES256"},
["starts-with", "$x-amz-meta-tag", ""],
{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-algorithm": "AWS4-HMAC-SHA256"},
{"x-amz-date": "20180122T000000Z" }
]
}

【问题讨论】:

  • 请检查您的存储桶政策

标签: amazon-s3 http-post


【解决方案1】:

您是在告诉服务,您在大约三个月前签署了此政策:

{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-date": "20180122T000000Z" }

现在已过期,因为 2018-01-22 的凭证仅在 2018-01-30 之前有效。

您在签名计算中使用的签名密钥的有效期最长为 7 天。

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

以上引用的来源来自文档中的不同上下文,但适用于此处。与 Signature V4 一起使用的签名密钥与您签署请求的日期(或在这种情况下您声称已签署的日期)、AWS 区域和特定服务相关联,并且在任何其他情况下均无效,包括过去 7 天以上(如果用于“未来”,相对于您提供的日期)。

x-amz-credentialx-amz-date 中的值需要在日期组件方面相互匹配,并且应该从您签署政策时的系统时钟派生而来。

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2019-11-01
    • 2019-04-20
    相关资源
    最近更新 更多