sys.fn_check_object_signatures (Transact-SQL)
Возвращает список всех подписываемых объектов и показывает, был ли объект подписан указанным сертификатом или асимметричным ключом. Если объект подписан указанным сертификатом или асимметричным ключом, возвращает также данные о том, является ли подпись объекта допустимой.
Синтаксис
fn_ check_object_signatures (
{ '@class' } , { @thumbprint }
)
Аргументы
{ '@class' }
Идентифицирует тип предоставляемого отпечатка:'certificate'
'asymmetric key'
Аргумент @class имеет тип sysname.
{ @thumbprint }
Хэш SHA-1 сертификата, с помощью которого был зашифрован ключ, или идентификатор GUID асимметричного ключа, которым был зашифрован этот ключ. Аргумент @thumbprint имеет тип varbinary(20).
Возвращаемые таблицы
Следующая таблица содержит список столбцов, возвращаемых функцией fn_check_object_signatures.
Столбец |
Тип |
Описание |
---|---|---|
type |
nvarchar(120) |
Возвращает описание типа или сборки. |
entity_id |
int |
Возвращает идентификатор оцениваемого объекта. |
is_signed |
int |
Возвращает значение 0, если объект не был подписан с помощью предоставленного отпечатка. Возвращает значение 1, если объект подписан с помощью предоставленного отпечатка. |
is_signature_valid |
int |
Если значение is_signed равно 1, возвращает значение 0, если подпись не является допустимой. Возвращает значение 1, если подпись является допустимой. Если значение is_signed равно 0, всегда возвращает 0. |
Замечания
Используйте функцию fn_check_object_signatures, чтобы убедиться, что злонамеренные пользователи не проводили манипуляции с объектами.
Разрешения
Необходимо разрешение VIEW DEFINITION на сертификат или асимметричный ключ.
Примеры
В следующем примере выполняется поиск сертификата подписывания схемы для базы данных master, а также возвращается значение is_signed, равное 1, и значение is_signature_valid, равное 1, для тех объектов, которые подписаны сертификатом подписывания схемы и имеют допустимые подписи.
USE master
-- Declare a variable to hold the thumbprint.
DECLARE @thumbprint varbinary(20) ;
-- Populate the thumbprint variable with the master database schema signing certificate.
SELECT @thumbprint = thumbprint
FROM sys.certificates
WHERE name LIKE '%SchemaSigningCertificate%' ;
-- Evaluates the objects signed by the schema signing certificate
SELECT type, entity_id, OBJECT_NAME(entity_id) AS [object name], is_signed, is_signature_valid
FROM sys.fn_check_object_signatures ('certificate', @thumbprint) ;
GO