При работе с объектными хранилищами S3 часто возникает необходимость обращаться к данным напрямую из браузера. Например, веб-приложение, размещенное на одном домене, может загружать изображения или файлы из бакета, расположенного на другом домене. По умолчанию такие запросы блокируются браузером, чтобы предотвратить несанкционированный доступ к ресурсам.
CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет задать правила взаимодействия между ресурсами из разных источников. В хранилищах S3 CORS Policy определяет, какие домены могут отправлять запросы к бакету, какие HTTP-методы допустимы (GET, PUT, POST, DELETE, OPTIONS, HEAD) и какие заголовки могут использоваться при обмене данными.
CORS policy позволяет безопасно открывать доступ к данным в хранилище без необходимости делать их полностью публичными. Например, вы можете разрешить чтение файлов из бакета только для определенного приложения, не позволяя другим сайтам обращаться к тем же ресурсам. Такой подход позволяет сохранить баланс между удобством интеграции и безопасностью.
В этой статье мы расскажем, как управлять CORS policy через AWS CLI.
Как настроить CORS policy
При создании бакета автоматически будет добавлена стандартная политика:
{
"CORSRules": [
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"DELETE",
"POST"
],
"AllowedOrigins": [
"https://cloud.reg.ru"
],
"MaxAgeSeconds": 3000
}
]
}
Эта политика позволяет панели управления Рег.облака обращаться к S3 API и выполнять операции с объектами.
Чтобы изменить стандартную политику:
-
1
Создайте файл в формате
.jsonс правилами конфигурации CORS.Обратите внимание
JSON-файл обязательно должен содержать указанное выше правило, иначе вы не сможете работать с объектами через панель управления Рег.облака.
-
2
Загрузите политику CORS в S3-бакет с помощью команды:
aws s3api put-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud --cors-configuration file://cors-config.json -
3
Проверьте установленное правило по инструкции.
Как сбросить CORS policy
-
1
Удалите текущее правило с помощью команды:
aws s3api delete-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud -
2
Создайте файл в формате
.json, например, cors-config.json. Добавьте в него стандартную политику:{ "CORSRules": [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "DELETE", "POST" ], "AllowedOrigins": [ "https://cloud.reg.ru" ], "MaxAgeSeconds": 3000 } ] } -
3
Загрузите политику CORS в S3-бакет с помощью команды:
aws s3api put-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud --cors-configuration file://cors-config.json -
4
Проверьте установленное правило по инструкции.
Как восстановить доступ к объектам в панели после удаления CORS policy
При попытке загрузить объект через панель управления Рег.облака может возникнуть следующая ошибка:
Ошибка означает, из CORS policy было удалено правило, которое позволяло панели управления Рег.облака обращаться к S3 API и выполнять операции с объектами.
Чтобы исправить ошибку:
-
1
Создайте файл в формате
.json, например, cors-config.json. Добавьте в него стандартную политику:{ "CORSRules": [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "DELETE", "POST" ], "AllowedOrigins": [ "https://cloud.reg.ru" ], "MaxAgeSeconds": 3000 } ] } -
2
Загрузите политику CORS в S3-бакет с помощью команды:
aws s3api put-bucket-cors --bucket bucket_name --endpoint-url https://s3.regru.cloud --cors-configuration file://cors-config.json -
3
Проверьте установленное правило по инструкции.