разрешить открытый доступ к корзине S3 с некоторыми ограничениями - PullRequest
0 голосов
/ 27 июня 2018

Как мне установить разрешения таким образом, чтобы каждый мог загружать файлы в мое ведро?

Вот пример, который имеет эти 3 функции:

  1. Я могу загрузить любой файл и загрузить его из любого места.
  2. Но я не могу загружать файлы, загруженные другими.
  3. Однако я могу удалить файлы, загруженные другими пользователями.

Я хотел бы знать, как было настроено это ведро (abc) и кому оно принадлежит.

1) Я могу загрузить:

[root@localhost ~]# aws s3 cp test.txt s3://abc/
upload: ./test.txt to s3://abc/test.txt

2) Я могу перечислить содержание:

[root@localhost ~]# aws s3 ls s3://abc | head
                           PRE doubleverify-iqm/
                           PRE folder400/
                           PRE ngcsc/
                           PRE out/
                           PRE pd/
                           PRE pit/
                           PRE soap1/
                           PRE some-subdir/
                           PRE swoo/
2018-06-15 12:06:27       2351 0Sw5xyknAcVaqShdROBSfCfa7sdA27WbFMm4QNdUHWqf2vymo5.json

3) Я могу скачать свой файл из любого места:

[root@localhost ~]# aws s3 cp s3://abc/test.txt .
download: s3://abc/test.txt to ./test.txt

4) Но не удается загрузить файл другого пользователя

[root@localhost ~]# aws s3 cp s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

5) однако я могу удалить не загруженный мной файл:

[root@localhost ~]# aws s3 rm s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json
delete: s3://abc/zQhAqmwIUfIeDnEEHpiaGhXuERgO3bR84jkjhbei1aLiV1758t.json

Я не уверен, как настроить такое ведро.

1 Ответ

0 голосов
/ 27 июня 2018

Не рекомендуется устанавливать ведро таким образом.

Тот факт, что любой может загрузить в корзину, означает, что кто-то может потенциально хранить ТБ данных, и вы будут нести ответственность за расходы . Например, кто-то может разместить большие видеофайлы, используя ваше хранилище для свободного хранения и пропускной способности.

Точно так же не является хорошей практикой обеспечения безопасности, когда кому-либо разрешается выдавать разрешения на просмотр содержимого вашей корзины . Они могут найти конфиденциальные данные, которые не предназначены для публикации.

Также было бы неразумно позволять кому-либо удалять объекты из вашего ведра, потому что кто-то может удалить все!

Существует два основных способа предоставления доступа к объектам:

Политика Bucket

Политика сегментов может предоставлять разрешения для всего сегмента или определенных путей внутри сегмента. Например, предоставление GetObject всей корзине означает, что любой может загрузить любой объект.

См .: Примеры политики Bucket - Amazon Simple Storage Service

Разрешения на уровне объекта

Базовые разрешения также могут предоставляться для каждого объекта. Например, когда объект копируется в корзину, в Списке контроля доступа (ACL) можно указать, кто может получить доступ к объекту.

Например, это даст право собственности на объект владельцу корзины:

aws s3 cp foo.txt s3://my-bucket/foo.txt --acl bucket-owner-full-control

Если исключить --acl, то объект «принадлежит» идентификатору, который загрузил файл, поэтому вы загрузили свой собственный файл. Это не рекомендуется, поскольку это может привести к ситуации, когда владелец корзины не сможет получить доступ (и даже не может удалить!) К объекту.

Итог: Подумайте о своей безопасности, прежде чем внедрять правила, которые предоставляют другим людям или кому-либо еще права на ваши корзины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...