Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Object Storage
    • Все инструкции
      • Создание бакета
      • Удаление бакета
      • Ограничение максимального размера бакета
      • Шифрование бакета
      • Управление жизненными циклами объектов
      • Управление конфигурацией CORS
      • Настройка прав доступа с помощью IAM
      • Редактирование ACL бакета
      • Управление политикой доступа
      • Настройка публичного доступа к бакету
      • Доступ в бакет с помощью Security Token Service
      • Доступ в бакет с помощью сервисного подключения из VPC
      • Управление версионированием бакета
      • Включение механизма логирования
      • Управление блокировками версий объектов
      • Управление метками бакета
      • Получение информации и статистики о бакете
      • Просмотр метрик бакета
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Бакеты
  3. Управление конфигурацией CORS

Настройка CORS

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 20 мая 2025 г.

Object Storage позволяет управлять конфигурацией CORS в бакете.

Консоль управления
Yandex Cloud CLI
AWS CLI
Terraform
API
  1. В консоли управления в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить CORS.

  2. На панели слева выберите Безопасность.

  3. Выберите вкладку CORS.

  4. Нажмите Настроить.

  5. Заполните открывшуюся форму. Вы можете добавлять, удалять и редактировать правила конфигурации.

    Чтобы создать правило:

    1. Заполните поля:
      • Описание — описание правила в произвольной форме.
      • Allowed Origins — перечень доменов, разделенных запятыми. Каждый домен записывается в отдельное поле AllowedOrigin конфигурации CORS. Пример: http://*.example.com, http://some.another.dom.
      • Allowed Methods — HTTP-методы, разрешенные в запросе к объекту, разделенные запятыми. Каждый метод записывается в отдельное поле AllowedMethod конфигурации CORS. Пример: GET, PUT, HEAD, POST, DELETE.
      • Allowed Headers — разрешенные заголовки в запросе к объекту, разделенные запятыми. Каждый заголовок записывается в отдельное поле AllowedHeader конфигурации CORS. Пример: X-Request-Id, X-Request-With.
      • Expose Headers — заголовки, разрешенные к показу в JavaScript-приложении в браузере, разделенные запятыми. Каждый заголовок записывается в отдельное поле ExposeHeader конфигурации CORS. Пример: X-Amz-Request-Id.
      • MaxAgeSeconds — время в секундах, в течение которого браузер сохраняет в кеше результат запроса к объекту методом OPTIONS.
    2. Нажмите Сохранить.

    Вы можете добавить одновременно несколько правил. Чтобы добавить новое правило, нажмите Добавить правило и повторите предыдущие шаги.

    Подробное описание полей конфигурации смотрите в разделе CORS-конфигурация бакетов.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для изменения бакета:

    yc storage bucket update --help
    
  2. Получите список бакетов в каталоге по умолчанию:

    yc storage bucket list
    

    Результат:

    +------------------+----------------------+-------------+-----------------------+---------------------+
    |       NAME       |      FOLDER ID       |  MAX SIZE   | DEFAULT STORAGE CLASS |     CREATED AT      |
    +------------------+----------------------+-------------+-----------------------+---------------------+
    | first-bucket     | b1gmit33ngp6******** | 53687091200 | STANDARD              | 2022-12-16 13:58:18 |
    +------------------+----------------------+-------------+-----------------------+---------------------+
    
  3. Сохраните имя бакета (столбец NAME), в котором нужно настроить конфигурацию CORS.

  4. Выполните команду:

    yc storage bucket update \
      --name <имя_бакета> \
      --cors <параметр_CORS>='[<набор_значений>]',<параметр_CORS>='[<набор_значений>]',...
    

    Где:

    • --name — имя бакета, в котором нужно настроить конфигурацию CORS.

    • --cors — параметры CORS:

      • allowed-methods — список методов. Возможные значения: method-get, method-put, method-post, method-delete, method-head. Обязательный параметр.
      • allowed-origins — список сайтов, с которых разрешены кросс-доменные запросы к бакету. Обязательный параметр.
      • allowed-headers — список разрешенных заголовков. Необязательный параметр.
      • expose-headers — список заголовков, которые разрешено показывать в JavaScript-приложении в браузере. Необязательный параметр.
      • max-age-seconds — время в секундах, в течение которого браузер сохраняет в кеше результат запроса к объекту. Необязательный параметр.

      Значения параметров указываются в кавычках и квадратных скобках. Элементы списков в значениях перечисляются через запятую без пробелов. Например, --cors allowed-methods='[method-get,method-head]',allowed-origins='[example.com]'.

      Разрешения, указанные в команде, перезаписывают настройки CORS, которые уже есть у бакета. Получить текущие разрешения можно с помощью команды yc storage bucket get <имя_бакета> --full.

      Результат:

      name: first-bucket
      folder_id: b1gmit33ngp6********
      default_storage_class: STANDARD
      versioning: VERSIONING_DISABLED
      max_size: "53687091200"
      acl: {}
      created_at: "2022-11-25T11:48:42.024638Z"
      

