Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Key Management Service
  • Начало работы
    • Все руководства
    • Шифрование секретов в Managed Service for Kubernetes
    • Подпись и проверка Docker-образов в Managed Service for Kubernetes
    • Управление ключами KMS с HashiCorp Terraform
    • Шифрование секретов в HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault
    • Безопасная передача пароля в скрипт инициализации
    • Шифрование для бакета Object Storage на стороне сервера
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте бакет
  • Создайте ключ
  • Включите шифрование
  • Отключите шифрование
  1. Практические руководства
  2. Шифрование для бакета Object Storage на стороне сервера

Шифрование для бакета Object Storage на стороне сервера

Статья создана
Yandex Cloud
Обновлена 17 февраля 2026 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте бакет
  • Создайте ключ
  • Включите шифрование
  • Отключите шифрование

В этом сценарии вы включите шифрование для бакета. В качестве ключа симметричного шифрования будет использоваться ключ Yandex Key Management Service. Все новые объекты в бакете будут шифроваться указанным ключом по схеме envelope encryption.

Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью storage.configurer должны быть следующие роли на ключ шифрования:

  • kms.keys.encrypter — для чтения ключа, шифрования и загрузки объектов;
  • kms.keys.decrypter — для чтения ключа, расшифровки и скачивания объектов;
  • kms.keys.encrypterDecrypter — включает разрешения, предоставляемые ролями kms.keys.encrypter и kms.keys.decrypter.

Подробнее см. Сервисные роли Key Management Service.

Чтобы включить шифрование бакета на стороне сервера:

  1. Подготовьте облако к работе.
  2. Создайте бакет.
  3. Создайте ключ.
  4. Включите шифрование.

Если шифровать новые объекты в бакете больше не требуется, отключите шифрование.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки бакета с шифрованием входит:

  • плата за хранение данных в бакете (см. тарифы Object Storage);
  • плата за операции с данными (см. тарифы Object Storage);
  • плата за использование ключей KMS (см. тарифы Key Management Service).

Создайте бакетСоздайте бакет

Вы можете создать новый бакет или использовать существующий. Чтобы создать бакет, выполните:

Консоль управления
AWS CLI
Terraform
  1. В консоли управления выберите каталог, в котором хотите создать бакет.

  2. В списке сервисов выберите Object Storage.

  3. Нажмите кнопку Создать бакет.

  4. В поле Имя укажите имя бакета.

    Имя должно удовлетворять требованиям:

    • Длина имени должна быть от 3 до 63 символов.
    • Имя может содержать строчные буквы латинского алфавита, цифры, дефисы и точки.
    • Первый и последний символы должны быть буквами или цифрами.
    • Символы справа и слева от точки должны быть буквами или цифрами.
    • Имя не должно иметь вид IP-адреса (например 10.1.3.9).
  5. Укажите максимальный размер бакета в ГБ.

  6. В полях Чтение объектов, Чтение списка объектов и Чтение настроек выберите С авторизацией.

  7. Нажмите кнопку Создать бакет.

  1. Если у вас еще нет AWS CLI, установите и сконфигурируйте его.

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

    aws s3 mb s3://<имя_бакета> --endpoint-url=https://storage.yandexcloud.net
    

    Результат:

    make_bucket: <имя_бакета>
    

