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

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

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

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

Статья создана
Yandex Cloud
Обновлена 7 марта 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)

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

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

  • endpoint – api.cloud.yandex.net: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 ООО «Яндекс.Облако»