Шифрование на стороне клиента DocumentDB
Шифрование на стороне клиента (Client-Side Field Level Encryption, FLE) позволяет шифровать отдельные поля документов перед их отправкой в базу данных. Это гарантирует, что данные остаются зашифрованными даже во время передачи и хранения, и расшифровать их можно только с использованием ключей, доступных на стороне клиента.
Managed Service for DocumentDB поддерживает эту возможность через совместимость с MongoDB Client-Side Field-Level Encryption (CSFLE).
Основные особенности
Шифрование на уровне поля — вы можете выборочно шифровать определённые поля в документах (например, номера кредитных карт и адреса), оставляя остальные данные в открытом виде.
Управление ключами — ключи шифрования хранятся и управляются на стороне клиента, что снижает риск компрометации данных в случае несанкционированного доступа к базе данных.
Алгоритмы шифрования — поддерживаются современные криптографические алгоритмы, такие как AES-256 в режимах GCM или CBC, обеспечивающие высокую степень защиты.
Используемые технологии и библиотеки
Для реализации шифрования на стороне клиента в приложении, взаимодействующем с Managed Service for DocumentDB, вам понадобятся криптографические библиотеки, совместимые с языком программирования вашего проекта. MongoDB предоставляет драйверы с поддержкой FLE , которые интегрируются с популярными библиотеками.
Примеры:
Python:
PyCryptodome — библиотека для симметричного и асимметричного шифрования, которая поддерживает алгоритмы AES, RSA и др.;
cryptography — библиотека с поддержкой современных криптографических примитивов, включая шифрование и управление ключами;
Java:
Java Cryptography Extension (JCE) — встроенный инструментарий Java для реализации шифрования, включая AES и SHA;
Bouncy Castle — расширенная библиотека с поддержкой множества криптографических алгоритмов и форматов;
Node.js:
crypto — встроенный модуль Node.js, предоставляющий функции для шифрования, хеширования и генерации ключей;
node-forge — библиотека для выполнения криптографических операций, таких как шифрование и подпись данных;
.NET:
System.Security.Cryptography — встроенная библиотека .NET, обеспечивающая доступ к алгоритмам шифрования, таким как AES, RSA, и хешированию.
Пример использования
Для настройки шифрования на стороне клиента в Managed Service for DocumentDB используйте официальный драйвер MongoDB для вашего языка программирования. Например, в Python с использованием библиотек pymongo и PyCryptodome:
где:
- <host> — внутренний или публичный IP-адрес сервера, к которому нужно подключиться. Подробнее см. раздел Доступ к кластеру DocumentDB.
Рекомендации
Хранение ключей — используйте защищённые сервисы управления секретами (например, AWS KMS, Azure Key Vault или собственное решение) для хранения ключей шифрования.
Производительность — шифрование на стороне клиента может увеличивать нагрузку на приложение. Тестируйте производительность при работе с большими объёмами данных.
Совместимость — убедитесь, что используемые драйверы MongoDB поддерживают FLE (версии 4.2 и выше).
- Шифрование соединения — активируйте TLS при создании кластера для защиты данных при передаче между клиентом и сервером DocumentDB.