Возможно ли безопасное автоматическое шифрование столбца mySQL с помощью триггера?
Например, я хочу создать такой триггер:
CREATE TRIGGER crypt_trg BEFORE UPDATE ON aaa FOR EACH ROW
BEGIN
SET new.testcol := AES_ENCRYPT(new.testcol, @key);
END;
Очевидно, что хранить ключ шифрования в самой базе данных небезопасно, поэтому я планирую создать переменную с именем @key при открытии соединения с помощью PHP, а затем использовать ее в триггере. Есть ли способ предоставить триггеру доступ к такой переменной сеанса?
Есть ли другой способ получить ключевую переменную из файловой системы сервера, а не из базы данных?
Есть ли другие альтернативы тому, как mySQL автоматически шифрует столбец без перезаписи каждого оператора вставки / обновления в моем приложении?
Если база данных может получить ключ из файловой системы автономно, то какая разница, если она получит его из «самой базы данных»?
Его просто немного безопаснее. Он немного запутан, и в случае, если база данных скомпрометирована, а файловая система нет, расшифровать невозможно. Я открыт для других предложений!
Тогда почему бы не использовать встроенное шифрование InnoDB в состоянии покоя? dev.mysql.com/doc/refman/8.0/en/…
Черт возьми, выглядит отлично, но минимальная версия плагина keyring - mysql 5.7.11, а я использую 5.5






Поскольку триггеры в конечном итоге представляют собой базу данных, действующую независимо от клиентских команд, ни при каких обстоятельствах не может быть гарантировано, что эта переменная будет установлена клиентом и, следовательно, будет как минимум ненадежной, а в худшем случае невозможной.