sys.fn_check_object_signatures (Transact-SQL)
适用于:SQL Server Azure SQL 托管实例 Analytics Platform System (PDW)
返回所有可签名对象的列表,并指示对象是否由指定证书或非对称密钥签名。 如果对象是由指定证书或非对称密钥签名,则还会返回该对象的签名是否有效。
语法
fn_ check_object_signatures (
{ '@class' } , { @thumbprint }
)
参数
{ '@class' }
标识提供的指纹类型:
“证书”
“非对称密钥”
@class 为 sysname 类型。
{ @thumbprint }
用来对密钥进行加密的证书的 SHA-1 哈希,或用来对密钥进行加密的非对称密钥的 GUID。 @指纹为 varbinary(20)。
返回的表
下表列出了fn_check_object_signatures返回的列。
列 | 类型 | 说明 |
---|---|---|
type | nvarchar(120) | 返回类型说明或程序集。 |
entity_id | int | 返回要计算的对象的对象 ID。 |
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
数据库的架构签名证书,对于该架构签名证书签名的具有有效签名的对象,返回值为 1 的 is_signed
和值为 1 的 is_signature_valid
。
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