通过STS令牌期限限制S3存储桶访问?

时间:2020-04-25 20:12:56

标签: amazon-web-services amazon-s3 amazon-iam aws-sts

我有一个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?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您所描述的内容听起来与Amazon S3 pre-signed URLs非常相似。

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

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

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

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

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