Aracılığıyla paylaş


ADD SIGNATURE (Transact-SQL)

Bir saklı yordam, işlev, derleme veya tetikleyici bir dijital imza ekler.

Topic link iconTransact-SQL sözdizimi kuralları

ADD [ COUNTER ] SIGNATURE TO module_class::module_name 
    BY <crypto_list> [ ,...n ]

<crypto_list> ::=
    CERTIFICATE cert_name
    | CERTIFICATE cert_name [ WITH PASSWORD = 'password' ]
    | CERTIFICATE cert_name WITH SIGNATURE = signed_blob 
    | ASYMMETRIC KEY Asym_Key_Name
    | ASYMMETRIC KEY Asym_Key_Name [ WITH PASSWORD = 'password' ]
    | ASYMMETRIC KEY Asym_Key_Name WITH SIGNATURE = signed_blob

Bağımsız değişkenler

  • module_class
    İmzanın eklendiği modülünün bir sınıftır.Şema kapsamlı modülleri için varsayılan nesne olur.

  • module_name
    Saklı yordam, işlev, derleme veya tetikleyici imzalı veya countersigned adıdır.

  • sertifika cert_name
    Bir sertifikayla imzalamak veya saklı yordam, işlev, derleme veya tetikleyici onay imzası atmak adıdır.

  • İLE PASSWORD = ' password'
    Asimetrik anahtar ve sertifika özel anahtarının şifresini çözmek için gerekli olan paroladır.Bu yan tümce ise yalnızca özel anahtar veritabanı yöneticisi anahtarı tarafından korunmadığı, gerekir.

  • İMZA = signed_blob
    İmzalı, ikili büyük nesne (BLOB) modülü belirtir.Bu yan, özel anahtar teslim olmadan bir modül sevk etmek istediğiniz zaman yararlıdır.When you use this clause, only the module, signature, and public key are required to add the signed binary large object to a database.signed_blob is the blob itself in hexadecimal format.

  • Asym_Key_Name ASIMETRIK ANAHTAR
    Bir asimetrik anahtar ile oturum açın veya saklı yordam, işlev, derleme veya tetikleyici counter-sign adıdır.

Remarks

İmzalanmış modül veya counter-signed ve bunu imzalamak için kullanılan bir asimetrik anahtar ve sertifika önceden mevcut olmalıdır.Her karakterin modülünde imza hesaplamaya dahil edilir.Bu önde gelen satırbaşları içerir ve satır beslemeleri.

Modül imzalanmış ve herhangi bir sayıda sertifika ve asimetrik anahtarlar tarafından counter-signed.

Modülü değiştirildiğinde imza modülün bırakıldı.

Bir modül içerir bir yürütmek AS yan tümce, güvenlik kimliği (SID) sorumlusunun bulunur da bir parçası olarak imzalama işlemi.

Uyarı

İmzalama modülü yalnızca hiçbir zaman reddetme veya izinleri iptal izinleri vermek için kullanılır.

İmzalar hakkında bilgi sys.crypt_properties katalog görünümünde görülebilir.

İzinler

Nesne üzerinde ALTER iznine ve asimetrik anahtar ve sertifika Denetim izni gerektirir.Kullanıcı ilişkili bir özel anahtar parolayla korunmuşsa, parola olması gerekir.

Örnekler

C.Bir saklı yordam, bir sertifika kullanarak imza

Aşağıdaki örnek saklı yordam imzalarHumanResources.uspUpdateEmployeeLoginsertifika ile birlikteHumanResourcesDP.

USE AdventureWorks;
ADD SIGNATURE TO HumanResources.uspUpdateEmployeeLogin 
    BY CERTIFICATE HumanResourcesDP;
GO

b.Bir saklı yordam imzalı bir BLOB kullanarak imzalama

Aşağıdaki örnek, yeni bir veritabanı oluşturur ve örnekte kullanmak üzere bir sertifika oluşturur.Örnek oluşturur ve basit bir saklı yordam imzalar ve imza BLOB alır dansys.crypt_properties.Yordamı daha sonra iptal edilen yeniden ve.Örneğin, yordam ile imza sözdizimini kullanarak imzalar.

CREATE DATABASE TestSignature ;
GO
USE TestSignature ;
GO
-- Create a CERTIFICATE to sign the procedure.
CREATE CERTIFICATE cert_signature_demo 
    ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'
    WITH SUBJECT = 'ADD SIGNATURE demo';
GO
-- Create a simple procedure.
CREATE PROC [sp_signature_demo]
AS
    PRINT 'This is the content of the procedure.' ;
GO
-- Sign the procedure.
ADD SIGNATURE TO [sp_signature_demo] 
    BY CERTIFICATE [cert_signature_demo] 
    WITH PASSWORD = 'pGFD4bb925DGvbd2439587y' ;
GO
-- Get the signature binary BLOB for the sp_signature_demo procedure.
SELECT cp.crypt_property
    FROM sys.crypt_properties AS cp
    JOIN sys.certificates AS cer
        ON cp.thumbprint = cer.thumbprint
    WHERE cer.name = 'cert_signature_demo' ;
GO

The crypt_property signature that is returned by this statement will be different each time you create a procedure.Bu örnekte kullanılacak sonucu not alın.Bu örnekte gösterilen sonucudur: 0x831F5530C86CC8ED606E5BC2720DA835351E46219A6D5DE9CE546297B88AEF3B6A7051891AF3EE7A68EAB37CD8380988B4C3F7469C8EABDD9579A2A5C507A4482905C2F24024FFB2F9BD7A953DD5E98470C4AA90CE83237739BB5FAE7BAC796E7710BDE291B03C43582F6F2D3B381F2102EEF8407731E01A51E24D808D54B373.

-- Drop the procedure so that a new version can be created.
DROP PROC [sp_signature_demo] ;
GO
-- Re-create the procedure by using the exact text including spaces.
CREATE PROC [sp_signature_demo]
AS
    PRINT 'This is the content of the procedure.' ;
GO
-- Add the signature. Use the signature BLOB obtained earlier.
ADD SIGNATURE TO [sp_signature_demo] 
    BY CERTIFICATE [cert_signature_demo]
    WITH SIGNATURE = 0x831F5530C86CC8ED606E5BC2720DA835351E46219A6D5DE9CE546297B88AEF3B6A7051891AF3EE7A68EAB37CD8380988B4C3F7469C8EABDD9579A2A5C507A4482905C2F24024FFB2F9BD7A953DD5E98470C4AA90CE83237739BB5FAE7BAC796E7710BDE291B03C43582F6F2D3B381F2102EEF8407731E01A51E24D808D54B373 ;
GO