Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Object Storage
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Бакеты
      • Создание бакета
      • Удаление бакета
      • Ограничение максимального размера бакета
      • Открытие публичного доступа к бакету
      • Шифрование бакета
      • Управление жизненными циклами объектов
      • Управление конфигурацией CORS
      • Управление политикой доступа
      • Управление версионированием бакета
      • Редактирование ACL бакета
      • Включение механизма логирования
      • Управление блокировками версий объектов
    • Объекты
      • Загрузка объекта
      • Получение информации об объекте
      • Скачивание объекта
      • Восстановление версии объекта
      • Получение публичной ссылки на объект
      • Настройка блокировок версии объекта
      • Удаление объекта
      • Удаление всех объектов
      • Удаление частично загруженного объекта
      • Редактирование ACL объекта
    • Хостинг статических сайтов
      • Настройка хостинга
      • Поддержка собственного домена
      • Поддержка нескольких доменных имен
      • Настройка HTTPS
  • Практические руководства
    • Получение статистики запросов к объекту с использованием S3 Select
    • Получение статистики посещения сайта с использованием S3 Select
    • Формирование отчета по ресурсной детализации расходов с использованием S3 Select
    • Шифрование на стороне сервера
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Анализ логов с использованием DataLens
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
    • Подключение бакета как диска в Windows
    • Миграция данных из Yandex Data Streams с помощью Yandex Data Transfer
  • Концепции
    • Обзор
    • Бакет
    • Объект
    • Версионирование бакета
    • Блокировка версии объекта (object lock)
    • Шифрование
    • Жизненные циклы объектов
    • CORS
    • Хостинг статических сайтов
    • Подписанные (pre-signed) URL
    • Составная (multipart) загрузка
    • Список управления доступом (ACL)
    • Политика доступа (Bucket Policy)
    • Загрузка файла через HTML-форму
    • Класс хранилища
    • Механизм логирования действий с бакетом
    • Резервное копирование
    • Протокол TLS
    • Язык запросов S3 Select
    • Квоты и лимиты
  • Инструменты
    • Все инструменты
    • Консольные клиенты
      • AWS CLI
      • S3cmd
    • Файловые браузеры
      • CyberDuck
      • WinSCP
    • SDK
      • AWS SDK для Java
      • Python SDK (boto)
      • AWS SDK для .NET
      • AWS SDK для C++
      • AWS SDK для PHP
      • AWS SDK для Go
    • FUSE
      • GeeseFS
      • s3fs
      • goofys
    • FTP
      • Docker-контейнер для (S)FTP(S)
  • Справочник API
    • REST (совместимый с Amazon S3)
      • Как пользоваться API
      • Подписывание запросов
      • REST
        • Все сервисы и методы
        • Bucket
          • Все методы
          • create
          • getBucketEncryption
          • getMeta
          • listObjects
          • listBuckets
          • deleteBucket
          • deleteBucketEncryption
          • putBucketEncryption
          • putBucketVersioning
          • getBucketVersioning
          • putBucketLogging
          • getBucketLogging
          • listObjectVersions
          • putObjectLockConfiguration
          • getObjectLockConfiguration
        • Object
          • Все методы
          • upload
          • get
          • copy
          • getObjectMeta
          • delete
          • deleteMultipleObjects
          • options
          • selectObjectContent
          • putObjectRetention
          • putObjectLegalHold
          • getObjectRetention
          • getObjectLegalHold
        • Multipart upload
          • Общий порядок составной загрузки
          • startUpload
          • uploadPart
          • copyPart
          • listParts
          • abortUpload
          • completeUpload
          • listUploads
        • Static Website Hosting
          • Все методы
          • upload
          • get
          • delete
          • Коды ответов статического сайта
        • CORS
          • Все методы
          • XML-структура конфигурации CORS
          • upload
          • get
          • delete
        • Lifecycles
          • Все методы
          • XML-структура конфигурации жизненных циклов
          • upload
          • get
          • delete
        • ACL
          • Все методы
          • XML-структура конфигурации ACL
          • objectGetAcl
          • objectPutAcl
          • bucketGetAcl
          • bucketPutAcl
        • Bucket Policy
          • Все методы
          • GetBucketPolicy
          • PutBucketPolicy
          • DeleteBucketPolicy
          • Схема данных
          • Действия
          • Условия
        • Общие заголовки запросов
        • Общие заголовки ответов
        • Ответы
    • gRPC и REST
      • Аутентификация в API
      • gRPC (англ.)
        • Overview
        • BucketService
        • OperationService
      • REST (англ.)
        • Overview
        • Bucket
          • Overview
          • create
          • delete
          • deleteHTTPSConfig
          • get
          • getHTTPSConfig
          • getStats
          • list
          • setHTTPSConfig
          • update
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
  • Вопросы и ответы
  1. Пошаговые инструкции
  2. Бакеты
  3. Шифрование бакета

