Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 拒绝所有用户的访问,只有一个用户可以访问S3存储桶中的私人文件夹_Amazon Web Services_Amazon S3_Amazon Iam - Fatal编程技术网

Amazon web services 拒绝所有用户的访问,只有一个用户可以访问S3存储桶中的私人文件夹

Amazon web services 拒绝所有用户的访问,只有一个用户可以访问S3存储桶中的私人文件夹,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,我有一个公共S3存储桶,里面有两个文件夹,public folder和private folder 我希望每个人都能访问公用文件夹,我只希望user1以编程方式访问专用文件夹 在S3存储桶中,我添加了以下策略: { "Version": "2012-10-17", "Id": "Policy1568654876568", "Statement": [ {

我有一个公共S3存储桶,里面有两个文件夹,
public folder
private folder

我希望每个人都能访问
公用文件夹
,我只希望
user1
以编程方式访问
专用文件夹

在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策略拒绝所有人访问
私人文件夹
,然后使用我为
user1
定义的IAM策略覆盖该策略?

如果您有
公用文件夹
私人文件夹
,下面的操作不是更容易、更自然吗。以下内容基于以下事实:默认情况下,bucket及其对象是私有的

桶政策 它允许公众访问
公用文件夹

{
    "Version": "2012-10-17",
    "Id": "Policy1568654876568",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/public-folder/*"
        }
    ]
}
用户策略 它允许放置、获取和删除
私有文件夹中的对象
,以及列出bucket

{
    "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策略来允许访问。

非常感谢。我已经公开了这个桶。。。公用文件夹包含每个人都应该看到的图像。有了上述解决方案,人们能否在浏览器中看到公共图像?@HoomanBahreini Hi。我看不出有什么理由不。显然,您还必须调整
阻止公共访问(bucket设置)
设置。然而,最简单的检查方法是验证。如果不想在主bucket上进行实验,可以设置第二个bucket,以使用一些示例文件和策略进行测试。