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

如何让AWS IAM用户仅查看自身S3存储桶而非全部账户资源?

解决方案

1. 统一存储桶命名规则

所有用户专属的存储桶,命名必须包含其IAM用户名(作为前缀/后缀均可),比如:

  • jane-doe-personal-bucket
  • user-john-smith-files
    核心是让桶名能和IAM用户名建立关联,这样后续策略可以通过内置变量精准匹配。

2. 配置IAM权限策略

创建自定义IAM策略,将其附加到需要限制的IAM用户(或用户组):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*",
            "Condition": {
                "StringLike": {
                    "s3:ResourceName": ["*${aws:username}*"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::*${aws:username}*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::*${aws:username}*/*"
        }
    ]
}

策略细节说明:

  • 第一条规则:允许执行s3:ListAllMyBuckets操作,但通过Condition过滤结果,仅返回名称包含当前IAM用户名的桶。如果是严格前缀命名(比如${aws:username}-xxx),可以把StringLike换成StringEquals并写为"${aws:username}-*",匹配更精准。
  • 第二条规则:允许用户对自己的桶执行列表、获取桶位置操作,资源范围覆盖所有含用户名的桶ARN。
  • 第三条规则:允许用户对自身桶内的对象进行读写(可按需调整,比如只需要读取权限就删除s3:PutObject)。

3. 清理冲突权限

确保目标用户没有被附加其他宽松的S3权限策略(比如AmazonS3FullAccess),这类高权限策略会覆盖自定义策略的限制。

4. 验证效果

用目标IAM用户登录AWS控制台进入S3页面,应该只能看到自己的存储桶;或通过CLI执行:

aws s3 ls

返回结果仅包含该用户对应的桶。

常见问题排查:

  • 桶名未包含用户名:检查命名是否符合规则,策略条件匹配失败会导致看不到桶。
  • 策略未正确附加:确认策略已经绑定到目标用户/用户组,且没有被其他策略覆盖。
  • 控制台缓存:退出账号重新登录,清除控制台权限缓存后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:45:39