Amazon S3 - приватный файл по-прежнему доступен для скачивания всем желающим?
У меня есть секретные файлы, которые я хочу запретить анонимному пользователю просматривать / скачивать. Я попытался сделать это частным, запустив что-то вроде:
s3cmd setacl --acl-private s3://bucket/some/path/*.ext
Затем я захожу в S3 Management Console, выбираю файл и нажимаю "Свойства", я уверен, что разрешение "Открыть / Загрузить" не проверено для всех.
Но скопируйте ссылку https://s3-us-west-2.amazonaws.com/bucket/some/path/blah.ext
и вставьте в новый браузер, его все равно можно открыть / загрузить.
Чего мне не хватает?
1 ответ
Проверьте свою политику сегмента, перейдя в корзину, затем нажмите "Свойства" и "Изменить политику корзины". Если у вас есть что-то вроде этого:
{
"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
, и т.д).