Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как защитить шифрованием данные от другого пользователя входящего в BUILTIN\Administrators  [new]
Иван Незнай
Guest
Здравствуйте, подскажите пожалуйста как сделать так чтобы шифрованные данные мог прочесть только один администратор windows?

вообщем сделал так
--создаю бд
create database ClinicDB

use clinicDB

-- таблицу
create table PatientTable (
 Id int,
 name nvarchar(30), 
 Docname varchar(20),
 SSN varbinary(60), 
 Problem varbinary(400))

-- создаю мастер key
create master key
ENCRYPTION BY password = 'ClinicDB1'


-- создаю сертификат
create certificate Doc1Cert 
with subject = 'Doc1cert'

-- симметричный ключ шифрованный сертификатом
create symmetric key Doc1Key 
with algorithm = TRIPLE_DES 
ENCRYPTION BY certificate Doc1Cert

-- открываю ключ
open symmetric key Doc1Key
DECRYPTION BY certificate Doc1cert

-- записываю шифрованные значения
insert into PatientTable values (
 1,
 'Alice',
 'Doc1', 
 encryptByKey(Key_GUID('Doc1Key'), '111-11-1111'), 
 encryptByKey(Key_GUID('Doc1Key'), 'Migraine'))

insert into PatientTable values (
 2,
 'Bob',
 'Doc1', 
 encryptByKey(Key_GUID('Doc1Key'), '222-22-2222'), 
 encryptByKey(Key_GUID('Doc1Key'), 'Stomach Ache'))

insert into PatientTable values (
 3,
 'Charles',
 'Doc1', 
 encryptByKey(Key_GUID('Doc1Key'), '333-33-3333'), 
 encryptByKey(Key_GUID('Doc1Key'), 'Sore throat'))
============================
далее через панель управления создаю новую учетную запись, администратора

на его основе создаю:
============================
CREATE LOGIN [IVAN\ADMIN2] FROM WINDOWS WITH DEFAULT_DATABASE=[ClinicDB]
CREATE USER [IVAN\ADMIN2] FOR LOGIN [IVAN\ADMIN2]

============================
далее через sql management добавляю роль sysadmin, в user mappings для ClinicDB ставлю галку db_owner
============================
Меняю пользователя в виндоуз, захожу как [IVAN\ADMIN2]

выполняю:
============================
open symmetric key Doc1Key
DECRYPTION BY certificate Doc1Cert


select
 Id,
 name,
 Docname, 
 convert (varchar, decryptbykey(SSN)) as SSN,
 convert (varchar, decryptbykey(Problem)) as Ailment 
from PatientTable

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

Спасибо.
Иван.
6 сен 12, 20:08    [13126442]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить шифрованием данные от другого пользователя входящего в BUILTIN\Administrators  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Иван Незнай
Здравствуйте, подскажите пожалуйста как сделать так чтобы шифрованные данные мог прочесть только один администратор windows?
Самое простое - зашифровать с паролем, который знает только один этот администратор. Ну или ключ зашифровать паролем.
6 сен 12, 22:20    [13126784]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить шифрованием данные от другого пользователя входящего в BUILTIN\Administrators  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Иван Незнай,

а ещё можно:
1. положить случайный пароль в некий текстовый файл;
2. поставить на нём атрибут "шифрованный";
3. создать связанный сервер для доступа к этому файлу. Параметр безопасности "Соединения для имён, отсутствующих в списке" установить в "Устанавливать с использованием текущего контекста безопасности имени входа".
4. для доступа к данным прочитать пароль функцией openquery(), ну и затем как обычно.
7 сен 12, 22:38    [13132886]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить