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

如何创建Amazon S3访问策略限制用户仅访问自身文件夹

Amazon S3 自定义访问策略配置方案

需求梳理

  • S3存储桶结构:根目录仅含users文件夹,其下为以userId命名的子目录,路径格式为users/<userId>/*
  • 针对userId为123的IAM角色,需实现:
    • 仅对users/123/*路径拥有GetObject、PutObject、DeleteObject权限
    • 无法查看users文件夹内其他用户的目录名称
    • 可查看存储桶根目录下的users文件夹,且拥有根目录的GetObject权限

现有策略的问题

你提供的策略仅限制了自身目录的操作和列表权限,但未配置根目录的GetObject权限,同时缺少对根目录及users文件夹的列表权限,导致无法看到users文件夹,也无法访问根目录内容。

正确的策略配置

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::userbucket",
                "arn:aws:s3:::userbucket/users/123/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::userbucket/users/123/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::userbucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "",
                        "users/",
                        "users/123/*"
                    ]
                },
                "StringNotEquals": {
                    "s3:prefix": "users/*"
                }
            }
        }
    ]
}

策略说明

  1. 根目录与自身目录的GetObject权限:
    第一条Statement明确允许对存储桶根目录(arn:aws:s3:::userbucket)和自身目录(users/123/*)执行GetObject操作,满足根目录访问需求的同时,仅开放自身目录的读写删权限。

  2. 自身目录的写/删权限:
    第二条Statement单独配置PutObject和DeleteObject权限,仅作用于users/123/*路径,避免权限过度开放。

  3. 列表权限控制:

    • s3:prefix设置为""(根目录)、"users/",确保用户能看到根目录下的users文件夹;同时允许列出users/123/*下的内容。
    • StringNotEquals条件排除users/*前缀,防止用户看到users文件夹下其他用户的目录名称,仅能看到自己的123子目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:33