Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Практические руководства
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Приглашение нового пользователя и назначение ролей
    • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
    • Создание распределенной инфраструктуры с защищенным доступом
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Базовая настройка SWS
    • Экстренная защита сервисов в Application Load Balancer от DDoS на уровне L7
    • Передача логов с виртуальной машины в Cloud Logging
    • Запись логов балансировщика в PostgreSQL
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
    • Передача логов с Container Optimized Image в Cloud Logging
    • Добавление HTML-страницы для работы SmartCaptcha
    • Настройка алертов и дашбордов в Monitoring
    • Загрузка аудитных логов в MaxPatrol SIEM
    • Загрузка аудитных логов в SIEM Splunk
    • Загрузка аудитных логов в SIEM ArcSight
      • Какой способ шифрования выбрать?
      • Шифрование с помощью CLI и API Yandex Cloud
      • Шифрование с помощью SDK Yandex Cloud
      • Шифрование с помощью AWS Encryption SDK
      • Шифрование с помощью Google Tink
    • Шифрование для бакета Object Storage на стороне сервера
    • Шифрование секретов в HashiCorp Terraform
    • Управление ключами KMS с HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault
    • Передача логов кластера Yandex MPP Analytics for PostgreSQL в Yandex Cloud Logging

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

  • Добавление зависимостей
  • Аутентификация
  • Аутентификация с сервисным аккаунтом, привязанным к виртуальной машине Yandex Cloud
  • Аутентификация с произвольным сервисным аккаунтом
  • Аутентификация с аккаунтом на Яндексе
  • Шифрование и расшифрование данных
  1. Безопасность
  2. Шифрование данных
  3. Шифрование с помощью SDK Yandex Cloud

Шифрование данных с помощью SDK Yandex Cloud

Статья создана
Yandex Cloud
Обновлена 20 октября 2025 г.
  • Добавление зависимостей
  • Аутентификация
    • Аутентификация с сервисным аккаунтом, привязанным к виртуальной машине Yandex Cloud
    • Аутентификация с произвольным сервисным аккаунтом
    • Аутентификация с аккаунтом на Яндексе
  • Шифрование и расшифрование данных

С Yandex Key Management Service можно работать с помощью SDK Yandex Cloud. Реализация SDK есть на Java, Go, Python и Node.js.

SDK Yandex Cloud наиболее удобен для шифрования данных небольшого размера (ограничение на размер открытого текста – 32 КБ). Для шифрования данных большего объема рекомендуется использовать AWS Encryption SDK или Google Tink. Они шифруют данные по схеме envelope encryption.

Добавление зависимостейДобавление зависимостей

Перед началом работы необходимо добавить зависимости.

Java
Go

Добавьте зависимости с помощью Apache Maven:

<dependency>
    <groupId>com.yandex.cloud</groupId>
    <artifactId>java-sdk-services</artifactId>
    <version>2.4.2</version>
</dependency>

Установите SDK:

go get github.com/yandex-cloud/go-sdk

АутентификацияАутентификация

Аутентифицироваться можно с помощью:

  • сервисного аккаунта, привязанного к виртуальной машине Yandex Cloud;
  • произвольного сервисного аккаунта;
  • аккаунта на Яндексе.

Аутентификация с сервисным аккаунтом, привязанным к виртуальной машине Yandex CloudАутентификация с сервисным аккаунтом, привязанным к виртуальной машине Yandex Cloud

Java
Go

Аутентифицируйтесь с сервисным аккаунтом, привязанным к ВМ:

CredentialProvider credentialProvider = Auth.computeEngineBuilder().build();

Аутентифицируйтесь с сервисным аккаунтом, привязанным к ВМ:

credentials := ycsdk.InstanceServiceAccount()

Аутентификация с произвольным сервисным аккаунтомАутентификация с произвольным сервисным аккаунтом

В key.json должен содержаться авторизованный ключ сервисного аккаунта. Как создать авторизованный ключ читайте в разделе Создать авторизованный ключ.

Java
Go

Аутентифицируйтесь с произвольным сервисным аккаунтом:

CredentialProvider credentialProvider = Auth.apiKeyBuilder().fromFile(Paths.get("key.json")).build();

Аутентифицируйтесь с произвольным сервисным аккаунтом:

authorizedKey, err := iamkey.ReadFromJSONFile("key.json")
if err != nil {...}
credentials, err := ycsdk.ServiceAccountKey(authorizedKey)
if err != nil {...}

Аутентификация с аккаунтом на ЯндексеАутентификация с аккаунтом на Яндексе

Переменная token — это ваш OAuth-токен.

Java
Go

Аутентифицируйтесь с аккаунтом на Яндексе:

CredentialProvider credentialProvider = Auth.oauthTokenBuilder().build();

Аутентифицируйтесь с аккаунтом на Яндексе:

credentials := ycsdk.OAuthToken(token)

Шифрование и расшифрование данныхШифрование и расшифрование данных

Примечание

Изменения, вызванные eventually consistent операциями, становятся применимыми для шифрования и расшифрования с задержкой до трех часов.

Используйте методы encrypt и decrypt для шифрования и расшифрования данных. В коде используются следующие переменные:

  • endpoint – api.yandexcloud.kz:443.
  • keyId – идентификатор ключа KMS.
  • plaintext – открытый текст (не более 32 КБ).
  • ciphertext – шифртекст.
  • aad – AAD-контекст.
Java
Go
SymmetricCryptoServiceBlockingStub symmetricCryptoService = ServiceFactory.builder()
    .endpoint(endpoint)
    .credentialProvider(credentialProvider)
    .build()
    .create(
        SymmetricCryptoServiceBlockingStub.class,
        SymmetricCryptoServiceGrpc::newBlockingStub
    );

...

byte[] ciphertext = symmetricCryptoService.encrypt(SymmetricEncryptRequest.newBuilder()
    .setKeyId(keyId)
    .setPlaintext(ByteString.copyFrom(plaintext))
    .setAadContext(ByteString.copyFrom(aad))
    .build()
).getCiphertext().toByteArray();

...

byte[] plaintext = symmetricCryptoService.decrypt(SymmetricDecryptRequest.newBuilder()
    .setKeyId(keyId)
    .setCiphertext(ByteString.copyFrom(ciphertext))
    .setAadContext(ByteString.copyFrom(aad))
    .build()
).getPlaintext().toByteArray();

sdk, err := ycsdk.Build(context, ycsdk.Config{
  Endpoint:    endpoint,
  Credentials: credentials,
})
if err != nil {...}

...

response, err := sdk.KMSCrypto().SymmetricCrypto().Encrypt(context, &kms.SymmetricEncryptRequest{
  KeyId:      keyId,
  Plaintext:  plaintext,
  AadContext: aad,
})
if err != nil {...}
ciphertext := response.Ciphertext

...

response, err := sdk.KMSCrypto().SymmetricCrypto().Decrypt(context, &kms.SymmetricDecryptRequest{
  KeyId:      keyId,
  Ciphertext: ciphertext,
  AadContext: aad,
})
if err != nil {...}
plaintext := response.Plaintext

См. такжеСм. также

  • Yandex Cloud Java SDK.
  • Примеры работы с KMS с помощью Java SDK.
  • Yandex Cloud Go SDK.

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

Предыдущая
Шифрование с помощью CLI и API Yandex Cloud
Следующая
Шифрование с помощью AWS Encryption SDK
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»