Как зашифровать данные перед вставкой / обновлением и расшифровать перед выбором из таблицы mysql?

У меня есть 80 таблиц в базе данных MySQL, и я хочу зашифровать данные этих таблиц, чтобы никто не мог получить доступ к данным напрямую.

1) Нет. запросов в моем проекте слишком велико, поэтому я не могу использовать AES_ENCRYPT (имя_столбца, ключ) для шифрования и AES_DECRYPT (имя_столбца, ключ) для расшифровки данных в каждом запросе.

2) Я могу использовать шифрование данных в состоянии покоя, но оно шифрует только файлы db (* .ibd). Однако данные все еще находятся в нормальной форме, и любой пользователь может видеть реальные данные из любой рабочей среды (MySQL Workbench, Sqlyog или командной строки).

Есть ли другой способ зашифровать и расшифровать данные MySQL? Или любой другой БД, который предоставляет функции для хранения данных в зашифрованном виде?

Я использую MySQL версии 5.7.23

Пометьте правильно !!! Если это MySQL, почему я вижу в вашем вопросе тег SQL Server ??? Это совершенно разные продукты.

Eric 23.10.2018 18:52

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

tadman 23.10.2018 18:57

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

tadman 23.10.2018 18:57
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
3
1 170
1

Ответы 1

1) Если стоимость шифрования / дешифрования с использованием базы данных слишком высока на уровне запроса, вы мало что можете сделать для снижения затрат, кроме отказа от использования шифрования.

2) Я этого не понимаю. Если вас беспокоит доступ пользователей к данным, к которым они не имеют доступа, как насчет ограничения доступа пользователей к данным на уровне таблицы [1]? Если некоторым пользователям нужен доступ к некоторым частям данных, вы можете использовать представления, открывая только эти части.

[1] https://dev.mysql.com/doc/refman/8.0/en/privilege-system.html

Другие вопросы по теме