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