kintoneで個人情報を暗号化して保存する方法(無料)

口座番号のような機微な個人情報をkintoneで扱う場合、画面表示を隠す「マスキング」だけでは 不十分です。kintoneのREST APIは保存されている生の値をそのまま返すため、マスキングは値そのものを 守っていません。この記事では、無料プラグインでフィールドの値そのものをブラウザ内で暗号化して 保存する方法を、実際の設定画面と暗号化・復号結果つきで解説します。

マイナンバー(個人番号)を取り扱う場合の注意: マイナンバーの利用・保管には 番号法(マイナンバー法)等に基づく別途の法令要件があり、本プラグインによる暗号化だけで これらの要件を満たせるとは限りません。マイナンバーをkintoneで扱うかどうか、扱う場合の方法は、 必ず組織のセキュリティ担当・個人情報保護担当にご確認のうえご判断ください。

→ 対応プラグインを見る

執筆者: 羽鳥達郎(合同会社Pons) / kintoneアプリデザインスペシャリスト・基本情報技術者・cybozuオフィシャルパートナー ※本サイトで配布するプラグインは、サイボウズ株式会社のオフィシャルプロダクトではありません。

こんな方におすすめ

kintone標準機能ではどこまでできるか

kintoneの標準機能には、フィールドの値を暗号化して保存する機能はありません。アクセス権設定で 閲覧できるユーザーを絞ることはできますが、これは「誰が見られるか」の制御であり、値そのものは 平文のままREST APIから取得できます。JavaScriptカスタマイズを自作すれば、Web Crypto APIを使った 暗号化・復号ロジックを実装できますが、鍵の導出方式・保存フォーマット・編集時に復号しなかった フィールドの暗号文を保持し続ける処理まで含めると、簡単な作業ではありません。

JavaScript自作・他社プラグインとの比較、なぜGovAppsプラグインか

「フィールドの値そのものを暗号化して保存する」機能を用意する方法は、大きく4つあります。 それぞれの向き不向きをまとめました。

方法向いている場合注意点
kintone標準のアクセス権設定のみ閲覧できるユーザーを絞るだけで十分な場合値そのものはREST API経由で平文のまま取得できる
JavaScriptを自作する社内に開発者がいて、独自の暗号方式・鍵管理が必要な場合暗号化・復号ロジック、編集時のデータ保護処理の実装・保守が必要
有料の他社プラグイン予算があり、より高度な鍵管理を求める場合月額課金が発生する。ソースコードが非公開で、暗号化方式を利用者側で確認しにくいことが多い
GovAppsプラグイン(このプラグイン)無料で試したい、社内・庁内でセキュリティを確認してから導入したい場合パスフレーズを紛失すると暗号化データは永久に復号できない

GovAppsのプラグインはすべて無料・広告なしで、追加課金なしで使い続けられます。 ソースコードはGitHubで全公開しているオープンソースなので、 「本当にAES-256-GCMで暗号化しているか」「パスフレーズをどこにも保存していないか」を 自治体・企業のセキュリティ担当者自身の目で確認できます(このプラグインも個別ページにセキュリティレビュー結果を掲載しています)。

フィールド暗号化プラグインでの実現方法

フィールド暗号化プラグインは、暗号化対象フィールド・ 復号ボタンの設置場所・パスフレーズの最小文字数を設定するだけで使えます。今回は「氏名」 (暗号化対象外)・「口座番号」「備考」(いずれも暗号化対象)を持つアプリで設定しました。

  1. 暗号化対象フィールドを選ぶ
    文字列(1行)・文字列(複数行)のフィールドから選べます。今回は「口座番号」「備考」を 選びました。
  2. 復号ボタンを設置するスペースフィールドと、パスフレーズの最小文字数を指定する
    あらかじめフォームに配置した「スペース」フィールドを選び、最小文字数は8にしました。
  3. 保存し、アプリを更新する
    保存しただけではプレビュー状態のため、必ず「アプリを更新」まで行います。
フィールド暗号化プラグインの設定画面。暗号化対象フィールドに「口座番号」「備考」をチェックし、復号ボタンを設置するスペースフィールドとパスフレーズの最小文字数(8)を設定した状態のスクリーンショット。

実行結果: 保存時に自動暗号化され、パスフレーズでのみ復号できる

レコード追加画面で氏名・口座番号・備考を入力すると、パスフレーズの設定欄が表示されます。 パスフレーズを入力して保存すると、口座番号・備考の値はレコード保存時にブラウザ内で AES-256-GCM暗号化されます。REST APIで取得した生の値を確認したところ、 FE1:接頭辞のbase64文字列(暗号文)になっており、入力した口座番号の数字列は 一切含まれていませんでした。

詳細画面を開くと、暗号化済みのフィールドは「🔒 暗号化されています」という表示に置き換わり、 パスフレーズを入力しない限り値は読めません。

レコード詳細画面。氏名「山田太郎」は通常表示、口座番号・備考は「🔒 暗号化されています」に置き換わり、パスフレーズ入力欄と「復号」ボタンが表示されている状態のスクリーンショット。

正しいパスフレーズを入力して「復号」を押すと、入力欄の下に平文の値が表示されます。 元のフィールド自体は暗号化されたままで、復号結果は別枠に一時的に表示される仕組みです。誤った パスフレーズを入力した場合はエラーになり、平文が漏れることはありません。

レコード詳細画面。「復号しました。」というメッセージとともに、口座番号「1234567」、備考「来庁時は本人確認書類を確認すること」が平文で表示されている状態のスクリーンショット。

あわせて確認したいポイント

対応するプラグイン

無料プラグイン

フィールド暗号化プラグイン

文字列フィールドの値をレコード保存時にAES-256-GCM暗号化し、パスフレーズ入力でのみ復号

プラグイン詳細を見る →

あわせて見たい記事・解決策ページ

あわせて検討したいkintone関連サービス