Примечание

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

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

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

    locals {
      cloud_id    = "<идентификатор_облака>"
      folder_id   = "<идентификатор_каталога>"
      oauth       = "<OAuth>"
      zone        = "ru-central1-a"
    
      sa_name     = "new-buckets-account"
      sa_desc     = "Аккаунт для управления бакетами Object Storage"
      sa_key_desc = "Статический ключ для ${local.sa_name}"
    
      bucket_name = "Имя бакета" # Имя создаваемого бакета. Если не задавать имя бакета для ресурса `yandex_storage_bucket`, имя будет сгенерировано автоматически.
    }
    
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = local.oauth
      cloud_id  = local.cloud_id
      folder_id = local.folder_id
      zone      = local.zone
    }
    
    resource "yandex_iam_service_account" "buckets-account" {
      name        = local.sa_name
      description = local.sa_desc
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "buckets-account-role" {
      folder_id = local.folder_id
      role      = "editor"
      member    = "serviceAccount:${yandex_iam_service_account.buckets-account.id}"
    }
    
    resource "yandex_iam_service_account_static_access_key" "buckets-account-key" {
      service_account_id = "${yandex_iam_service_account.buckets-account.id}"
      description        = local.sa_key_desc
    }
    
    resource "yandex_storage_bucket" "test" {
      bucket     = local.bucket_name
      access_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.access_key}"
      secret_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.secret_key}"
    }
    

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

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

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

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

    terraform plan
    

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

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

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

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

      После выполнения команды Terraform обновит или создаст в указанном каталоге следующие ресурсы:

      • Сервисный аккаунт new-buckets-account.
      • Роль editor для сервисного аккаунта new-buckets-account.
      • Статический ключ для сервисного аккаунта.
      • Бакет.

      Проверить появление ресурсов можно в консоли управления.

Создайте ключСоздайте ключ

Создайте новый ключ или используйте существующий. Чтобы создать новый ключ:

Консоль управления
Yandex Cloud CLI
Terraform
API
  1. В консоли управления выберите каталог, в котором хотите создать ключ.

  2. В списке сервисов выберите Key Management Service.

  3. Нажмите кнопку Создать ключ.

  4. В открывшемся окне:

    • В поле Имя укажите bucket-key.
    • В поле Алгоритм шифрования выберите AES-256.
    • В поле Период ротации, дни выберите период ротации 7 дней.
    • Нажмите кнопку Создать.

Вместе с ключом создается его первая версия: нажмите на ключ в списке, чтобы открыть страницу с его атрибутами.

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

yc kms symmetric-key create \
  --name bucket-key \
  --default-algorithm aes-256 \
  --rotation-period 168h

Где:

  • --name — имя ключа.

  • --default-algorithm — алгоритм шифрования: aes-128, aes-192 или aes-256.

  • --rotation-period — период ротации ключа. Значение задается в часах, минутах и секундах и не может быть менее 24 часов. Например: --rotation-period 27h14m27s.

    Чтобы создать ключ без автоматической ротации, не указывайте параметр --rotation-period.

Вместе с ключом создается его первая версия. Она указана в поле primary_version.

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

    locals {
      cloud_id    = "<идентификатор_облака>"
      folder_id   = "<идентификатор_каталога>"
      oauth       = "<OAuth>"
      zone        = "ru-central1-a"
    
      sa_name     = "new-buckets-account"
      sa_desc     = "Аккаунт для управления бакетами Object Storage"
      sa_key_desc = "Статический ключ для ${local.sa_name}"
    
      key_name    = "bucket-key" # Имя ключа KMS.
      key_desc    = "Ключ для шифрования бакетов"
    
      bucket_name = "Имя бакета"
    }
    
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = local.oauth
      cloud_id  = local.cloud_id
      folder_id = local.folder_id
      zone      = local.zone
    }
    
    resource "yandex_iam_service_account" "buckets-account" {
      name        = local.sa_name
      description = local.sa_desc
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "buckets-account-role" {
      folder_id = local.folder_id
      role      = "editor"
      member    = "serviceAccount:${yandex_iam_service_account.buckets-account.id}"
    }
    
    resource "yandex_iam_service_account_static_access_key" "buckets-account-key" {
      service_account_id = "${yandex_iam_service_account.buckets-account.id}"
      description        = local.sa_key_desc
    }
    
    resource "yandex_kms_symmetric_key" "key-a" {
      name              = local.key_name
      description       = local.key_desc
      default_algorithm = "AES_256"
      rotation_period   = "168h"
    }
    
    resource "yandex_storage_bucket" "test" {
      bucket     = local.bucket_name
      access_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.access_key}"
      secret_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.secret_key}"
    }
    
  2. Проверьте корректность конфигурационных файлов.

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

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

      terraform plan
      

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

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

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

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

      После выполнения команды Terraform обновит или создаст в указанном каталоге следующие ресурсы:

      • Сервисный аккаунт new-buckets-account.
      • Роль editor для сервисного аккаунта new-buckets-account.
      • Статический ключ для сервисного аккаунта.
      • Ключ KMS с названием bucket-key.
      • Бакет.

      Проверить появление ресурсов можно в консоли управления.

