Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Промоакции и 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
Обновлена 14 ноября 2025 г.

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

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

  2. Перейдите в сервис Object Storage.

  3. Выберите бакет, для которого хотите настроить CORS.

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

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

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

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

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

    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 ООО «Яндекс.Облако»