Шифрование бакета
В Object Storage есть возможность шифровать объекты в бакете с помощью ключей KMS:
- Добавьте шифрование бакету, чтобы все новые объекты шифровались указанным ключом.
- Указывайте ключ шифрования при загрузке объекта через API.
Внимание
Данные в Object Storage шифруются по схеме envelope encryption. Удаление ключа равносильно уничтожению зашифрованных им данных.
Чтобы расшифровывать объекты, у пользователя бакета вместе с ролью Object Storage должна быть роль на чтение ключа шифрования — kms.keys.encrypterDecrypter
(см. описание роли).
Добавить шифрование бакету
Чтобы добавить ключ KMS:
-
В консоли управления перейдите в бакет, для которого хотите настроить шифрование.
-
В левой панели выберите Шифрование.
-
В поле Ключ KMS выберите ключ или создайте новый:
- Если в каталоге еще нет ключей, нажмите кнопку Создать ключ. Если ключи есть, но они вам не подходят, нажмите кнопку Создать новый.
- Введите имя ключа.
- Выберите алгоритм шифрования и период ротации.
- Нажмите Создать.
-
Нажмите кнопку Сохранить.
Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex Cloud.
Перед началом работы получите IAM-токен для сервисного аккаунта и запишите его в файл.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
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
.
-
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в папку, где вы создали конфигурационный файл.
- Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Разверните облачные ресурсы.
- Если в конфигурации нет ошибок, выполните команду:
terraform apply
- Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
Убрать шифрование бакета
Чтобы убрать шифрование, удалите ключ KMS:
- В консоли управления перейдите в бакет, для которого хотите удалить шифрование.
- В левой панели выберите Шифрование.
- В поле Ключ KMS выберите Не выбрано.
- Нажмите кнопку Сохранить.
Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией Mozilla Public License.
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Подробнее о Terraform читайте в документации.
Чтобы убрать шифрование бакета, созданного с помощью Terraform:
-
Откройте файл конфигурации 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" } } } } ...
-
В командной строке перейдите в папку, где расположен файл конфигурации Terraform.
-
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.Проверить изменения можно в консоли управления.