Requête pour répertorier le certificat de chiffrement pour les bases de données

15

Quel certificat est utilisé pour crypter chacune des bases de données sur les instances.

Je peux obtenir les données en utilisant ce qui suit, mais comment puis-je écrire les requêtes

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;

J'ai remarqué que les colonnes sys.certifcates.thumbprint et sys.dm_database_encryption_keys.encryptor_thumbprint contiennent les mêmes données.

Barry MSIH
la source

Réponses:

20

Vous pouvez vous inscrire sur l'empreinte numérique du certificat:

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;

Ma sortie d'échantillon:

database_name           encryptor_type    cert_name
=============           ==============    =========
tempdb                  ASYMMETRIC KEY    NULL
AdventureWorks2012TDE   CERTIFICATE       TdeCert
Thomas Stringer
la source
Notez que le encryptor_typechamp n'est disponible que sur SQL 2012+.
LowlyDBA
2

Pour une requête plus approfondie qui montre quelles bases de données sont cryptées ou non, leur certificat et IMPORTANT si la configuration du cryptage est réellement terminée ou non. Le chiffrement peut parfois prendre du temps à se terminer ou à rester bloqué.

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
Jhunter1
la source