Чтобы удалить конфигурацию CORS, выполните команду:

yc storage bucket update \
  --name <имя_бакета> \
  --remove-cors

Чтобы загрузить конфигурацию с помощью AWS CLI:

  1. Опишите конфигурацию CORS объектов в формате JSON. Например:

    {
      "CORSRules": [
        {
          "AllowedHeaders": ["*"],
          "AllowedMethods": ["GET", "HEAD", "PUT", "DELETE"],
          "MaxAgeSeconds": 3000,
          "AllowedOrigins": ["*"]
        }
      ]
    }
    

    Готовую конфигурацию можно поместить в файл, например, cors.json.

  2. Загрузите конфигурацию в бакет, например, shared-bucket:

    aws s3api put-bucket-cors \
      --bucket shared-bucket \
      --cors-configuration file://cors.json \
      --endpoint-url=https://storage.yandexcloud.net
    

Примечание

Terraform взаимодействует с Object Storage от имени сервисного аккаунта. Назначьте сервисному аккаунту нужную роль, например storage.admin, на каталог, в котором будут создаваться ресурсы.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.

Примечание

Кроме статических ключей доступа для аутентификации в Object Storage можно использовать IAM-токен. Подробнее смотрите в разделе Создание бакета и в документации провайдера.

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

    provider "yandex" {
      cloud_id  = "<идентификатор_облака>"
      folder_id = "<идентификатор_каталога>"
      zone      = "<зона_доступности>"
      token     = "<OAuth-токен>"
      }
    
    resource "yandex_iam_service_account" "sa" {
      name = "<имя_сервисного_аккаунта>"
    }
    
    // Назначение роли сервисному аккаунту
    resource "yandex_resourcemanager_folder_iam_member" "sa-admin" {
      folder_id = "<идентификатор_каталога>"
      role      = "storage.admin"
      member    = "serviceAccount:${yandex_iam_service_account.sa.id}"
    }
    
    // Создание статического ключа доступа
    resource "yandex_iam_service_account_static_access_key" "sa-static-key" {
      service_account_id = yandex_iam_service_account.sa.id
      description        = "static access key for object storage"
    }
    
    resource "yandex_storage_bucket" "b" {
      bucket = "s3-website-test.hashicorp.com"
      acl    = "public-read"
    
      access_key = yandex_iam_service_account_static_access_key.sa-static-key.access_key
      secret_key = yandex_iam_service_account_static_access_key.sa-static-key.secret_key
    
      cors_rule {
        allowed_headers = ["*"]
        allowed_methods = ["PUT", "POST"]
        allowed_origins = ["https://s3-website-test.hashicorp.com"]
        expose_headers  = ["ETag"]
        max_age_seconds = 3000
      }
    }
    

    Где:

    • access_key — идентификатор статического ключа доступа.
    • secret_key — значение секретного ключа доступа.
    • bucket — имя бакета. Обязательный параметр.
    • acl — применяемая политика ACL. Необязательный параметр.

    Параметры CORS:

    • allowed_headers — разрешенные заголовки. Необязательный параметр.
    • allowed_methods — разрешенные методы. Возможные значения: GET, PUT, POST, DELETE или HEAD. Обязательный параметр.
    • allowed_origins — сайт, с которого разрешены кросс-доменные запросы к бакету. Обязательный параметр.
    • expose_headers — заголовок, разрешенный к показу в JavaScript-приложении в браузере. Необязательный параметр.
    • max_age_seconds — Время в секундах, в течение которого браузер сохраняет в кеше результат запроса к объекту. Необязательный параметр.
    • server_side_encryption_configuration — конфигурация шифрования бакета на стороне сервера. Необязательный параметр.

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов.

    После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Чтобы управлять конфигурацией CORS в бакете, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.

Была ли статья полезна?

Предыдущая
Управление жизненными циклами объектов
Следующая
Настройка прав доступа с помощью IAM
Проект Яндекса
© 2025 ООО «Яндекс.Облако»