不知道为什么这个s3桶策略不起作用?

时间:2017-07-24 12:48:39

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

我创建了一个名为user1的用户和一个名为s3limitedaccess的角色,并在下面附加了此存储桶策略。为此用户创建了访问和密钥,但无法让此用户查看此存储桶或对其执行任何操作。请有人建议。感谢

代码:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1499888918000",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::rscexternal/*"
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

如果您希望为特定IAM用户,IAM组或IAM角色分配权限,您应在IAM 中直接针对该用户/组/角色分配权限,而不是创建存储桶政策。 (这可能就是你所做的,但你提到了#34;桶策略"所以目前还不清楚。)

某些Amazon S3 API调用在存储桶级(例如列出存储桶)运行,而某些调用则在对象级(例如GetObject)运行。因此,您需要一个允许访问以下两者的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GrantFullAccess",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::rscexternal",
                "arn:aws:s3:::rscexternal/*"
            ]
        }
    ]
}

具有上述策略的IAM用户应该能够访问存储桶。例如,使用AWS Command-Line Interface (CLI)

aws s3 ls s3://rscexternal

如果您希望用户能够通过管理控制台使用Amazon S3,则需要其他权限。

来自Policy for Console Access

{
  "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:::test"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::test/*"]
    }
  ]
}