Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Безопасность в Yandex Cloud
  • Ключевые принципы безопасности
  • Разделение ответственности за обеспечение безопасности
  • Соответствие требованиям
  • Меры безопасности на стороне Yandex Cloud
  • Средства защиты, доступные пользователям облачных сервисов
  • Фреймворк безопасной работы с агентами AI-SAFE
    • Все руководства
      • Какой способ шифрования выбрать?
      • Шифрование данных с помощью CLI и API Yandex Cloud
      • Шифрование данных с помощью SDK Yandex Cloud
      • Шифрование данных с помощью AWS Encryption SDK
      • Шифрование данных с помощью Google Tink
      • Управление ключами Key Management Service с Terraform
      • Шифрование секретов в Terraform
      • Auto Unseal в HashiCorp Vault
      • Безопасная передача пароля в скрипт инициализации
      • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
      • Получение значения секрета Yandex Lockbox на стороне GitHub
      • Получение значения секрета Yandex Lockbox на стороне GitLab
  • Политика поддержки пользователей при проведении проверки уязвимостей
  • Бюллетени безопасности
  • Диапазоны публичных IP-адресов

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

  • Добавление зависимостей
  • Аутентификация
  • Аутентификация с сервисным аккаунтом, привязанным к виртуальной машине 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.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 ООО «Яндекс.Облако»