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 s3 Bucket策略允许上载某些文件类型_Amazon S3_Minio - Fatal编程技术网

Amazon s3 Bucket策略允许上载某些文件类型

Amazon s3 Bucket策略允许上载某些文件类型,amazon-s3,minio,Amazon S3,Minio,我已经通过mc构建了minio服务器来存储带有自定义策略的文件。我有下面的政策文件 "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Resou

我已经通过
mc
构建了
minio
服务器来存储带有自定义策略的文件。我有下面的政策文件

  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Resource": [
        "arn:aws:s3:::my_bucket_name/*.jpg"
      ],
      "Sid": "Statement1"
    },
    {
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Resource": [
        "arn:aws:s3:::my_bucket_name/*"
      ],
      "Sid": "Statement2"
    }
  ]
}
语句
s3:GetObject
正在工作,但语句
s3:PutObject
不工作。我仍然在MinIO浏览器上上传所有内容。那么,我要做的就是只上传jpg图片。

你看到了吗?它详细介绍了一种比上述方法略为全面的方法。也就是说,允许一个给定的扩展,授予用户权限,并且禁止任何不是该扩展的内容-剥夺具有
*
权限的用户上载任何其他内容的能力

如果不知道“不工作”是什么意思,就很难调试。您能提供您正在使用的命令以及任何例外情况吗?在我脑海中,以下是我将尝试的调试尝试:

  • 您的文件真的是
    .jpg
    ,而不是
    .jpg
    .jpeg
    .jpeg
  • 将“arn:aws:s3::my_bucket\u name/*.jpg”更改为
    “arn:aws:s3::my_bucket\u name/*”
    有效吗?如果不是,那么将其更改为
    “*”


  • 另一方面:我对文件类型限制持怀疑态度,因为文件类型只是表面上强制的。任何可以重命名文件的人都可以上传它,因为
    .jpg
    只是一个扩展名,不保证实际内容。在最好的情况下,强制执行扩展规则是用户的一条快乐之路,但实际上,您不能依靠它来保护您的系统免受任何影响。

    上述似乎是一个桶策略,对吗?当您说您仍然可以上载所有内容时,您使用的凭据以及与这些凭据关联的权限是什么?例如,如果您正在使用来自IAM用户的凭据,并且该用户拥有已授予对bucket的访问权限(例如
    s3:
    ),则您将拥有上载任何内容的权限。这可能没问题,因为你“拥有”了这个系统。问题是用户将如何上传到该存储桶,以及他们将使用什么凭据?他们是否具有IAM凭据?他们是否正在使用应用程序?您是否能够解决此问题?只是想知道这样的事情是否可以用minio来完成。@properchels问题解决了。当我用access key和secret key设置minio时,它也是管理员帐户,我认为管理员帐户有完整的策略,我尝试用自定义策略(上面的json文件)创建一个用户帐户,该用户帐户受限制。谢谢你的回复。我已经看到了这个链接,并遵循了它。就我而言,我有两个问题。第一个是限制访问公共bucket,我使用
    mc
    用语句
    {“Action”:[“s3:GetObject”],“Effect”:“Allow”,“Principal”:{“AWS”:[“*”]},“Resource”:[“arn:AWS:s3:::my_bucket_name/*”],“Sid”:“Statement2”}
    并且它正在工作,我可以获得公共url,但不登录就无法访问Minio浏览器。第二个问题:在Minio浏览器中,我只允许上载扩展名为
    .jpg
    的文件。我已经遵循了您在上面共享的链接,我的语句2类似于
    {“Action”:[“s3:PutObject”],Effect:“Allow”,“Principal:{“AWS”:[“*”]},“Resource::[“arn:AWS:s3:::my_bucket_name/*.jpg”],“Sid:“Statement1”}
    但是,我可以在Minio浏览器中上载所有内容(例如:pdf,exe,…)我尝试只使用语句
    putObject
    ,但不起作用。我仍然尝试使用具有
    效果的语句putObject:“允许”
    NotResource
    ,但它有错误
    mc:无法设置json策略
    /tmp/policy.json`for
    minio/my_bucket\u name
    。策略的资源无效。`所以您的第一个问题,'限制访问公共存储桶”已解决?关于“我可以在Minio浏览器中上载所有内容(例如:pdf、exe等)”:这可能是因为Minio允许写入所有内容(根据某些策略,在某些地方)。若要禁止非jpg,您需要在我的回答中包含链接中的禁止策略,这将覆盖其他地方的任何更通用的允许策略。问题已解决。当我使用
    访问密钥和
    密钥设置minio时,它也是管理员帐户,我认为管理员帐户具有完整策略,我尝试创建一个用户a使用自定义策略(上面的json文件)进行帐户,此用户帐户受政策限制。