暗号化されたフィールドを持つテーブルがあります。 MySQLのドキュメントを調べたところ、暗号化/復号化のためのカスタムデータ型を作成できないことがわかりました。これは理想的です。だから、代わりに、私は次のような見解を持っている:ここでも、MySQL
ドキュメントを通して読んだ後、私はそれが派生列とSSNを持っているので、ビューが挿入可能ではないことをMySQL - 暗号化カラムの操作
CREATE VIEW EMPLOYEE AS
SELECT ID, FIRST_NAME, LAST_NAME, SUPER_SECURE_DECRYPT(SSN) AS SSN
FROM EMPLOYEE_ENCRYPTED
学びましたフィールドは導出列であるため更新できません。ただし、ビューにトリガーを追加することはできません。そのため、ビューへの書き込みは実際にはオプションではありません。
これを回避するための試みで、私はに似トリガのカップルを作成しました:
CREATE TRIGGER EMPLOYEE_ENCRYPTED_UPDATE
BEFORE UPDATE ON EMPLOYEE_ENCRYPTED FOR EACH ROW
BEGIN
IF NEW.SSN <> OLD.SSN THEN
SET NEW.SSN = SUPER_SECURE_ENCRYPT(NEW.SSN);
END IF;
END;
だけでなく、それはとても似ているので、私はするつもりはない、挿入するための1(投稿する)。これは単に、ビューから読み込んでテーブルに書き込む必要があることを意味します。
これは暗号化された列(のように、彼らのSSNによって従業員を更新)を照会している更新文のwhere
句を供給することを除いてまともなソリューションです。一般的に、私は通常更新のために主キーを使用するので、これは問題ではありませんが、これを行う方法があれば他の暗号化されたフィールドを知る必要があります。
私はMySQL
を暗号化と復号化のために重いものにしたいと思っています。できるだけ摩擦なく開発者として働くことができます。暗号化されたフィールドについては心配する必要はありませんが、暗号化されたフィールドを使用することをアプリケーション開発者には願っています。これがここの最終目標です。どんな助けやアドバイスも感謝しています。