Проблема в том, что если кто-то уже имеет полный доступ к базе данных, то это всего лишь вопрос времени, когда он связывает записи с конкретными людьми. Где-то в вашей базе данных (или в самом приложении) вы должны будете установить связь между пользователем и элементами. Если кто-то имеет полный доступ, он получит доступ к этому механизму.
Нет абсолютно никакого способа предотвратить это.
Реальность такова, что, имея полный доступ, мы находимся в состоянии доверия. Это означает, что руководители компании должны верить, что даже если вы можете видеть данные, вы не будете действовать в соответствии с ними. Именно здесь в игру вступают такие мелочи, как этика.
Теперь, как уже говорилось, многие компании разделяют персонал, занимающийся разработкой и производством. Цель состоит в том, чтобы лишить Разработчика прямого контакта с живыми (т.е. реальными) данными. Это имеет ряд преимуществ, поскольку безопасность и надежность данных находятся на вершине кучи.
Единственный реальный недостаток заключается в том, что некоторые разработчики считают, что они не могут решить проблему без доступа к производственной среде. Однако это просто неправда.
Тогда производственный персонал будет единственным, имеющим доступ к работающим серверам. Как правило, они будут проверяться в большей степени (криминальная история и другие проверки данных), что сочувствует типу данных, которые вы должны защищать.
Смысл всего этого в том, что это проблема персонала; и не тот, который действительно может быть решен с помощью технических средств.
UPDATE
Другие здесь, похоже, упускают очень важную и жизненно важную часть головоломки. А именно, что данные вводятся в систему по причине. Эта причина почти универсальна, так что ее можно разделить. В случае отчета о расходах эти данные вводятся таким образом, чтобы бухгалтерия могла знать, кому возвращать деньги.
Это означает, что на некотором уровне система должна будет сопоставлять пользователей и элементы без входа в систему для ввода данных (т. Е. Продавца).
И поскольку эти данные должны быть связаны друг с другом, чтобы все участвующие стороны не могли набрать код безопасности для «освобождения» данных, то администратор БД абсолютно сможет просматривать журналы запросов, чтобы выяснить, кто есть кто. И очень легко добавить, независимо от того, сколько хеш-меток вы хотите добавить в него. Triple DES тоже вас не спасет.
В конце концов, все, что вы сделали, это усложнили разработку с абсолютно нулевым преимуществом безопасности. Я не могу подчеркнуть это достаточно: единственный способ скрыть данные из базы данных - это либо 1. чтобы данные были только доступными для самого человека, который их ввел, либо 2. чтобы они не существовали во-первых.
Относительно варианта 1, если единственный человек, который может когда-либо получить к нему доступ, это человек, который ввел его ... ну, нет никакого смысла для него в корпоративной базе данных.