Udostępnij za pośrednictwem


sp_describe_parameter_encryption (Transact-SQL)

Dotyczy: SQL Server 2016 (13.x) i nowszych Azure SQL DatabaseAzure SQL Managed Instance

Analizuje określoną instrukcję Transact-SQL i jej parametry, aby określić, które parametry odpowiadają kolumnom bazy danych chronionym za pomocą funkcji Always Encrypted. Zwraca metadane szyfrowania dla parametrów odpowiadających zaszyfrowanym kolumnom.

Składnia

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

Argumenty

Ważny

Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.

[ @tsql = ] 'tsql'

Co najmniej jedna instrukcja Transact-SQL. @tsql może być nvarchar(n) lub nvarchar(max).

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

@params zawiera ciąg deklaracji parametrów dla @tsql, który jest podobny do sp_executesql. Parametry mogą być nvarchar(n) lub nvarchar(max).

Ciąg zawierający definicje wszystkich parametrów osadzonych w SQL_batch transact-SQL_batch. Ciąg musi być stałą Unicode lub zmienną Unicode. Każda definicja parametru składa się z nazwy parametru i typu danych. n jest symbolem zastępczym wskazującym dodatkowe definicje parametrów. n jest symbolem zastępczym wskazującym dodatkowe definicje parametrów. Każdy parametr określony w instrukcji musi być zdefiniowany w @params. Jeśli instrukcja Transact-SQL lub partia w instrukcji nie zawiera parametrów, @params nie jest wymagana. NULL jest wartością domyślną tego parametru.

Wartość zwracana

0 wskazuje powodzenie. Wszystkie inne elementy wskazują błąd.

Zestaw wyników

sp_describe_parameter_encryption zwraca dwa zestawy wyników:

  • Zestaw wyników opisujący klucze kryptograficzne skonfigurowane dla kolumn bazy danych, parametry określonej instrukcji Transact-SQL odpowiadają.

  • Zestaw wyników opisujący sposób szyfrowania określonych parametrów. Ten zestaw wyników odwołuje się do kluczy opisanych w pierwszym zestawie wyników.

Każdy wiersz pierwszego zestawu wyników opisuje parę kluczy: zaszyfrowany klucz szyfrowania kolumny i odpowiadający mu klucz główny kolumny (CMK).

Nazwa kolumny Typ danych Opis
column_encryption_key_ordinal Identyfikator wiersza w zestawie wyników.
database_id Identyfikator bazy danych.
column_encryption_key_id Identyfikator klucza szyfrowania kolumny.

Uwaga: ten identyfikator określa wiersz w widoku wykazu sys.column_encryption_keys.
column_encryption_key_version Zarezerwowane do użytku w przyszłości. Obecnie zawsze zawiera 1.
column_encryption_key_metadata_version binary(8) Sygnatura czasowa reprezentująca czas tworzenia klucza szyfrowania kolumny.
column_encryption_key_encrypted_value varbinary(4000) Zaszyfrowana wartość klucza szyfrowania kolumny.
column_master_key_store_provider_name nazwa systemu Nazwa dostawcy magazynu kluczy, który zawiera klucz cmK, który został użyty do wygenerowania zaszyfrowanej wartości klucza szyfrowania kolumny.
column_master_key_path nvarchar(4000) Ścieżka klucza, która została użyta do utworzenia zaszyfrowanej wartości klucza szyfrowania kolumny.
column_encryption_key_encryption_algorithm_name nazwa systemu Nazwa algorytmu szyfrowania używanego do generowania wartości szyfrowania klucza szyfrowania kolumny.

Każdy wiersz drugiego zestawu wyników zawiera metadane szyfrowania dla jednego parametru.

Nazwa kolumny Typ danych Opis
parameter_ordinal Identyfikator wiersza w zestawie wyników.
parameter_name nazwa systemu Nazwa jednego z parametrów określonych w argumencie @params.
column_encryption_algorithm tinyint Kod wskazujący algorytm szyfrowania skonfigurowany dla kolumny, do których odpowiada parametr. Obecnie obsługiwana wartość jest 2 dla AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type tinyint Kod wskazujący typ szyfrowania skonfigurowany dla kolumny, który odpowiada parametrowi . Obsługiwane wartości to:

0 — zwykły tekst (kolumna nie jest szyfrowana)
1 — szyfrowanie deterministyczne
2 — szyfrowanie losowe.
column_encryption_key_ordinal Kod wiersza w pierwszym zestawie wyników. W przywoływanym wierszu opisano klucz szyfrowania kolumny skonfigurowany dla kolumny, który odpowiada parametrowi .
column_encryption_normalization_rule_version tinyint Numer wersji algorytmu normalizacji typu.

Uwagi

Sterownik klienta programu SQL Server obsługujący funkcję Always Encrypted automatycznie wywołuje sp_describe_parameter_encryption w celu pobrania metadanych szyfrowania dla sparametryzowanych zapytań wystawionych przez aplikację. Następnie sterownik używa metadanych szyfrowania do szyfrowania wartości parametrów, które odpowiadają kolumnom bazy danych chronionym za pomocą funkcji Always Encrypted. Zastępuje ona wartości parametrów zwykłego tekstu przesłane przez aplikację przy użyciu zaszyfrowanych wartości parametrów przed wysłaniem zapytania do aparatu bazy danych.

Uprawnienia

Wymagaj uprawnień VIEW ANY COLUMN ENCRYPTION KEY DEFINITION i VIEW ANY COLUMN MASTER KEY DEFINITION w bazie danych.

Przykłady

Poniższy przykład obcina wartość dla ENCRYPTED_VALUE, na potrzeby wyświetlania.

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';

Oto pierwszy zestaw wyników:

Kolumna Wartość
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

Oto drugi zestaw wyników:

Kolumna Wartość
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