Эта документация была автоматически переведена ИИ.
Шифрование
Поле коллекции: ШифрованиеProfessional Edition+Введение
Некоторые конфиденциальные бизнес-данные, такие как номера телефонов клиентов, адреса электронной почты, номера карт и т. д., могут быть зашифрованы. После шифрования они будут храниться в базе данных в виде зашифрованного текста.

Метод шифрования
Плагин автоматически генерирует ключ приложения, который хранится в директории /storage/apps/main/encryption-field-keys.
Файл ключа приложения имеет имя, соответствующее ID ключа, с расширением .key. Пожалуйста, не изменяйте имя файла без необходимости.
Пожалуйста, обеспечьте надёжное хранение файла ключа приложения. В случае его утери зашифрованные данные не подлежат расшифровке.
Если плагин активирован для дочернего приложения, ключ по умолчанию сохраняется в директории /storage/apps/${имя_дочернего_приложения}/encryption-field-keys.
Принцип работы
Используется метод конвертного шифрования.

Процесс создания ключей
- При первом создании зашифрованного поля система автоматически генерирует 32-битный
ключ приложенияи сохраняет его в директории хранения по умолчанию в кодировке Base64. - При каждом создании нового зашифрованного поля для него генерируется случайный 32-битный
ключ поля. Затем он шифруется с использованиемключа приложенияи случайно сгенерированного 16-битноговектора шифрования поля(алгоритм шифрованияAES), после чего сохраняется в полеoptionsтаблицыfields.
Процесс шифрования поля
- При каждой записи данных в зашифрованное поле сначала извлекаются зашифрованный
ключ поляивектор шифрования поляиз поляoptionsтаблицыfields. - Зашифрованный
ключ полярасшифровывается с использованиемключа приложенияивектора шифрования поля. Затем данные шифруются с помощьюключа поляи случайно сгенерированного 16-битноговектора шифрования данных(алгоритм шифрованияAES). - Данные подписываются с использованием расшифрованного
ключа поля(алгоритм хешированияHMAC-SHA256) и преобразуются в строку в кодировке Base64 (полученнаяподпись данныхв дальнейшем используется для поиска данных). - 16-битный
вектор шифрования данныхи зашифрованныйтекст данныхобъединяются в двоичном формате, а затем кодируются в Base64. - Строка
подписи данныхв кодировке Base64 и объединённыйтекст данныхв кодировке Base64 соединяются с использованием разделителя.. - Итоговая объединённая строка сохраняется в базе данных.
Переменные окружения
Если вы хотите указать собственный ключ приложения, используйте переменную окружения ENCRYPTION_FIELD_KEY_PATH. Плагин загруз ит файл по указанному пути в качестве ключа приложения.
Требования к файлу ключа приложения:
- Расширение файла должно быть
.key. - Имя файла будет использоваться в качестве ID ключа; рекомендуется использовать UUID для обеспечения уникальности.
- Содержимое файла должно представлять собой 32-байтные двоичные данные, закодированные в Base64.
Настройка поля

Влияние на фильтрацию после шифрования
Зашифрованные поля поддерживают только следующие операции фильтрации: равно, не равно, существует, не существует.

Процесс фильтрации данных:
- Извлекается
ключ полязашифрованного поля и расшифровывается с использованиемключа приложения. - С помощью
ключа поляподписывается введённый пользователем текст (а лгоритм хешированияHMAC-SHA256). - Подписанный текст для поиска объединяется с разделителем
.для выполнения поиска по префиксу в базе данных.
Ротация ключей
Перед использованием команды nocobase key-rotation убедитесь, что плагин загружен.
При миграции приложения в новую среду вы можете использовать команду nocobase key-rotation для замены ключа приложения.
Для выполнения команды ротации ключей необходимо указать ключ приложения из старой среды. После выполнения команды будет сгенерирован новый ключ приложения, который будет сохранён (в кодировке Base64) в директории по умолчанию.
Для ротации ключа приложения дочернего приложения добавьте параметр --app-name:

