У меня есть 80 таблиц в базе данных MySQL, и я хочу зашифровать данные этих таблиц, чтобы никто не мог получить доступ к данным напрямую.
1) Нет. запросов в моем проекте слишком велико, поэтому я не могу использовать AES_ENCRYPT (имя_столбца, ключ) для шифрования и AES_DECRYPT (имя_столбца, ключ) для расшифровки данных в каждом запросе.
2) Я могу использовать шифрование данных в состоянии покоя, но оно шифрует только файлы db (* .ibd). Однако данные все еще находятся в нормальной форме, и любой пользователь может видеть реальные данные из любой рабочей среды (MySQL Workbench, Sqlyog или командной строки).
Есть ли другой способ зашифровать и расшифровать данные MySQL? Или любой другой БД, который предоставляет функции для хранения данных в зашифрованном виде?
Я использую MySQL версии 5.7.23
Вам нужно проконсультироваться со специалистом по безопасности, чтобы посоветовать вам, как подойти к этому, поскольку то, что вы предлагаете здесь, является всего лишь уровнем запутывания, на самом деле это не делает ваши данные более безопасными. Ваша база данных - это актив, который должен быть максимально безопасным, с максимальными настройками безопасности и минимальным количеством людей, которые должны иметь прямой доступ. Никакое количество AES не может магически обезопасить слабо защищенный сервер. Если вы не можете заблокировать свою базу данных, вы также не сможете должным образом защитить свои ключи, так что все это просто театр с нулевым повышением реальной безопасности.
Если вы зашифруете фактические значения базы данных, ваши индексы станут бесполезными, а ваша база данных превратится в не что иное, как двоичную слизь, с которой крайне неприятно работать. Шифруйте в неактивном состоянии, зашифруйте свои резервные копии и используйте чрезвычайно ограниченный доступ, предоставляйте только то, что строго необходимо.






1) Если стоимость шифрования / дешифрования с использованием базы данных слишком высока на уровне запроса, вы мало что можете сделать для снижения затрат, кроме отказа от использования шифрования.
2) Я этого не понимаю. Если вас беспокоит доступ пользователей к данным, к которым они не имеют доступа, как насчет ограничения доступа пользователей к данным на уровне таблицы [1]? Если некоторым пользователям нужен доступ к некоторым частям данных, вы можете использовать представления, открывая только эти части.
[1] https://dev.mysql.com/doc/refman/8.0/en/privilege-system.html
Пометьте правильно !!! Если это MySQL, почему я вижу в вашем вопросе тег
SQL Server??? Это совершенно разные продукты.