Воспользуйтесь методом create для ресурса SymmetricKey.

Включите шифрованиеВключите шифрование

Чтобы включить шифрование бакета ключом KMS, выполните следующее:

Консоль управления
AWS CLI
Terraform
  1. В консоли управления выберите каталог, в котором находится бакет.
  2. В списке сервисов выберите Object Storage.
  3. Выберите бакет, созданный ранее.
  4. На панели слева выберите Безопасность.
  5. Откройте вкладку Шифрование.
  6. В поле Ключ KMS выберите ключ bucket-key.
  7. Нажмите кнопку Сохранить.

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

aws s3api put-bucket-encryption \
  --bucket <имя_бакета> \
  --endpoint-url=https://storage.yandexcloud.net \
  --server-side-encryption-configuration '{
  "Rules": [
    {
    "ApplyServerSideEncryptionByDefault": {
      "SSEAlgorithm": "aws:kms",
      "KMSMasterKeyID": "<идентификатор_ключа_KMS>"
    },
    "BucketKeyEnabled": true
  }
  ]
}'
  1. Опишите ресурсы в конфигурационном файле. Чтобы задать параметры, в данном сценарии используется блок locals:

    locals {
      cloud_id    = "<идентификатор_облака>"
      folder_id   = "<идентификатор_каталога>"
      oauth       = "<OAuth>"
      zone        = "ru-central1-a"
    
      sa_name     = "new-buckets-account"
      sa_desc     = "Аккаунт для управления бакетами Object Storage"
      sa_key_desc = "Статический ключ для ${local.sa_name}"
    
      key_name    = "bucket-key" # Имя ключа KMS.
      key_desc    = "Ключ для шифрования бакетов"
    
      bucket_name = "Имя бакета" # Имя бакета.
    }
    
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = local.oauth
      cloud_id  = local.cloud_id
      folder_id = local.folder_id
      zone      = local.zone
    }
    
    resource "yandex_iam_service_account" "buckets-account" {
      name        = local.sa_name
      description = local.sa_desc
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "buckets-account-role" {
      folder_id = local.folder_id
      role      = "editor"
      member    = "serviceAccount:${yandex_iam_service_account.buckets-account.id}"
    }
    
    resource "yandex_iam_service_account_static_access_key" "buckets-account-key" {
      service_account_id = "${yandex_iam_service_account.buckets-account.id}"
      description        = local.sa_key_desc
    }
    
    resource "yandex_kms_symmetric_key" "key-a" {
      name              = local.key_name
      description       = local.key_desc
      default_algorithm = "AES_256"
      rotation_period   = "168h"
    }
    
    resource "yandex_storage_bucket" "test" {
      bucket     = local.bucket_name
      access_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.access_key}"
      secret_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.secret_key}"
      server_side_encryption_configuration {
        rule {
        apply_server_side_encryption_by_default {
          kms_master_key_id = yandex_kms_symmetric_key.key-a.id
          sse_algorithm     = "aws:kms"
        }
      }
      }
    }
    
  2. Проверьте корректность конфигурационных файлов.

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

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

      terraform plan
      

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

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

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

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

      После выполнения команды Terraform обновит или создаст в указанном каталоге следующие ресурсы:

      • Сервисный аккаунт new-buckets-account.
      • Роль editor для сервисного аккаунта new-buckets-account.
      • Статический ключ для сервисного аккаунта.
      • Ключ KMS с названием bucket-key.
      • Бакет с шифрованием.

      Проверить появление ресурсов можно в консоли управления.

