Защита конфиденциальной информации от администратора базы данных в SQL Server 2008 - PullRequest
3 голосов
/ 24 мая 2009

Нашему клиенту необходимо зашифровать базу данных контента MOSS, чтобы БД контента не могла просматривать администратор БД или неавторизованные люди без правильного ключа шифрования. Похоже, прозрачное шифрование данных (TDE) в SQL Server 2008 не может защитить конфиденциальную информацию от администратора базы данных, поскольку TDE предназначен для защиты данных «в состоянии покоя». Кто-нибудь здесь сталкивался с этой проблемой?

Ответы [ 6 ]

6 голосов
/ 24 мая 2009

Мне кажется, что требование иметь конфиденциальные данные в базе данных - это доверие администратора базы данных.

Даже если вы могли бы зашифровать данные таким образом, каким dba не может их увидеть, он может прослушать соединение, по которому вы передаете ключ (или данные!), Или настроить триггеры для захвата данных перед шифрованием в В случае, если схема позволит это.

Короче говоря, получение надежного администратора базы данных - это более простое и лучшее решение.

2 голосов
/ 03 июня 2009

Та же проблема здесь ...

Мы - компания по размещению баз данных mssql, я могу сказать, что это не вопрос, доверять DBA или нет. Нашими клиентами являются банки и страховые компании. Их требования: «Администратор базы данных не может прочитать базу данных», поскольку она содержит очень важные данные.

В настоящее время мы ищем решение.

2 голосов
/ 24 мая 2009

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

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

Согласитесь с Винко здесь, получите БД, которому вы можете доверять, или который может пройти проверку.

1 голос
/ 24 мая 2009

Нет способа сделать это так, чтобы данные по-прежнему можно было использовать в БД.

Вы можете сделать это так, чтобы данные можно было использовать за пределами БД. Просто зашифруйте его перед операциями CRUD каким-либо методом.

Есть способы сделать это "разумно" сложнее для доступа администратора данных к данным, например. Вы можете хранить ключ как встроенные данные в функциях sqlclr, но двоичный код для них все еще доступен администратору БД. Однако это означает репликацию ключа, синхронизацию, и это в значительной степени подрывает эффективную безопасность.

0 голосов
/ 11 сентября 2013

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

Это проверенное решение, ничего нового.

0 голосов
/ 24 мая 2009

Доверяйте администраторам ?! Технически, если мы позволяем администратору базы данных контролировать безопасность без каких-либо ограничений, вся система становится уязвимой, потому что, если администратор базы данных скомпрометирован, безопасность всей системы нарушается, что может привести к катастрофе.

...