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
メインDB・外部DB比較
REST API データソース
KingbaseES データソース

データテーブル

概要
標準テーブル
継承テーブル
ファイルテーブル
ツリーテーブル
カレンダーテーブル
コメントテーブル
式テーブル
SQL テーブル
データベースビュー

テーブルフィールド

概要
フィールド検証

基本タイプ

一行テキスト
複数行テキスト
携帯電話番号
メールアドレス
URL
整数
数値
パーセンテージ
パスワード
カラー
アイコン

選択タイプ

チェック
ドロップダウン(単一選択)
ドロップダウン(複数選択)
ラジオボタン
チェックボックス

マルチメディア

Markdown
Markdown (Vditor)
リッチテキスト
添付ファイル(リレーション)
添付ファイル(URL)

日付 & 時刻

概要
日時(タイムゾーン付き)
日時(タイムゾーンなし)
Unix タイムスタンプ
日付(時刻なし)
時刻

ジオメトリ

ポイント
ライン
円
ポリゴン

高度なタイプ

UUID
Nano ID
並び順
計算式
自動採番
JSON
データテーブル選択
暗号化

システム情報

作成日時
最終更新日時
作成者
最終更新者
スペース
テーブルOID

リレーションタイプ

概要
1対1
1対多
多対1
多対多
多対多(配列)

開発

概要
Previous Pageデータテーブル選択
Next Page作成日時
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#暗号化

#はじめに

顧客の電話番号、メールアドレス、カード番号といった機密性の高いビジネスデータは、暗号化してデータベースに暗号文として保存できます。

20251104192513

#暗号化の仕組み

WARNING

プラグインは自動的にアプリケーションキーを生成し、/storage/apps/main/encryption-field-keys ディレクトリに保存します。

アプリケーションキーのファイル名はキーIDとなり、拡張子が.keyとなります。ファイル名をむやみに変更しないでください。

アプリケーションキーファイルは適切に保管してください。もし紛失した場合、暗号化されたデータは復号できなくなります。

サブアプリケーションでプラグインを有効にしている場合、キーのデフォルト保存ディレクトリは /storage/apps/${サブアプリケーション名}/encryption-field-keys となります。

#動作原理

エンベロープ暗号化方式を採用しています。

20251118151339

#キーの作成プロセス

  1. 暗号化フィールドを初めて作成する際、システムは自動的に32ビットのアプリケーションキーを生成し、Base64エンコード形式でデフォルトの保存ディレクトリに保存します。
  2. 新しい暗号化フィールドを作成するたびに、そのフィールド用にランダムな32ビットのフィールドキーが生成されます。その後、アプリケーションキーとランダムに生成された16ビットのフィールド暗号化ベクトル(AES暗号化アルゴリズム)を使用して暗号化され、fieldsテーブルのoptionsフィールドに保存されます。

#フィールド暗号化プロセス

  1. 暗号化フィールドにデータを書き込むたびに、まずfieldsテーブルのoptionsフィールドから暗号化されたフィールドキーとフィールド暗号化ベクトルを取得します。
  2. アプリケーションキーとフィールド暗号化ベクトルを使用して、暗号化されたフィールドキーを復号します。その後、フィールドキーとランダムに生成された16ビットのデータ暗号化ベクトル(AES暗号化アルゴリズム)を使用してデータを暗号化します。
  3. 復号されたフィールドキーを使用してデータを署名し(HMAC-SHA256ダイジェストアルゴリズム)、Base64エンコードで文字列に変換します(生成されたデータ署名は、後続のデータ検索に使用されます)。
  4. 16ビットのデータ暗号化ベクトルと暗号化されたデータ暗号文をバイナリ結合し、Base64エンコードで文字列に変換します。
  5. データ署名のBase64エンコード文字列と、結合されたデータ暗号文のBase64エンコード文字列を.区切りで結合します。
  6. 最終的に結合された文字列をデータベースに保存します。

#環境変数

アプリケーションキーを指定したい場合は、環境変数 ENCRYPTION_FIELD_KEY_PATH を使用できます。プラグインは、そのパスにあるファイルをアプリケーションキーとして読み込みます。

アプリケーションキーファイルの要件:

  1. ファイル拡張子は.keyである必要があります。
  2. ファイル名はキーIDとして使用されます。一意性を保証するためにUUIDを使用することをお勧めします。
  3. ファイルの内容は、Base64エンコードされた32バイトのバイナリデータである必要があります。
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