Duke Carey Ответов: 1

Конфиденциальные данные в SQL server-не позволяйте администратору просматривать данные


Мой клиент-консультант профессиональной спортивной лиги по вопросам, которые являются конфиденциальными для игроков. Теперь он хочет переместить базу данных SQL Server, которую мы обслуживали локально, на сервер, контролируемый лигой. Нам сказали, что, как только он окажется на их сервере, наш единственный доступ будет осуществляться через веб-службы или, когда мы захотим изменить схему или хранимые процедуры, через сценарии изменений, которые мы им передаем.

Я полагаю, мы могли бы жить с этим, но мой клиент непреклонен в том, что лига не сможет прочитать данные, и я понятия не имею, возможно ли это. Мои поиски в интернете оказались бесплодными.

Можем ли мы устроить это таким образом? Какие поисковые запросы мне понадобятся для google?

Спасибо

Что я уже пробовал:

множество поисковых запросов в google. Бегло взглянул на шифрование SQL Server, но то, что я прочитал, сбивало с толку

an0ther1

Привет Герцог,
Я уверен, что кто-то здесь гораздо более осведомлен, чем я, но мои первоначальные мысли таковы.
Основываясь на предпосылке, которую вы описали, шифрование базы данных не будет работать для вас. Это связано с тем, что администраторы сервера всегда смогут получить доступ к ключам базы данных. - см. ссылку MSDN; MSDN-ключи шифрования SQL Server и базы данных
можно было бы шифровать и расшифровывать данные в любом приложении, которое вы используете для чтения и записи в БД, но это может быть непрактично. Если вы используете веб-интерфейс, веб-сервер должен будет зашифровать и расшифровать каждую строку, которую вы отправили/получили с сервера. Кроме того, вам нужно будет убедиться, что у вас достаточно места для хранения - использование хэш-функции для шифрования паролей в C# резко увеличивает объем требуемого пространства (8 символов превращаются в 88).
Я бы предложил компромисс. Зашифруйте некоторые данные-вещи, которые являются личными и могут быть использованы для идентификации отдельных лиц/команды, - но с достаточным количеством данных это как бы обречено на провал.
Если бы мне дали базу данных, которая была частично зашифрована, но я знал, о чем идет речь, и некоторые данные были общедоступны, я бы вскоре идентифицировал этих людей.
Вы можете попробовать что - то вроде автономного главного списка идентификационных данных-не хранить его в базе данных, а просто использовать уникальный идентификатор в удаленной БД. Затем некоторое шифрование конфиденциальных данных.

с уважением

1 Ответов

Рейтинг:
1

Wendelius

Один из способов-использовать Всегда Зашифрован особенность движка базы данных. Таким образом, только клиентское приложение знает ключ для расшифровки данных. Взгляните на Всегда Зашифрован (Компонент Database Engine)[^] и с более широкой точки зрения: Безопасность данных, SQL Server 2016 и ваш бизнес | блог SQL Server[^].

Как отметил an0ther1, возможно, нецелесообразно шифровать все, только те данные, которые действительно нуждаются в защите.

Другой аспект, который должен быть реализован, - это одитинг, чтобы иметь возможность видеть, кто что делает (или пробовал). В безопасной среде важно постараться защитить данные как можно лучше, а также собрать информацию о возможных злоупотреблениях. Взгляните на Аудит SQL Server (компонент Database Engine)[^]