การค้นหารายการใบรับรองการเข้ารหัสสำหรับฐานข้อมูล


15

มีการใช้ใบรับรองใดในการเข้ารหัสแต่ละฐานข้อมูลในอินสแตนซ์

ฉันสามารถรับข้อมูลโดยใช้ข้อมูลต่อไปนี้ แต่ฉันจะเขียนแบบสอบถามได้อย่างไร

USE master
GO

-- this provides the list of certificates
SELECT * FROM sys.certificates


-- this provides the list of databases (encryption_state = 3) is encrypted
SELECT * FROM sys.dm_database_encryption_keys
 WHERE encryption_state = 3;

ฉันสังเกตเห็นว่าคอลัมน์ sys.certifcates.thumbprint และ sys.dm_database_encryption_keys.encryptor_thumbprint มีข้อมูลเดียวกัน

คำตอบ:


20

คุณสามารถเข้าร่วมในรหัสประจำตัวของใบรับรอง:

use master;
go

select
    database_name = d.name,
    dek.encryptor_type,
    cert_name = c.name
from sys.dm_database_encryption_keys dek
left join sys.certificates c
on dek.encryptor_thumbprint = c.thumbprint
inner join sys.databases d
on dek.database_id = d.database_id;

ผลลัพธ์ตัวอย่างของฉัน:

database_name           encryptor_type    cert_name
=============           ==============    =========
tempdb                  ASYMMETRIC KEY    NULL
AdventureWorks2012TDE   CERTIFICATE       TdeCert

โปรดทราบว่าencryptor_typeฟิลด์นี้มีเฉพาะใน SQL 2012+
LowlyDBA

2

สำหรับแบบสอบถามเชิงลึกเพิ่มเติมที่แสดงว่าฐานข้อมูลใดถูกเข้ารหัสหรือไม่ใบรับรองของพวกเขาและสำคัญมากหากการตั้งค่าการเข้ารหัสเสร็จสมบูรณ์จริงหรือไม่ การเข้ารหัสบางครั้งอาจใช้เวลานานกว่าจะเสร็จสมบูรณ์หรือติดขัด

SELECT D.name AS 'Database Name'
,c.name AS 'Cert Name'
,E.encryptor_type AS 'Type'
,case
    when E.encryption_state = 3 then 'Encrypted'
    when E.encryption_state = 2 then 'In Progress'
    else 'Not Encrypted'
end as state,
E.encryption_state, E.percent_complete, E.key_algorithm, E.key_length, E.* FROM sys.dm_database_encryption_keys E
right join sys.databases D on D.database_id = E.database_id
left join sys.certificates c ON E.encryptor_thumbprint=c.thumbprint
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.