删除S3存储桶中文件的权限

时间:2015-04-17 03:15:09

标签: android amazon-web-services amazon-ec2 amazon-s3

我的应用可让用户使用Google Plus登录。我的所有用户都有一个共同的存储桶。任何人都可以上传/下载文件。但问题是任何人都可以删除该文件。如何设置权限以便任何人都可以上传/下载文件,但只有上传文件的用户才能删除文件? 这是我的 的 Roles->Inline Policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
            "s3:AbortMultipartUpload",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::uni-cloud/*"
            ]
        }
    ]
}

2 个答案:

答案 0 :(得分:2)

存储在Amazon S3中的对象无法识别已经上传文件的用户"。因此,您需要一些其他方法来识别允许他们访问哪些文件。

最简单的方法是为每个用户提供他们自己的子目录,然后授予他们上传/下载/删除对象仅在该子目录中的权限。

然后,您可以创建一个使用IAM Policy Variables授予权限的角色,使用用户的标识符作为子目录的名称。政策看起来像这样:

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

答案 1 :(得分:1)

如果为该存储桶中的每个用户创建文件夹,则可以让他们仅删除该文件夹中的对象。您可以使用IAM政策执行此操作,请访问here