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
Permissions 如何删除“;删除“;对AmazonS3的许可_Permissions_Amazon S3 - Fatal编程技术网

Permissions 如何删除“;删除“;对AmazonS3的许可

Permissions 如何删除“;删除“;对AmazonS3的许可,permissions,amazon-s3,Permissions,Amazon S3,在AmazonS3控制台中,我只看到“上传/删除”的权限选项。是否有允许上载但不允许删除的方法?您在中直接看到的权限基于S3可用的初始且相对简单的权限,这基本上区分了读写权限,请参阅: 读取-允许被授权人列出bucket中的对象 写入-允许受让人创建、覆盖和删除 水桶 通过添加(应用于bucket级别的权限)和(应用于用户级别的权限),可以解决这些限制,并且这三者也可以一起使用(这可能会变得相当复杂,如下所述),请参阅整个图片 您的用例可能需要相应的bucket策略,您也可以直接从S3控制台

在AmazonS3控制台中,我只看到“上传/删除”的权限选项。是否有允许上载但不允许删除的方法?

您在中直接看到的权限基于S3可用的初始且相对简单的权限,这基本上区分了读写权限,请参阅:

  • 读取-允许被授权人列出bucket中的对象
  • 写入-允许受让人创建、覆盖和删除 水桶
通过添加(应用于bucket级别的权限)和(应用于用户级别的权限),可以解决这些限制,并且这三者也可以一起使用(这可能会变得相当复杂,如下所述),请参阅整个图片

您的用例可能需要相应的bucket策略,您也可以直接从S3控制台添加该策略。单击addbucket policy打开bucket policy编辑器,它提供了几个示例的链接以及强烈推荐的示例,允许您针对您的用例组装策略

对于其他锁定的bucket,最简单的形式可能是这样的(请确保根据您的需要调整主体和资源):

{
“声明”:[
{
“行动”:[
“s3:PutObject”
],
“效果”:“允许”,
“资源”:“arn:aws:s3:::/”,
“委托人”:{
“AWS”:[
"*"
]
}
}
]
}
根据您的用例,您可以通过组合各种允许和拒绝操作等轻松地组合相当复杂的策略-这显然也会产生无意中的权限,因此正确的测试像往常一样是关键;因此,请注意使用或时的含义


最后,您可能还想看看我的答案,它解决了策略中另一个常见的陷阱。

是的,
s3:DeleteObject
是一个选项:


但是,在更改现有对象(这将允许有效地删除它)和创建新对象之间没有区别。

您可以将无删除策略附加到s3存储桶。例如,如果您不希望此IAM用户对任何存储桶或任何对象执行任何删除操作,可以设置如下内容:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1480692207000",
            "Effect": "Deny",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}
此外,您可以使用策略模拟器检查您的策略,以检查您的设置是否符合预期


希望这有帮助

这非常有效。多亏了庞沃拉提马诺斯罗伊。将其上述政策组合如下:

{    

"Statement": [    

    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:GetObjectAcl",
            "s3:PutObjectAcl",
            "s3:ListBucket",
            "s3:GetBucketAcl",
            "s3:PutBucketAcl",
            "s3:GetBucketLocation"
        ],
        "Resource": "arn:aws:s3:::mybucketname/*",
        "Condition": {}
    },
    {
        "Effect": "Allow",
        "Action": "s3:ListAllMyBuckets",
        "Resource": "*",
        "Condition": {}
    },
    {
        "Effect": "Deny",
        "Action": [
            "s3:DeleteBucket",
            "s3:DeleteBucketPolicy",
            "s3:DeleteBucketWebsite",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
        ],
        "Resource": "arn:aws:s3:::mybucketname/*",    

        "Condition": {}    

    }
]
}    

在主体元素中指定用户时,不能使用通配符(*)表示“所有用户”。主体必须始终命名一个或多个特定用户。提及-
{    

"Statement": [    

    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:GetObjectAcl",
            "s3:PutObjectAcl",
            "s3:ListBucket",
            "s3:GetBucketAcl",
            "s3:PutBucketAcl",
            "s3:GetBucketLocation"
        ],
        "Resource": "arn:aws:s3:::mybucketname/*",
        "Condition": {}
    },
    {
        "Effect": "Allow",
        "Action": "s3:ListAllMyBuckets",
        "Resource": "*",
        "Condition": {}
    },
    {
        "Effect": "Deny",
        "Action": [
            "s3:DeleteBucket",
            "s3:DeleteBucketPolicy",
            "s3:DeleteBucketWebsite",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
        ],
        "Resource": "arn:aws:s3:::mybucketname/*",    

        "Condition": {}    

    }
]
}