仅针对PUT,读取和列表的Amazon S3策略

时间:2015-05-19 12:02:59

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

我试图创建一个只读/放/列出我的存储桶和dir的策略。 我写了这个政策:

{
    "Version": "2014-05-19",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ "s3:Put*", "s3:Get*" ],
            "Resource": "arn:aws:s3:::<mybucket>/<mydirectoryinbucket>/*"
        }
    ]
}

{
    "Version": "2014-05-19",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Condition": { "StringLike": { "s3:prefix": "<mydirectoryinbucket>/*"} },
            "Resource": "arn:aws:s3:::<mybucket>"
        }
    ]
}

但是我在第一个策略的最后一行收到错误......错误只是语法错误,没有其他信息。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您至少错过了principal,它定义了允许或拒绝访问资源的实体。

我接受了你的政策,添加了通配符*来表示“任何”主体,并使用IAM Policy Generator重新生成它。试试这个:

{
  "Id": "Policy1432045314996",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicGetAndPutPolicy",
      "Action": [
        "s3:Get*",
        "s3:Put*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::<mybucket>/<mydirectoryinbucket>/*",
      "Principal": "*"
    },
    {
      "Sid": "PublicListPolicy",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::<mybucket>",
      "Condition": {
        "StringLike": {
          "s3:prefix": "<mydirectoryinbucket>/*"
        }
      },
      "Principal": "*"
    }
  ]
}

文档: