У меня есть секретные файлы, просмотр / скачивание которых я хочу ограничить анонимным пользователем. Я попытался сделать его приватным, запустив что-то вроде:
s3cmd setacl --acl-private s3://bucket/some/path/*.ext
Затем я перехожу в консоль управления S3, выбираю файл и нажимаю «Свойства», я уверен, что разрешение «Открыть / загрузить» не отмечено для всех.
Но скопируйте ссылку https://s3-us-west-2.amazonaws.com/bucket/some/path/blah.ext
, и вставьте в новый браузер, его все еще можно открыть / загрузить.
Что мне не хватает?
Проверьте свою политику корзины, перейдя в корзину, затем нажмите «Свойства» и «Изменить политику корзины». Если у вас что-то вроде этого:
{
"Sid": "Stmt1391783519913",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject",
],
"Resource": "arn:aws:s3:::bucket/*"
},
это означает, что вы разрешаете всем скачивать все файлы в этом сегменте.
Согласно документ:
Если учетная запись имеет доступ к ресурсам, указанным в ACL или политике, они могут получить доступ к запрошенному ресурсу.
Это причина, по которой анонимный пользователь все еще может открывать / скачивать ваши файлы.
Вы можете предотвратить это, добавив новую политику, как показано ниже:
{
"Sid": "Stmt1395306106592",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/some/path/*.ext"
},
После того, как вы сделаете файл private
в S3 вы все еще можете загрузить его, ваш браузер кэшировал файл. Как только вы сделаете файл закрытым, он вернет 403
в любом другом браузере (или частном окне / окне в режиме инкогнито), но может быть доступен из исходного браузера в течение определенного периода времени.
Если вы хотите подтвердить, что файл является личным, попробуйте загрузить его в другом браузере (или curl
, и т.д).