Шифрование бакета

Статья создана
Yandex Cloud
  • Добавить шифрование бакету
  • Убрать шифрование бакета

В Object Storage есть возможность шифровать объекты в бакете с помощью ключей KMS:

  • Добавьте шифрование бакету, чтобы все новые объекты шифровались указанным ключом.
  • Указывайте ключ шифрования при загрузке объекта через API.

Внимание

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

Чтобы расшифровывать объекты, у пользователя бакета вместе с ролью Object Storage должна быть роль на чтение ключа шифрования — kms.keys.encrypterDecrypter (см. описание роли).

Добавить шифрование бакету

Консоль управления
Terraform

Чтобы добавить ключ KMS:

  1. В консоли управления перейдите в бакет, для которого хотите настроить шифрование.

  2. В левой панели выберите Шифрование.

  3. В поле Ключ KMS выберите ключ или создайте новый:

    1. Если в каталоге еще нет ключей, нажмите кнопку Создать ключ. Если ключи есть, но они вам не подходят, нажмите кнопку Создать новый.
    2. Введите имя ключа.
    3. Выберите алгоритм шифрования и период ротации.
    4. Нажмите Создать.
  4. Нажмите кнопку Сохранить.

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

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

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

    provider "yandex" {
      cloud_id                 = "<идентификатор облака>"
      folder_id                = "<идентификатор каталога>"
      zone                     = "ru-central1-a"
      service_account_key_file = "key.json"
      }
    
    
    resource "yandex_kms_symmetric_key" "key-a" {
      name              = "<имя ключа>"
      description       = "<описание ключа>"
      default_algorithm = "AES_128"
      rotation_period   = "8760h" // 1 год
    }
    
    resource "yandex_storage_bucket" "test" {
      bucket     = "<имя бакета>"
      access_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"
          }
        }
      }
    }
    

    Где:

    • service_account_key_file — путь к файлу, содержащему IAM-токен для сервисного аккаунта (или содержимое файла).
    • default_algorithm — алгоритм шифрования, который будет использоваться с новой версией ключа. Новая версия генерируется при следующей ротации ключа. Значение по умолчанию AES_128.
    • rotation_period — период ротации. Чтобы отключить автоматическую ротацию, не указывайте этот параметр.
    • apply_server_side_encryption_by_default — параметры шифрования по умолчанию на стороне сервера:
      • kms_master_key_id — идентификатор мастер ключа KMS, используемый для шифрования.
      • sse_algorithm — используемый алгоритм шифрования на стороне сервера. Поддерживается только значение aws:kms.
  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.
    2. Выполните проверку с помощью команды:
      terraform plan
      

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

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

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

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

Убрать шифрование бакета

Консоль управления
Terraform

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

  1. В консоли управления перейдите в бакет, для которого хотите удалить шифрование.
  2. В левой панели выберите Шифрование.
  3. В поле Ключ KMS выберите Не выбрано.
  4. Нажмите кнопку Сохранить.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией Mozilla Public License.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

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

Подробнее о Terraform читайте в документации.

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

  1. Откройте файл конфигурации Terraform и удалите блок server_side_encryption_configuration в описании бакета.

    Пример описания бакета в конфигурации Terraform
    ...
    resource "yandex_storage_bucket" "test" {
      bucket     = "my-bucket"
      access_key = "YCAJE02jKxfGKszo6LxcZnUzc"
      secret_key = "YCNhwa3qK4kuGPk_Kthc39rn8jHtMLFyp7TvjCtZ"
      server_side_encryption_configuration { // Этот блок нужно удалить, чтобы отключить шифрование
        rule {
          apply_server_side_encryption_by_default {
            kms_master_key_id = "abjbeb2bgg4ljno7aqqo"
            sse_algorithm     = "aws:kms"
          }
        }
      }
    }
    ...
    
  2. В командной строке перейдите в папку, где расположен файл конфигурации Terraform.

  3. Проверьте конфигурацию командой:

    terraform validate
    

    Если конфигурация является корректной, появится сообщение:

    Success! The configuration is valid.
    
  4. Выполните команду:

    terraform plan
    

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

  5. Примените изменения конфигурации:

    terraform apply
    
  6. Подтвердите изменения: введите в терминал слово yes и нажмите Enter.

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

См. также

  • Шифрование в Object Storage

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Добавить шифрование бакету
  • Убрать шифрование бакета