SQL Server: всегда зашифрованный

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

  1. CEK хранится на клиентской машине? В строке подключения приложения? Видно ли это клиенту (= сотруднику)? Например, мы нанимаем нового секретаря, и у него должен быть доступ к конфиденциальным (и зашифрованным) данным. Мы даем ему новый ноутбук, даем ему права чтения / записи, устанавливаем приложение на его новый ноутбук и что еще? «Говорить» ему, что такое CEK? Храните CEK где-нибудь в реестре?

  2. Какова роль главного ключа столбца (CMK): для создания новых ключей CEK и их восстановления в случае их утери? Позволить одному уполномоченному лицу владеть ключом всей системы?


person Geri Reshef    schedule 10.06.2016    source источник


Ответы (1)


Ключи шифрования столбца (CEK) фактически хранятся в SQL Server вместе с данными, но их нельзя использовать без главного ключа столбца (CMK). Это CMK, который необходим клиентским приложениям для расшифровки данных. CMK может храниться в хранилище сертификатов Windows клиентских компьютеров или в хранилище ключей Azure.

Если вы используете мастер «Шифрование столбцов» в SSMS, он сгенерирует для вас оба типа ключей. Он спросит, где вы хотите хранить CMK (хранилище сертификатов Windows или хранилище ключей Azure), и позволит вам выбрать, использовать ли один CEK для каждого зашифрованного столбца или один CEK, общий для всех столбцов. Он также позволяет повторно использовать существующий CMK, если он есть.

Приложению, которому необходимо расшифровать данные, затем потребуется доступ к CMK (подробнее об этом чуть позже) и следующее дополнение к строке подключения:

Column Encryption Setting=Enabled;

При необходимости этот параметр также можно изменить программно:

connStringBuilder.ColumnEncryptionSetting = SqlConnectionColumnEncryptionSetting.Enabled;

Как приложение получает доступ к CMK, зависит от того, где он хранится:

  • Если CMK хранится в хранилище сертификатов Windows, драйвер с постоянным шифрованием автоматически получит его (CEK содержит сведения о CMK, необходимые для его использования).

  • Если CMK хранится в хранилище ключей Azure, то требуется несколько изменений для регистрации поставщика Azure Key Vault.

Я не использовал хранилище сертификатов Windows, но предполагаю, что вы предоставите новому компьютеру доступ к зашифрованным столбцам, экспортировав CMK из хранилища на существующем компьютере и импортировав его в хранилище на новом.

person Jonathan Sayce    schedule 10.06.2016
comment
Привет, Джонатан, Чтобы быть уверенным: CEK хранится на сервере, CMK хранится где-то еще (на клиенте или в Azure), пользователь должен иметь доступ к CMK. Если неавторизованный человек получит доступ к базе данных или получит ее резервную копию, он не сможет расшифровать зашифрованные столбцы, не получив доступа и к CMK. Наконец, хранится ли CEK в базе данных или на сервере? Если мы восстановим его на другом экземпляре или машине, придется ли нам дополнительно восстанавливать CEK или мы найдем его в самой базе данных? Еще раз спасибо! - person Geri Reshef; 11.06.2016
comment
Привет @Geri - да, верно. CEK хранится в базе данных, поэтому будет восстановлен при восстановлении базы данных. - person Jonathan Sayce; 11.06.2016