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
Представлення бази даних

Поля таблиці

Огляд
Валідація поля

Базові типи

Однорядковий текст
Багаторядковий текст
Номер телефону
Електронна пошта
URL
Ціле число
Число
Відсоток
Пароль
Колір
Іконка

Типи вибору

Прапорець
Спадне меню (одиночний вибір)
Спадне меню (множинний вибір)
Перемикачі
Група прапорців

Мультимедіа

Markdown
Markdown (Vditor)
Форматований текст
Вкладення (зв'язок)
Вкладення (URL)

Дата й час

Огляд
Дата і час (з часовим поясом)
Дата і час (без часового поясу)
Мітка часу Unix
Дата (без часу)
Час

Геометрія

Точка
Лінія
Коло
Полігон

Розширені типи

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

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

Дата створення
Дата оновлення
Створено ким
Оновлено ким
Простір імен
Table OID

Типи зв'язків

Огляд
Один до одного
Один до багатьох
Багато до одного
Багато до багатьох
Багато до багатьох (масив)

Розробка

Огляд
Previous PageВибір таблиці
Next PageДата створення
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Шифрування

#Вступ

Деякі конфіденційні бізнес-дані, такі як номери телефонів клієнтів, електронні адреси, номери карток тощо, можуть бути зашифровані. Після шифрування вони зберігаються в базі даних у вигляді шифрованого тексту.

20251104192513

#Способи шифрування

WARNING

Плагін автоматично генерує ключ застосунку, який зберігається в каталозі /storage/apps/main/encryption-field-keys.

Файл ключа застосунку має назву ID ключа з розширенням .key. Будь ласка, не змінюйте назву файлу без потреби.

Будь ласка, надійно зберігайте файл ключа застосунку. Якщо ви його втратите, зашифровані дані неможливо буде розшифрувати.

Якщо плагін увімкнено для дочірнього застосунку, ключ за замовчуванням зберігається в каталозі /storage/apps/${sub-application name}/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 та вказати name дочірнього застосунку.

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