Сертификат SQL Server и симметричный ключ

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

Следуя инструкциям Microsoft, я успешно зашифровал и расшифровал данные.

Но после некоторого теста у меня есть вопросы.

Предположим, кто-то получает несанкционированный доступ к базе данных (взлом) и может просматривать базу данных в SSMS со своего собственного компьютера. Ужасно он видит, что у меня есть сертификат и симметричный ключ.

Для отображения данных в примерах показан следующий запрос

OPEN symmetric KEY symmetrickey1 
decryption BY certificate certificate1
Now list the original ID, the encrypted ID  
SELECT customer_id, 
   credit_card_number_encrypt                                 AS 
   'Encrypted Credit Card Number', 
   CONVERT(VARCHAR, Decryptbykey(credit_card_number_encrypt)) AS 
   'Decrypted Credit Card Number' 
FROM   dbo.customer_data; 
-- Close the symmetric key 
CLOSE symmetric KEY symmetrickey1; 

Если приведенный выше запрос возвращает данные и может увидеть кредитную карту, как можно защитить ее? Разве не нужно вводить пароль где-то в запросе?

Я уверен, что я что-то здесь упускаю. Кто-нибудь может мне это объяснить?

1 ответ

Решение

Я должен был включить пароль для сертификации

CREATE CERTIFICATE Certificate1
Encryption By Password='Password123'
WITH SUBJECT = 'Protect Data'

для получения данных

OPEN Symmetric KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1 With Password='Password123'
;
select *,CONVERT(nvarchar(255),DECRYPTBYKEY(Credit_Card_No)) as
[Credit_Card_No3] from Customers
;
Close Symmetric Key SymmetricKey1
Другие вопросы по тегам