Шифрование данных в базе данных Oracle

Как можно зашифровать данные? Скажем, например, столбец зарплаты, даже администратор не должен видеть зашифрованные столбцы, если это возможно, данные должны быть видны только через приложение для пользователей, у которых есть доступ, который определен в приложении, изменения в приложении (добавление новых функций для шифрования / расшифровывать на уровне приложения) будет последним средством и минимальным.

До сих пор я думал о двух способах, которыми можно по достоинству оценить любые свежие идеи или плюсы и минусы приведенных ниже: 1. Использование Oracle TDE (прозрачное шифрование данных). - Con: Администратор, возможно, может предоставить себе права на просмотр данных. 2. Создание триггера для шифрования перед вставкой и что-то по конвейеру для извлечения.

1 ответ

Решение

Oracle Database Vault - единственный способ предотвратить доступ администратора баз данных к данным, хранящимся в базе данных. Однако это продукт с дополнительными затратами, и он требует наличия дополнительного набора администраторов безопасности, чья работа заключается в предоставлении администраторам баз данных любых привилегий, которые им действительно необходимы.

За исключением этого, вы будете искать решения, которые шифруют и дешифруют данные в приложении вне базы данных. Это предполагает внесение изменений в структуру базы данных (т.е. salary столбец будет объявлен как raw а не number). И это включает в себя изменения приложения для вызова процедур шифрования и дешифрования. И это требует, чтобы вы решили проблему управления ключами, которая, как правило, терпит неудачу в подобных решениях. Хранить ключ шифрования где-нибудь, чтобы приложение могло его получить, но где-то, к чему нет доступа ни одному администратору, обычно нетривиально. И тогда вам нужно убедиться, что ключ резервируется и восстанавливается отдельно, поскольку зашифрованные данные в базе данных бесполезны без ключа.

Однако большую часть времени я склоняюсь к тому, что правильный подход - позволить администратору БД просматривать данные и проверять выполненные ими запросы. Если вы видите, что один конкретный администратор баз данных выполняет запросы для развлечения, а не время от времени просматривает фрагменты данных в ходе выполнения своей работы, вы можете принять меры в этот момент. Знание того, что их запросы проверяются, как правило, достаточно, чтобы запретить администратору БД доступ к данным, в которых она на самом деле не нуждается.

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