2009-06-09 2 views
9

У нас есть требование от клиента защитить базу данных, которую использует наше приложение, даже от их локальных администраторов (аудиторы просто дали им это требование).Как защитить базу данных от администратора сервера на сервере Sql

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

Мы могли бы сделать это с помощью шифрования в SQL Server 2005, но это будет мешать нашему ОРМ третьей стороной, и она имеет другие недостатки, как индексирование и т.д.

В Sql Server 2008 мы могли бы использовать TDE, но Я понимаю, что это решение не защищает пользователя от прав администратора Sql Server для запроса базы данных.

Есть ли передовая практика или известное решение этой проблемы?

Эта проблема может быть аналогична той, которая имеет приложение, размещенное хост-провайдером, и вы хотите защитить данные от администраторов хоста.

Мы можем использовать SQL Server 2005 или 2008.

+2

Я держу вкладку на этом, потому что я не думаю, что это возможно сделать. –

+1

Можете ли вы уточнить, что вы подразумеваете под «защитой»? Разве вы не хотите, чтобы они видели PII в БД, например, или вы пытаетесь остановить их от остановки службы и удаления файла mdf? –

+0

Является ли это первой компанией с сторонним приложением, являющимся интерфейсом SQL Server, аудиторы сделали эту рекомендацию? Кто-то должен быть админом. – JeffO

ответ

6

это было предложено много в последнее fewweeks. Ответы, как правило, сводятся к:

(

а) Если вы не контролируете приложение, которое вы обречены доверять DBA

или

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

)

и

с) делать обширный аудит, так что вы можете контролировать то, что ваши администраторы делают.

+0

+1 Хорошее резюме. –

0

Если вы не хотите, чтобы в группе администратора на сервере можно было обращаться к базе данных, удалите на сервере пользователя «BUILTIN \ Administrators».

Однако убедитесь, что у вас есть другой пользователь, который является системным администратором на сервере!

+0

Мы удаляем группу Builtin \ Administrators и добавляем группу DBA к роли sysadmin. Тем не менее, у нас есть определенный уровень доверия к нашим администраторам sys, потому что ничто не мешает им добавлять себя в группу DBA. – NYSystemsAnalyst

+0

В SQL Server 2008 BUILTIN \ Administrators не являются системными администраторами по умолчанию - вы должны их явно добавлять во время установки. Однако, если они все еще имеют доступ к фактическому блоку, они всегда могут закрыть службу, скопировать базы данных и переустановить SQL 2008 с ними в качестве админов. – Eric

0

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

Я не знаю, как именно это работает на более глубоком уровне.

1

Я думаю, что правильным решением было бы позволить доверенным людям быть DBA. Неясно, что вы являетесь администратором баз данных, у вас есть полный доступ, поэтому, на мой взгляд, ваш аудитор должен потребовать, чтобы у вас были процедуры для ограничения доступа к доступу администратора. Таким образом, вы работаете с системой через процессы вместо работы с системой (например, sql-сервер). Чтобы иметь человека, которому вы не доверяете, DBA будет гайкой ...

+2

Что делать, если база данных находится не в вашей организации, а у поставщика услуг хостинга? –

+0

Надеюсь, вы разместите свой сервер sql в тех местах, где вы доверяете, и, возможно, даже имеете соглашения. Не позволяйте никому получить ваши руки на ваш дБ, если вы им не доверяете. – khebbie

3

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

1- Зашифруйте за пределами SQLServer, перед вставками и обновлениями и расшифруйте после выбора. т.е.: Использование .net-шифрования. Даунсайд: вы теряете некоторые возможности индексирования и поиска, не можете использовать как и betweens.

2. Используйте сторонние инструменты (на уровне io), которые блокируют базу данных до тех пор, пока не будет предоставлен пароль. т.е.: www.Blockkk.com Даунсайд: вам нужно будет доверять стороннему инструменту, установленному на вашем сервере. Возможно, он не успевает с исправлениями SQL Server и т. Д.

3- Используйте решение аудита, которое будет отслеживать выбор, вставки, удаление и т. Д. И будет уведомлять (по электронной почте или журналу событий), если произошли нарушения. Нарушением выборки может быть dba, выполняющая выбор в вашей таблице зарплат. затем огонь дба и изменить все зарплаты.

+2

«затем огонь дБА и изменение всех зарплат» >> DBACount-1 == Зарплаты.Амонт * 1.10? –

4

Аудиторы всегда просят об этом, как будто они просят другие вещи, которые никогда не могут быть выполнены.

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

У меня когда-то был босс, который просил об общей избыточности системы, не указав, что он имел в виду, или сколько он готов заплатить и пожертвовать.