AWS S3:特定存储桶的用户策略

时间:2016-06-02 08:14:20

标签: amazon-web-services amazon-s3

我刚刚设置了我的AWS S3。 我的应用程序使用full-admin-acces-keys,但由于这可能有风险,我想设置一个带有IAM组的IAM用户,并且只允许他使用S3-stuff。 我的水桶位于欧洲中心1号,它的名字是' MYBCKET'在以下政策中:

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

}

这不起作用。如果我向用户提供以下有效的政策:

    {
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "s3:ListBucket"
        ],
        "Resource": [
            "*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "*"
        ]
    }
]

}

它必须是资源肯定的东西。 有人可以向我解释资源是由什么组成的,这样我才能理解并希望找到错误? 只是告诉你:我确信我将我的桶名称拼写正确,并且我在资源arn:aws:s3:::MYBCKET/*arn:aws:s3:::MYBCKET中尝试了不同的组合以及其他一些不起作用的组合。

感谢您的回答和时间。

1 个答案:

答案 0 :(得分:2)

我认为您的策略没有任何问题,如果意图是用户应该以编程方式访问存储桶。

如果用户还需要能够通过控制台访问策略,您可以尝试这样做,这将允许用户列出存储桶:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListAllMyBuckets"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3::: MYBCKET"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3::: MYBCKET/*"]
    }
  ]
}