Sdílet prostřednictvím


sp_describe_parameter_encryption (Transact-SQL)

platí pro: SQL Server 2016 (13.x) a novější azure SQL Databaseazure SQL Managed Instance

Analyzuje zadaný příkaz Transact-SQL a jeho parametry a určí, které parametry odpovídají databázovým sloupcům chráněným pomocí funkce Always Encrypted. Vrátí metadata šifrování parametrů, které odpovídají šifrovaným sloupcům.

Syntax

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

Argumenty

Důležitý

Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.

[ @tsql = ]tsql

Jeden nebo více příkazů Transact-SQL. @tsql může být nvarchar(n) nebo nvarchar(max).

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

@params poskytuje řetězec deklarace pro parametry pro @tsql, který je podobný sp_executesql. Parametry mohou být nvarchar(n) nebo nvarchar(max).

Řetězec, který obsahuje definice všech parametrů, které jsou vloženy v transact-SQL_batch. Řetězec musí být buď konstanta Unicode, nebo proměnná Unicode. Každá definice parametru se skládá z názvu parametru a datového typu. n je zástupný symbol označující další definice parametrů. n je zástupný symbol označující další definice parametrů. Každý parametr zadaný v příkazu musí být definován v @params. Pokud příkaz Transact-SQL nebo dávka v příkazu neobsahují parametry, @params se nevyžaduje. NULL je výchozí hodnota tohoto parametru.

Návratová hodnota

0 značí úspěch. Cokoli jiného značí selhání.

Sada výsledků

sp_describe_parameter_encryption vrátí dvě sady výsledků:

  • Sada výsledků popisující kryptografické klíče nakonfigurované pro databázové sloupce, parametry zadaného příkazu Transact-SQL odpovídají.

  • Sada výsledků popisující, jak mají být určité parametry šifrované. Tato sada výsledků odkazuje na klíče popsané v první sadě výsledků.

Každý řádek první sady výsledků popisuje dvojici klíčů: šifrovací klíč šifrovaného sloupce a odpovídající hlavní klíč sloupce (CMK).

Název sloupce Datový typ Popis
column_encryption_key_ordinal int ID řádku v sadě výsledků
database_id int ID databáze.
column_encryption_key_id int ID šifrovacího klíče sloupce.

Poznámka: toto ID označuje řádek v zobrazení katalogu sys.column_encryption_keys.
column_encryption_key_version int Vyhrazeno pro budoucí použití. V současné době vždy obsahuje 1.
column_encryption_key_metadata_version binární(8) Časové razítko představující čas vytvoření šifrovacího klíče sloupce.
column_encryption_key_encrypted_value varbinary(4000) Šifrovaná hodnota šifrovacího klíče sloupce.
column_master_key_store_provider_name sysname Název zprostředkovatele úložiště klíčů, který obsahuje klíč CMK, který byl použit k vytvoření šifrované hodnoty šifrovacího klíče sloupce.
column_master_key_path nvarchar(4000) Cesta ke klíči klíče CMK, která byla použita k vytvoření šifrované hodnoty šifrovacího klíče sloupce.
column_encryption_key_encryption_algorithm_name sysname Název šifrovacího algoritmu použitého k vytvoření šifrovací hodnoty šifrovacího klíče sloupce.

Každý řádek druhé sady výsledků obsahuje metadata šifrování pro jeden parametr.

Název sloupce Datový typ Popis
parameter_ordinal int ID řádku v sadě výsledků
parameter_name sysname Název jednoho z parametrů zadaných v argumentu @params
column_encryption_algorithm tinyint Kód označující šifrovací algoritmus nakonfigurovaný pro sloupec, který parametr odpovídá. Aktuálně podporovaná hodnota je 2 pro AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type tinyint Kód označující typ šifrování nakonfigurovaný pro sloupec odpovídá parametru. Podporované hodnoty jsou:

0 – prostý text (sloupec není šifrovaný)
1 – deterministické šifrování
2 – náhodné šifrování.
column_encryption_key_ordinal int Kód řádku v první sadě výsledků Odkazovaný řádek popisuje šifrovací klíč sloupce nakonfigurovaný pro sloupec, který odpovídá parametru.
column_encryption_normalization_rule_version tinyint Číslo verze algoritmu normalizace typu

Poznámky

Klientský ovladač SQL Serveru, který podporuje funkci Always Encrypted, automaticky volá sp_describe_parameter_encryption k načtení metadat šifrování pro parametrizované dotazy vydané aplikací. Ovladač pak pomocí metadat šifrování zašifruje hodnoty parametrů, které odpovídají sloupcům databáze chráněným funkcí Always Encrypted. Před odesláním dotazu do databázového stroje nahradí hodnoty parametrů prostého textu odesílané aplikací za šifrované hodnoty parametrů.

Dovolení

Vyžadovat oprávnění VIEW ANY COLUMN ENCRYPTION KEY DEFINITION a VIEW ANY COLUMN MASTER KEY DEFINITION v databázi.

Příklady

Následující příklad zkrátí hodnotu pro ENCRYPTED_VALUE, pro účely zobrazení.

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,
);

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

Tady je první sada výsledků:

Sloupec Hodnota
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

Tady je druhá sada výsledků:

Sloupec Hodnota
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