Как зашифровать / расшифровать данные в некоторых столбцах таблицы, и когда вставляется новая запись, она также должна быть зашифрована - PullRequest
0 голосов
/ 18 декабря 2018

Я знаю, как это, чтобы вставить новую запись

INSERT INTO dbo.Customer_data (Customer_id, Customer_Name, Credit_card_number)
VALUES (25665, 'mssqltips4', EncryptByKey( Key_GUID('SymmetricKey1'), CONVERT(varchar,'4545-58478-1245') ) ); 

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

INSERT INTO dbo.Customer_data (Customer_id, Customer_Name, Credit_card_number)
VALUES (25665, 'mssqltips4','4545-58478-1245') ) );       

1 Ответ

0 голосов
/ 18 декабря 2018

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

Итак, вы можете создать отдельную таблицу для хранения зашифрованных данных:

CREATE TABLE [dbo].[Customer_data_encrypted]
(
    [customer_id] PRIMARY KEY -- you can create foreign key to the original one, too
   ,[name] VARBANRY(..)
   ,[cretit_card_numbe] VARBINARY(..)
);

Затем создать INSTEAD OF INSERT UPDATE DELETE триггер на исходной таблице. Логикав триггере все просто:

  1. при удалении, удаление из обеих таблиц
  2. при обновлении / вставке - шифрование данных и вставка в новую таблицу;использовать какую-то маску для исходной таблицы (например, *** или 43-****-****-****)

Затем выполните первоначальную миграцию, чтобы переместить данные из исходной таблицы в новую, а затем замаскироватьit.

Выполнение описанных выше шагов приятно, потому что:

  1. каждая вставка / обновление исходной таблицы продолжает работать
  2. Вы можете создать триггер с помощью EXECUTE AS OWNER чтобы иметь доступ к симметричным ключам и вносить изменения непосредственно в оператор T-SQL, не открывая сертификаты, или пользователями, которые не имеют к ним доступа
  3. во всех ссылках чтения, вы собираетесь получить данные маскиТаким образом, вы не беспокоитесь о критическом взломе приложения
  4. . Наличие триггера дает вам возможность легко создавать и изменять информацию

Это зависит от вашей среды и потребностей бизнеса, поскольку для одного изТаблицы Я сохранил зашифрованное значение в виде нового столбца, а не отдельной таблицы.Итак, выберите то, что вам больше подходит.

...