このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
顧客の電話番号、メールアドレス、カード番号といった機密性の高いビジネスデータは、暗号化してデータベースに暗号文として保存できます。

プラグインは自動的にアプリケーションキーを生成し、/storage/apps/main/encryption-field-keys ディレクトリに保存します。
アプリケーションキーのファイル名はキーIDとなり、拡張子が.keyとなります。ファイル名をむやみに変更しないでください。
アプリケーションキーファイルは適切に保管してください。もし紛失した場合、暗号化されたデータは復号できなくなります。
サブアプリケーションでプラグインを有効にしている場合、キーのデフォルト保存ディレクトリは /storage/apps/${サブアプリケーション名}/encryption-field-keys となります。
エンベロープ暗号化方式を採用しています。

アプリケーションキーを生成し、Base64エンコード形式でデフォルトの保存ディレクトリに保存します。フィールドキーが生成されます。その後、アプリケーションキーとランダムに生成された16ビットのフィールド暗号化ベクトル(AES暗号化アルゴリズム)を使用して暗号化され、fieldsテーブルのoptionsフィールドに保存されます。fieldsテーブルのoptionsフィールドから暗号化されたフィールドキーとフィールド暗号化ベクトルを取得します。アプリケーションキーとフィールド暗号化ベクトルを使用して、暗号化されたフィールドキーを復号します。その後、フィールドキーとランダムに生成された16ビットのデータ暗号化ベクトル(AES暗号化アルゴリズム)を使用してデータを暗号化します。フィールドキーを使用してデータを署名し(HMAC-SHA256ダイジェストアルゴリズム)、Base64エンコードで文字列に変換します(生成されたデータ署名は、後続のデータ検索に使用されます)。データ暗号化ベクトルと暗号化されたデータ暗号文をバイナリ結合し、Base64エンコードで文字列に変換します。データ署名のBase64エンコード文字列と、結合されたデータ暗号文のBase64エンコード文字列を.区切りで結合します。アプリケーションキーを指定したい場合は、環境変数 ENCRYPTION_FIELD_KEY_PATH を使用できます。プラグインは、そのパスにあるファイルをアプリケーションキーとして読み込みます。
アプリケーションキーファイルの要件:
.keyである必要があります。
暗号化されたフィールドは、「等しい」「等しくない」「存在する」「存在しない」といったフィルタリングのみをサポートします。

データフィルタリングの仕組み:
フィールドキーを取得し、アプリケーションキーを使用してフィールドキーを復号します。フィールドキーを使用して、ユーザーが入力した検索テキストを署名します(HMAC-SHA256ダイジェストアルゴリズム)。.区切り文字を結合し、データベース内で暗号化フィールドに対して前方一致検索を実行します。
nocobase key-rotation コマンドを使用する前に、アプリケーションがこのプラグインをロードしていることを確認してください。
アプリケーションを新しい環境に移行した後、古い環境と同じキーを使い続けたくない場合は、nocobase key-rotation コマンドを使用してアプリケーションキーを置き換えることができます。
キーローテーションコマンドを実行するには、古い環境のアプリケーションキーを指定する必要があります。コマンド実行後、新しいアプリケーションキーが生成され、古いキーと置き換えられます。新しいアプリケーションキーはBase64エンコード形式でデフォルトの保存ディレクトリに保存されます。
サブアプリケーションのアプリケーションキーを置き換える場合は、--app-name パラメータを追加してサブアプリケーションのnameを指定する必要があります。