S3 策略创建帐户所有者可以读取的公共只写存储桶

问题描述 投票:0回答:1

我正在尝试配置一个 S3 存储桶,公众可以将文件放入其中(但不能读取、删除或列出),并且 root 用户可以拥有完全访问权限。我找不到如何编写策略以同时满足这两个要求。

我尝试过以下政策,公众确实可以写但不能读。但是,根用户无法在 AWS 控制台中查看对象列表,我收到错误“没有足够的权限列出对象 在您或您的 AWS 管理员更新您的权限以允许 s3:ListBucket 操作后,请刷新页面”。
更改“声明”子句的顺序没有帮助。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::MY_ACCOUNT_ID:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME_HERE",
                "arn:aws:s3:::BUCKET_NAME_HERE/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME_HERE",
                "arn:aws:s3:::BUCKET_NAME_HERE/*"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME_HERE",
                "arn:aws:s3:::BUCKET_NAME_HERE/*"
            ]
        }
    ]
}
amazon-web-services amazon-s3 aws-policies
1个回答
0
投票

Amazon S3 存储桶默认是私有的。

因此,您需要此政策:

        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME_HERE/*"
            ]
        }

增加了任何人都可以在存储桶中存储对象的能力。因此,通常有权访问该存储桶的任何人(例如所有者)仍然具有该访问权限。

请注意,

Deny
策略会覆盖
Allow
策略,因此您的
Deny s3:*
策略实际上会阻止所有人(包括所有者)的访问。

© www.soinside.com 2019 - 2024. All rights reserved.