SQL-сервер - маскирование / изменение значения uniqueidentifier перед вставкой - PullRequest
0 голосов
/ 25 апреля 2018

Таким образом, основная цель состоит в том, чтобы замаскировать или случайно изменить значение uniqueidentifier перед вставкой.

Например: у меня есть таблица

Create table Student
(
Student_ID masked WITH (FUNCTION='default()') DEFAULT NEWID()
Student_Name varchar(100),
)

Я вставляю новые данные:

insert into DDM_Student_Sample values ('B9BC5E61-0F3C-498F-AF2C-1AC16446A846','Stuart Little Joe')

Результат такой же, как и при вставке, т.е. uniqueidentifier = 'B9BC5E61-0F3C-498F-AF2C-1AC16446A846'

Я создал пользователя с логином:

CREATE USER MAIN_USER FOR LOGIN MAIN_USER; 
EXEC sp_addrolemember 'db_owner', 'MAIN_USER';

По общему количеству (http://www.sqlservercentral.com/articles/Security/149689/) itговорит, что вы должны создать пользователя без входа в систему . Может быть, в этом проблема, почему Student_ID не изменяется случайным образом.

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

model.StudentId = Guid.NewGuid();
model.SaveToDatabase();

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

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

Результат такой же, как и при вставке

Полагаю, вы видите фактическое значение, потому что у вас есть разрешение UNMASK или CONTROL (включая UNMASK). Более того, пользователь без разрешения UNMASK может «угадать» фактическое значение с помощью простого выбора

select from Student where Student_ID = 'B9BC5E61-0F3C-498F-AF2C-1AC16446A846'

Он покажет строку с замаскированным значением.

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

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

0 голосов
/ 25 апреля 2018
insert into DDM_Student_Sample values (NEWID(),'Stuart Little Joe')
...