Aracılığıyla paylaş


sp_describe_parameter_encryption (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve üzeri Azure SQL VeritabanıAzure SQL Yönetilen Örneği

Always Encrypted özelliği kullanılarak korunan veritabanı sütunlarına karşılık gelen parametreleri belirlemek için belirtilen Transact-SQL deyimini ve parametrelerini analiz eder. Şifrelenmiş sütunlara karşılık gelen parametreler için şifreleme meta verilerini döndürür.

Sözdizimi

sp_describe_parameter_encryption
    [ @tsql = ] N'tsql'
    [ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]

Bağımsız değişken

Önemli

Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.

[ @tsql = ] 'tsql'

Bir veya daha fazla Transact-SQL deyimi. @tsqlnvarchar(n) veya nvarchar(max)olabilir.

[ @params = ] N'@parameter_namedata_type [ ,... n ]'

@params, @tsqlparametreleri için sp_executesqlbenzer bir bildirim dizesi sağlar. Parametreler nvarchar(n) veya nvarchar(max) olabilir.

Transact-SQL_batch eklenmiş tüm parametrelerin tanımlarını içeren bir dize. Dize bir Unicode sabiti veya Unicode değişkeni olmalıdır. Her parametre tanımı bir parametre adından ve bir veri türünden oluşur. n, ek parametre tanımlarını gösteren bir yer tutucudur. n, ek parametre tanımlarını gösteren bir yer tutucudur. deyiminde belirtilen her parametre @paramsiçinde tanımlanmalıdır. deyimindeki Transact-SQL deyimi veya toplu işlemi parametre içermiyorsa @params gerekli değildir. NULL bu parametre için varsayılan değerdir.

Dönüş değeri

0 başarıyı gösterir. Diğer her şey başarısız olduğunu gösterir.

Sonuç kümesi

sp_describe_parameter_encryption iki sonuç kümesi döndürür:

  • Veritabanı sütunları için yapılandırılmış şifreleme anahtarlarını açıklayan sonuç kümesi, belirtilen Transact-SQL deyiminin parametrelerine karşılık gelir.

  • Belirli parametrelerin nasıl şifrelenmesi gerektiğini açıklayan sonuç kümesi. Bu sonuç kümesi, ilk sonuç kümesinde açıklanan anahtarlara başvurur.

İlk sonuç kümesinin her satırı bir anahtar çiftini açıklar: şifrelenmiş sütun şifreleme anahtarı ve buna karşılık gelen sütun ana anahtarı (CMK).

Sütun adı Veri tipi Açıklama
column_encryption_key_ordinal int Sonuç kümesindeki satırın kimliği.
database_id int Veritabanı Kimliği.
column_encryption_key_id int Sütun şifreleme anahtarı kimliği.

Not: Bu kimliğinsys.column_encryption_keys katalog görünümünde bir satır gösterilir.
column_encryption_key_version int Gelecekte kullanmak üzere ayrılmıştır. Şu anda her zaman 1içerir.
column_encryption_key_metadata_version ikili (8) Sütun şifreleme anahtarının oluşturma zamanını temsil eden bir zaman damgası.
column_encryption_key_encrypted_value varbinary(4000) Sütun şifreleme anahtarının şifrelenmiş değeri.
column_master_key_store_provider_name sysname Sütun şifreleme anahtarının şifrelenmiş değerini üretmek için kullanılan CMK'yi içeren anahtar deposu için sağlayıcının adı.
column_master_key_path nvarchar(4000) Sütun şifreleme anahtarının şifrelenmiş değerini üretmek için kullanılan CMK'nin anahtar yolu.
column_encryption_key_encryption_algorithm_name sysname Sütun şifreleme anahtarının şifreleme değerini üretmek için kullanılan şifreleme algoritmasının adı.

İkinci sonuç kümesinin her satırı, bir parametre için şifreleme meta verilerini içerir.

Sütun adı Veri tipi Açıklama
parameter_ordinal int Sonuç kümesindeki satırın kimliği.
parameter_name sysname @params bağımsız değişkeninde belirtilen parametrelerden birinin adı.
column_encryption_algorithm tinyint Parametrenin karşılık gelen sütunu için yapılandırılan şifreleme algoritmasını gösteren kod. Şu anda desteklenen değer AEAD_AES_256_CBC_HMAC_SHA_256için 2.
column_encryption_type tinyint Parametrenin karşılık gelen sütunu için yapılandırılan şifreleme türünü gösteren kod. Desteklenen değerler şunlardır:

0 - düz metin (sütun şifrelenmez)
1 - belirleyici şifreleme
2 - rastgele şifreleme.
column_encryption_key_ordinal int İlk sonuç kümesindeki satırın kodu. Başvuruda bulunan satır, parametrenin karşılık gelen sütunu için yapılandırılan sütun şifreleme anahtarını açıklar.
column_encryption_normalization_rule_version tinyint Tür normalleştirme algoritmasının sürüm numarası.

Açıklamalar

Always Encrypted'ı destekleyen bir SQL Server istemci sürücüsü, uygulama tarafından verilen parametreli sorgular için şifreleme meta verilerini almak üzere sp_describe_parameter_encryption otomatik olarak çağırır. Ardından sürücü, Always Encrypted ile korunan veritabanı sütunlarına karşılık gelen parametrelerin değerlerini şifrelemek için şifreleme meta verilerini kullanır. Sorguyu veritabanı altyapısına göndermeden önce uygulama tarafından gönderilen düz metin parametre değerlerini şifrelenmiş parametre değerleriyle kullanır.

İzinler

Veritabanında VIEW ANY COLUMN ENCRYPTION KEY DEFINITION ve VIEW ANY COLUMN MASTER KEY DEFINITION izinlerini gerekli kılar.

Örnekler

Aşağıdaki örnek, görüntüleme amacıyla ENCRYPTED_VALUEdeğerini kesmektedir.

CREATE COLUMN MASTER KEY [CMK1]
WITH (
    KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
    KEY_PATH = N'CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305'
);
GO

CREATE COLUMN ENCRYPTION KEY [CEK1]
WITH VALUES (
    COLUMN_MASTER_KEY = [CMK1],
    ALGORITHM = 'RSA_OAEP',
    ENCRYPTED_VALUE = 0x016E00000163007500720072<...> -- truncated in this example
);
GO

CREATE TABLE t1 (
    c1 INT ENCRYPTED WITH (
        COLUMN_ENCRYPTION_KEY = [CEK1],
        ENCRYPTION_TYPE = Randomized,
        ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
        ) NULL,
);

EXECUTE sp_describe_parameter_encryption
    N'INSERT INTO t1 VALUES(@c1)',
    N'@c1 INT';

İlk sonuç kümesi aşağıdadır:

Sütun Değer
column_encryption_key_ordinal 1
database_id 5
column_encryption_key_id 1
column_encryption_key_version 1
column_encryption_key_metadata_version 0x99EDA60083A50000
column_encryption_key_encrypted_value 0x016E00000163007500720072<...>
column_master_key_store_provider_name MSSQL_CERTIFICATE_STORE
column_master_key_path CurrentUser/my/A66BB0F6DD70BDFF02B62D0F87E340288E6F9305
column_encryption_key_encryption_algorithm_name RSA_OAEP

İkinci sonuç kümesi aşağıdadır:

Sütun Değer
parameter_ordinal 1
parameter_name @c1
column_encryption_algorithm 1
column_encryption_type 1
column_encryption_key_ordinal 1
column_encryption_normalization_rule_version 1