AWS IAM策略允许用户访问特定的S3存储桶进行备份

时间:2016-06-17 11:12:50

标签: amazon-web-services amazon-s3 backup amazon-iam

我有一台支持将文件备份到AWS S3的NAS。我在AWS控制台的IAM下创建了一个用户,我试图生成一个策略,该策略只允许此用户访问具有读/写权限的特定S3存储桶。以下是我生成的政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1465916250000",
      "Effect": "Allow",
      "Action": [
          "s3:PutObject",
          "s3:PutObjectAcl"
        ],
        "Resource": [
         "arn:aws:s3:::atlas-nas-backups"
        ]
      }
   ]
}

但是,当我通过策略模拟器针对S3的所有操作运行此操作时,每个操作都会失败。我错过了这个用户无法将对象写入存储桶的内容?除了能够将文件备份到特定存储桶之外,我不希望此用户访问任何其他AWS资源。

2 个答案:

答案 0 :(得分:2)

存在桶权限的怪癖,您需要使用/*通配符规范分别指定存储桶本身其键。此外,即使对于写入操作,也可能需要List操作。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1465916250000",
      "Effect": "Allow",
      "Action": [
          "s3:PutObject",
          "s3:PutObjectAcl",
          "s3:ListBucket",
          "s3:GetBucketLocation"
        ],
        "Resource": [
         "arn:aws:s3:::atlas-nas-backups",
         "arn:aws:s3:::atlas-nas-backups/*"
        ]
      }
   ]
}

我还添加了" s3:GetBucketLocation"和" s3:ListBucket"动作。如前所述,即使您只是编写对象,服务也可能希望列出项目并获取存储桶的位置(区域)。你可能不需要这两个,但只是为了以防万一,只是想给你看看。

答案 1 :(得分:0)

备份的最小策略只需要 PutObjectListBucket

为什么是 ListBucket?如果只添加 PutObject aws 会抱怨它缺少 ListObjects 权限。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::atlas-nas-backups/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::atlas-nas-backups"
        }
    ]
}