В результате все новые объекты в бакете будут шифроваться ключом bucket-key.

Отключите шифрованиеОтключите шифрование

Если шифровать новые объекты в бакете больше не требуется, отключите шифрование.

Внимание

После отключения шифрования уже загруженные объекты будут храниться зашифрованными. Данные в Object Storage шифруются по схеме envelope encryption. Удаление ключа равносильно уничтожению зашифрованных им данных.

Консоль управления
AWS CLI
Terraform
  1. В консоли управления выберите каталог, в котором находится бакет.
  2. В списке сервисов выберите Object Storage.
  3. Выберите бакет, созданный ранее.
  4. На панели слева выберите Безопасность.
  5. Откройте вкладку Шифрование.
  6. В поле Ключ KMS выберите Не выбрано.
  7. Нажмите кнопку Сохранить.

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

aws s3api delete-bucket-encryption \
  --bucket <имя_бакета> \
  --endpoint-url=https://storage.yandexcloud.net
  1. Опишите ресурсы в конфигурационном файле. Чтобы отключить шифрование, удалите или закомментируйте блок server_side_encryption_configuration для ресурса yandex_storage_bucket:

    locals {
      cloud_id    = "<идентификатор_облака>"
      folder_id   = "<идентификатор_каталога>"
      oauth       = "<OAuth>"
      zone        = "ru-central1-a"
    
      sa_name     = "new-buckets-account"
      sa_desc     = "Аккаунт для управления бакетами Object Storage"
      sa_key_desc = "Статический ключ для ${local.sa_name}"
    
      key_name    = "bucket-key"
      key_desc    = "Ключ для шифрования бакетов"
    
      bucket_name = "Имя бакета"
    }
    
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = local.oauth
      cloud_id  = local.cloud_id
      folder_id = local.folder_id
      zone      = local.zone
    }
    
    resource "yandex_iam_service_account" "buckets-account" {
      name        = local.sa_name
      description = local.sa_desc
    }
    
    resource "yandex_resourcemanager_folder_iam_member" "buckets-account-role" {
      folder_id = local.folder_id
      role      = "editor"
      member    = "serviceAccount:${yandex_iam_service_account.buckets-account.id}"
    }
    
    resource "yandex_iam_service_account_static_access_key" "buckets-account-key" {
      service_account_id = "${yandex_iam_service_account.buckets-account.id}"
      description        = local.sa_key_desc
    }
    
    resource "yandex_kms_symmetric_key" "key-a" {
      name              = local.key_name
      description       = local.key_desc
      default_algorithm = "AES_256"
      rotation_period   = "168h"
    }
    
    resource "yandex_storage_bucket" "test" {
      bucket     = local.bucket_name
      access_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.access_key}"
      secret_key = "${yandex_iam_service_account_static_access_key.buckets-account-key.secret_key}"
      /*
        server_side_encryption_configuration {
          rule {
          apply_server_side_encryption_by_default {
            kms_master_key_id = yandex_kms_symmetric_key.key-a.id
            sse_algorithm     = "aws:kms"
          }
        }
        }
      */
    }
    
  2. Проверьте корректность конфигурационных файлов.

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

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

      terraform plan
      

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

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

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

      terraform apply
      
    2. Подтвердите обновление ресурсов.

      После выполнения команды Terraform обновит в указанном каталоге следующие ресурсы:

      • Сервисный аккаунт new-buckets-account.
      • Роль editor для сервисного аккаунта new-buckets-account.
      • Статический ключ для сервисного аккаунта.
      • Ключ KMS с названием bucket-key.
      • Бакет.

В результате в указанном каталоге шифрование для бакета будет отключено. Проверить изменение ресурсов и их настройки можно в консоли управления.

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

Предыдущая
Безопасная передача пароля в скрипт инициализации
Следующая
Управление доступом
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»