데이터베이스의 암호화 인증서를 나열하기위한 쿼리


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.