amazon-web-services - 按 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 S3 预签名 URL非常相似。
预签名 URL提供对私有对象的限时访问。
想象一个照片共享应用程序。它会像这样工作:
- 所有照片都保存在私有Amazon S3 存储桶中
- 用户向应用程序进行身份验证
- 当用户希望查看私人照片(或应用程序使用
<img>
标签生成链接到照片的 HTML 页面)时,应用程序将:- 验证用户是否有权查看该照片
- 如果是,应用程序会生成一个预签名的 URL,其中包括一个有效期(例如 5 分钟)
- 当用户的浏览器访问预签名 URL 时,Amazon S3 会验证 URL 并检查它是否在有效期内:
- 如果是,则返回私有对象是私有对象
- 如果不是,则用户收到
Access Denied
错误
只需几行代码即可生成预签名 URL,并且不需要对 S3 的 API 调用。
与您的问题不同,上述过程不需要使用安全令牌服务 (STS) 令牌(需要链接到 IAM 用户或 IAM 角色)。它旨在用于应用程序而不是 IAM 用户。
推荐阅读
- artificial-intelligence - 如何从 AIML 中的特定映射值中获取键值?
- python - 低级鼠标位置
- visual-studio-code - 如何在 Visual Studio 代码中关闭“包含强调的项目”?
- video - Safari 不想自动播放视频。如何解决这个问题?
- regex - 如何将字符串正则表达式转换为列表?
- python - 如何将两个折线图与 y 轴的(数字/百分比)和 x 轴的日期组合并使用 openpyxl 设置缩放
- javascript - 尝试将正弦波音频另存为 .wav 文件时出现错误
- python - Python XML 构建
- sql - 如何在mysql服务器上存储文件
- java - Java - 正则表达式拆分小数、减号和数学运算