繁体   English   中英

除了访问 S3 存储桶中的私有文件夹之外的所有用户都拒绝访问

[英]Deny access to all users except one to access private-folder inside S3 bucket

我有一个公共 S3 存储桶,里面有 2 个文件夹, public-folderprivate-folder

我希望每个人都可以访问public-folder而我只希望user1以编程方式访问private-folder

在 S3 存储桶中,我添加了以下策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1568654876568",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                    "arn-of-user1"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/private-folder/*"
        }
    ]
}

在 IAM 中,我为user1创建了一个能够访问存储桶的策略:

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

有没有更好的方法来实现这个目标? 是否可以使用 S3 策略拒绝每个人访问private-folder ,然后使用我为user1定义的 IAM 策略覆盖它?

如果您有public-folderprivate-folder ,下面的事情会不会更容易、更自然。 以下内容基于桶及其对象默认私有的事实。

桶策略

它允许公共访问public-folder

{
    "Version": "2012-10-17",
    "Id": "Policy1568654876568",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/public-folder/*"
        }
    ]
}

用户政策

它允许在private-folder放置、获取和删除对象,以及列出存储桶。

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

是否可以使用 S3 策略拒绝每个人访问私有文件夹,然后使用我为 user1 定义的 IAM 策略覆盖它?

显式拒绝覆盖任何允许。 因此,如果您拒绝所有人访问,则不能使用任何 IAM 策略来允许访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM