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,假设存在一个公共bucket,它的名称与我的私有bucket非常相似。我想防止用户拼写错误的私人存储桶,并意外地向公众发布敏感数据 我知道最好的做法是使bucket名称尽可能唯一 澄清:我想阻止用户发布到任何公共S3存储桶您无法控制其他存储桶,因此无法阻止这种情况发生 作为回应,我想你可以定期查询这个bucket,假设它是公开可读的,搜索你认为应该上传到你的bucket中的内容,尽管现在还不清楚你会做什么 或者,为用户提供一个上传页面(可能静态托管在S3 bucket中),并要求用户使用该页面启

假设存在一个公共bucket,它的名称与我的私有bucket非常相似。我想防止用户拼写错误的私人存储桶,并意外地向公众发布敏感数据

我知道最好的做法是使bucket名称尽可能唯一


澄清:我想阻止用户发布到任何公共S3存储桶

您无法控制其他存储桶,因此无法阻止这种情况发生

作为回应,我想你可以定期查询这个bucket,假设它是公开可读的,搜索你认为应该上传到你的bucket中的内容,尽管现在还不清楚你会做什么

或者,为用户提供一个上传页面(可能静态托管在S3 bucket中),并要求用户使用该页面启动上传(通过或AWS S3 JavaScript SDK),这样用户就不必键入bucket名称,也就不会意外地指向错误的bucket。

公共bucket非常罕见。事实上,他们从安全性的角度以及从成本的角度来看都是非常不受欢迎的——有人可能上传非法文件并将其用于文件共享,而bucket所有者会为此付费

我通常会说,有人能够成功上传到随机bucket的几率几乎为零,但我怀疑您正在考虑这样一种情况,邪恶的一方可能会创建一个类似命名的bucket,希望收集机密数据(类似于域名露营)

在这种情况下,您可以对用户创建一个拒绝策略,以禁止访问所有S3存储桶,但您特别指定的存储桶除外:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::good-bucket1",
                "arn:aws:s3:::good-bucket2"
            ]
        },
        {
            "Sid": "NotOthers",
            "Effect": "Deny",
            "Action": [
                "s3:*"
            ],
            "NotResource": [
                "arn:aws:s3:::good-bucket1",
                "arn:aws:s3:::good-bucket2"                ]
        }
    ]
}

这将起作用,因为针对IAM用户的
Deny
将覆盖Bucket策略中的任何
Allow
。唯一的缺点是,您需要特别列出您希望包含/排除的bucket,因为无法指定规则适用于“公共bucket”。

实际上,我不想阻止用户发布到任何公共bucket。检查这个