sys.fn_check_object_signatures (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

署名可能なすべてのオブジェクトの一覧を返し、オブジェクトが、指定した証明書または非対称キーで署名されているかどうかを示します。 指定した証明書または非対称キーによって署名されたオブジェクトが署名されている場合は、オブジェクトの署名が有効かどうかを返します。

Transact-SQL 構文表記規則

構文

  
fn_ check_object_signatures (   
    { '@class' } , { @thumbprint }   
  )   

引数

{ '@class' }
提供される拇印の種類を識別します。

  • 'certificate'

  • 'asymmetric key'

@クラスsysname です

{ @thumbprint }
キーの暗号化で使用された証明書の SHA-1 ハッシュ。または、キーの暗号化で使用された非対称キーの GUID。 @拇印varbinary(20)です

返されるテーブル

次の表に、 fn_check_object_signatures が返す列の一覧を示します。

Column 種類 説明
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_signature_valid値 1 を返is_signedします。

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  
  

参照

IS_OBJECTSIGNED (Transact-SQL)