Политика доступа определяет, кто и какие действия может выполнять с бакетом и объектами внутри него. По умолчанию доступ есть только у владельца ключей.
Типы доступа
Приватный бакет. Файлы доступны только при обращении с ключами. Подходит для резервных копий, документов и данных приложений.
Публичный бакет. Файлы доступны любому по прямой ссылке. Подходит для изображений товаров, статики сайта и медиафайлов.
Смешанный доступ. Бакет приватный, а отдельные объекты открыты по ссылке. Настраивается правами на конкретный объект.
Настройка через личный кабинет
- Откройте раздел «Услуги» → «S3» и выберите бакет.
- Перейдите на вкладку «Права доступа».
- Выберите тип доступа и сохраните изменения.
Настройка политики через AWS CLI
Публичный доступ на чтение всех объектов бакета. Создайте файл policy.json:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::имя-бакета/*"]
}
]
}
Примените политику:
aws s3api put-bucket-policy --bucket имя-бакета --policy file://policy.json --endpoint-url https://s3.hostflyby.net --profile hostfly
Доступ на чтение только к одной папке: замените Resource на arn:aws:s3:::имя-бакета/public/*
Просмотр текущей политики:
aws s3api get-bucket-policy --bucket имя-бакета --endpoint-url https://s3.hostflyby.net --profile hostfly
Удаление политики:
aws s3api delete-bucket-policy --bucket имя-бакета --endpoint-url https://s3.hostflyby.net --profile hostfly
Права на отдельный объект
Открыть доступ к одному файлу:
aws s3api put-object-acl --bucket имя-бакета --key путь/файл.jpg --acl public-read --endpoint-url https://s3.hostflyby.net --profile hostfly
Закрыть доступ:
aws s3api put-object-acl --bucket имя-бакета --key путь/файл.jpg --acl private --endpoint-url https://s3.hostflyby.net --profile hostfly
Рекомендации по безопасности
Открывайте публичный доступ только к тем данным, которые предназначены для показа посетителям. Резервные копии, базы данных и документы держите в приватных бакетах.
Для разных задач создавайте отдельные ключи доступа: при компрометации одного ключа достаточно отозвать его, не затрагивая остальные подключения.
Проверяйте, что в публичном бакете нет служебных файлов: конфигураций, дампов баз и архивов с исходным кодом.
