You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何撤销单个用户的Amazon S3预签名URL访问权限?

如何撤销离职员工的S3预签名URL权限,同时保留在职员工的访问权

嘿,首先得明确一个关键知识点:Amazon S3的预签名URL本身是没法单独撤销的——它的有效性完全绑定在生成时使用的AWS凭证(比如IAM用户的访问密钥)上。只要凭证没失效,URL就会一直有效到你设置的48小时过期时间;如果凭证失效,所有用这个凭证生成的预签名URL都会直接作废。

所以要实现“只踢走离职员工,留着在职的”,得分两种场景处理:

场景1:两个预签名URL用了不同的IAM凭证生成

如果你当时是分别用两位员工各自的IAM用户凭证生成的他们的预签名URL,那操作超简单:

  • 找到离职员工对应的IAM用户,直接禁用或删除他的访问密钥,甚至可以直接删除这个IAM用户账号。这样他手里的预签名URL会立即失效,而在职员工的URL因为用的是完全独立的凭证,完全不受影响。

场景2:两个预签名URL用了同一个凭证生成

这是更常见的情况——比如你用了同一个服务角色或者通用IAM用户的密钥生成了两个URL。这时候不能直接废掉凭证(不然在职员工也用不了),可以试试下面两个办法:

办法1:给S3对象加权限限制,直接拒绝离职员工访问

虽然预签名URL依赖凭证,但S3对象的权限规则也会生效。你可以给policy.doc添加桶策略或者对象ACL,明确拒绝离职员工的访问请求:

  • 比如写一个这样的桶策略(记得替换里面的占位符):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::你的AWS账号ID:user/离职员工的IAM用户名"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::你的桶名/policy.doc"
    }
  ]
}

添加这个策略后,哪怕离职员工手里有预签名URL,访问时也会被AWS拒绝,而在职员工的访问完全不受影响。

办法2:替换原对象,给在职员工发新的预签名URL

如果离职员工的IAM身份已经被删除,没法用权限策略限制,那可以换个思路:

  1. 给在职员工重新生成一个policy.doc的预签名URL(或者把原对象复制到新的键名,比如policy-active.doc,再生成新URL给他);
  2. 把原桶里的policy.doc删除,或者移动到一个离职员工访问不到的路径/桶里。
    这样离职员工手里的旧URL会返回“对象不存在”的错误,而在职员工用新URL就能正常访问。

后续避坑建议

为了以后不再头疼这种问题,建议:

  • 给每个需要访问的用户单独创建IAM账号,生成预签名URL时用对应用户的凭证,这样要撤销权限时直接处理该用户的密钥就行;
  • 尽量缩短预签名URL的有效期,减少意外泄露后的风险。

内容的提问来源于stack exchange,提问作者sontd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:22:27