首页 > 解决方案 > 按 STS 令牌年龄限制 S3 存储桶访问?

问题描述

我有一个 S3 存储桶,我想根据用于访问它的凭据的年龄来限制对它的访问。例如,如果用于访问存储桶的令牌超过 X 天,我想拒绝访问。我怎样才能做到这一点?像这样的政策 -

{
  "Version": "2012-10-17",
  "Statement":        {
            "Sid": "RejectLongTermCredentials",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::${bucket}“,
                "arn:aws:s3:::${bucket}/*”
            ],
            "Condition": {
                aws:TokenIssueTime > 90 days
            }
        }
}

有没有办法计算代age币的?任何帮助,将不胜感激!

标签: amazon-web-servicesamazon-s3amazon-iamaws-sts

解决方案


您所描述的内容听起来与Amazon S3 预签名 URL非常相似。

预签名 URL提供对私有对象的限时访问

想象一个照片共享应用程序。它会像这样工作:

  • 所有照片都保存在私有Amazon S3 存储桶中
  • 用户向应用程序进行身份验证
  • 当用户希望查看私人照片(或应用程序使用<img>标签生成链接到照片的 HTML 页面)时,应用程序将:
    • 验证用户是否有权查看该照片
    • 如果是,应用程序会生成一个预签名的 URL,其中包括一个有效期(例如 5 分钟)
  • 当用户的浏览器访问预签名 URL 时,Amazon S3 会验证 URL 并检查它是否在有效期内:
    • 如果是,则返回私有对象是私有对象
    • 如果不是,则用户收到Access Denied错误

只需几行代码即可生成预签名 URL,并且不需要对 S3 的 API 调用。

与您的问题不同,上述过程不需要使用安全令牌服务 (STS) 令牌(需要链接到 IAM 用户或 IAM 角色)。它旨在用于应用程序而不是 IAM 用户。


推荐阅读