次の方法で共有


sys.fn_check_object_signatures (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance Analytics Platform System (PDW)

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

Transact-SQL 構文表記規則

構文

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

引数

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

  • 'certificate'

  • 'asymmetric key'

@classsysname です。

{ @thumbprint }
キーの暗号化で使用された証明書の SHA-1 ハッシュ。または、キーの暗号化で使用された非対称キーの GUID。 @thumbprintvarbinary(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 データベースのスキーマ署名証明書を検索し、スキーマ署名証明書によって署名され、有効な署名を持つオブジェクトの 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  
  

参照

IS_OBJECTSIGNED (Transact-SQL)