logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo
Обзор

Источники данных

Управление источниками данных
Основной источник данных

Внешние источники данных (базы данных)

Введение
Внешний MySQL
Внешний MariaDB
Внешний PostgreSQL
Внешний MSSQL
Внешний Oracle
Сравнение основной и внешних баз данных
Источник данных REST API
Источник данных KingbaseES

Таблицы данных

Обзор
Обычные таблицы
Наследуемые таблицы
Таблицы файлов
Древовидные таблицы
Таблицы-календари
Таблицы комментариев
Таблицы выражений
SQL-таблицы
Представления базы данных

Поля таблицы данных

Обзор
Валидация полей

Основные типы

Однострочный текст
Многострочный текст
Номер телефона
Email
URL
Целое число
Число
Процент
Пароль
Цвет
Иконка

Типы выбора

Флажок
Выпадающий список (одиночный выбор)
Выпадающий список (множественный выбор)
Радиокнопки
Чекбоксы

Мультимедиа

Markdown
Markdown (Vditor)
Rich Text
Вложение (связь)
Вложение (URL)

Дата и время

Обзор
Дата и время (с часовым поясом)
Дата и время (без часового пояса)
Unix Timestamp
Дата (без времени)
Время

Геометрические фигуры

Точка
Линия
Круг
Многоугольник

Продвинутые типы

UUID
Nano ID
Сортировка
Формула
Автонумерация
JSON
Выбор таблицы данных
Шифрование

Системная информация

Дата создания
Дата последнего изменения
Кем создано
Кем изменено
Пространство
Table OID

Типы связей

Обзор
Один к одному
Один ко многим
Многие к одному
Многие ко многим
Многие ко многим (массив)

Разработка

Обзор
Previous PageВыбор таблицы данных
Next PageДата создания
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Шифрование

#Введение

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

20251104192513

#Метод шифрования

WARNING

Плагин автоматически генерирует ключ приложения, который хранится в директории /storage/apps/main/encryption-field-keys.

Файл ключа приложения имеет имя, соответствующее ID ключа, с расширением .key. Пожалуйста, не изменяйте имя файла без необходимости.

Пожалуйста, обеспечьте надёжное хранение файла ключа приложения. В случае его утери зашифрованные данные не подлежат расшифровке.

Если плагин активирован для дочернего приложения, ключ по умолчанию сохраняется в директории /storage/apps/${имя_дочернего_приложения}/encryption-field-keys.

#Принцип работы

Используется метод конвертного шифрования.

20251118151339

#Процесс создания ключей

  1. При первом создании зашифрованного поля система автоматически генерирует 32-битный ключ приложения и сохраняет его в директории хранения по умолчанию в кодировке Base64.
  2. При каждом создании нового зашифрованного поля для него генерируется случайный 32-битный ключ поля. Затем он шифруется с использованием ключа приложения и случайно сгенерированного 16-битного вектора шифрования поля (алгоритм шифрования AES), после чего сохраняется в поле options таблицы fields.

#Процесс шифрования поля

  1. При каждой записи данных в зашифрованное поле сначала извлекаются зашифрованный ключ поля и вектор шифрования поля из поля options таблицы fields.
  2. Зашифрованный ключ поля расшифровывается с использованием ключа приложения и вектора шифрования поля. Затем данные шифруются с помощью ключа поля и случайно сгенерированного 16-битного вектора шифрования данных (алгоритм шифрования AES).
  3. Данные подписываются с использованием расшифрованного ключа поля (алгоритм хеширования HMAC-SHA256) и преобразуются в строку в кодировке Base64 (полученная подпись данных в дальнейшем используется для поиска данных).
  4. 16-битный вектор шифрования данных и зашифрованный текст данных объединяются в двоичном формате, а затем кодируются в Base64.
  5. Строка подписи данных в кодировке Base64 и объединённый текст данных в кодировке Base64 соединяются с использованием разделителя ..
  6. Итоговая объединённая строка сохраняется в базе данных.

#Переменные окружения

Если вы хотите указать собственный ключ приложения, используйте переменную окружения ENCRYPTION_FIELD_KEY_PATH. Плагин загрузит файл по указанному пути в качестве ключа приложения.

Требования к файлу ключа приложения:

  1. Расширение файла должно быть .key.
  2. Имя файла будет использоваться в качестве ID ключа; рекомендуется использовать UUID для обеспечения уникальности.
  3. Содержимое файла должно представлять собой 32-байтные двоичные данные, закодированные в Base64.
ENCRYPTION_FIELD_KEY_PATH=/path/to/my/app-keys/270263524860909922913.key

#Настройка поля

20240802173721

#Влияние на фильтрацию после шифрования

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

20240802174042

Процесс фильтрации данных:

  1. Извлекается ключ поля зашифрованного поля и расшифровывается с использованием ключа приложения.
  2. С помощью ключа поля подписывается введённый пользователем текст (алгоритм хеширования HMAC-SHA256).
  3. Подписанный текст для поиска объединяется с разделителем . для выполнения поиска по префиксу в базе данных.

#Ротация ключей

WARNING

Перед использованием команды nocobase key-rotation убедитесь, что плагин загружен.

При миграции приложения в новую среду вы можете использовать команду nocobase key-rotation для замены ключа приложения.

Для выполнения команды ротации ключей необходимо указать ключ приложения из старой среды. После выполнения команды будет сгенерирован новый ключ приложения, который будет сохранён (в кодировке Base64) в директории по умолчанию.

# --key-path указывает на `ключ приложения` старой среды
 yarn nocobase key-rotation --key-path /path/to/old-app-keys/270263524860909922913.key

Для ротации ключа приложения дочернего приложения добавьте параметр --app-name:

 yarn nocobase key-rotation --app-name a_w0r211vv0az --key-path /path/to/old-app-keys/270263524860909922913.key