Amazon S3 Bucket策略允许用户只写入存储桶

时间:2016-07-15 10:16:53

标签: amazon-web-services amazon-s3

我在Amazon S3中有一个名为“data1'”的存储桶。

当我使用Cyber​​duck连接到我的S3时,我希望用户只能访问数据1'斗,没有其他人。

我还设置了一个名为data1的新IAM用户,并附加了“AmazonS3FullAccess”#39;对该用户的权限的策略 - 但是可以访问所有存储桶 - 这正是您所期望的。

我想我需要为此制定另一项政策 - 无论我采取什么政策?

2 个答案:

答案 0 :(得分:3)

首先找到用户原则。通过查看此命令输出的Arn字段

可以找到这些
{
    "Users": [
        {
            "UserName": "eric",
            "Path": "/",
            "CreateDate": "2016-07-12T09:08:21Z",
            "UserId": "AIDAJXPI4SWK7X7PY4RX2",
            "Arn": "arn:aws:iam::930517348925:user/eric"
        },
        {
            "UserName": "bambi",
            "Path": "/",
            "CreateDate": "2015-07-15T11:07:16Z",
            "UserId": "AIDAJ2LEXFRXJI5AKUU7W",
            "Arn": "arn:aws:iam::930517348725:user/bambi"
        }
]
}

例如

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "arn:aws:iam::930517348725:user/bambi",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    },
    {
      "Sid":"block",
      "Effect":"Deny",
      "Principal": "arn:aws:iam::930517348725:user/bambi",
      "Action":["s3:*"],
      "Resource":["arn:aws:s3:::*"]
    }
  ]
}

然后设置S3存储桶策略。这些适用于铲斗并按桶设置。正常的IAM策略是根据IAM实体设置的,并且附加到IAM实体,例如用户。您已经拥有IAM政策。对于此要求,需要S3策略。

只是强调 - S3策略适用于存储桶并且“附加”到S3,IAM策略适用于IAM并与IAM对象关联。当IAM实体尝试使用S3存储桶时,可以应用S3策略和IAM策略。见http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

一旦你知道原则的ARN,那么就像这样添加一个S3策略

{{1}}

我没有测试过这个,但这是一般的想法。对不起,我没有在示例中使用“data1”作为原理和存储桶名称,但它太混乱了.. :)

答案 1 :(得分:0)

对于只写访问权限,您可以附加如下政策:

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

但它看起来像你想要做的不仅仅是写作?