sys.fn_check_object_signatures (Transact-SQL)

Возвращает список всех подписываемых объектов и показывает, был ли объект подписан указанным сертификатом или асимметричным ключом. Если объект подписан указанным сертификатом или асимметричным ключом, возвращает также данные о том, является ли подпись объекта допустимой.

Значок ссылки на разделСинтаксические обозначения в 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

См. также

Справочник