Delen via


sp_describe_parameter_encryption (Transact-SQL)

van toepassing op: SQL Server 2016 (13.x) en hoger Azure SQL DatabaseAzure SQL Managed Instance

Analyseert de opgegeven Transact-SQL-instructie en de bijbehorende parameters om te bepalen welke parameters overeenkomen met databasekolommen die worden beveiligd met de functie Always Encrypted. Retourneert versleutelingsmetagegevens voor de parameters die overeenkomen met versleutelde kolommen.

Syntaxis

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

Argumenten

Belangrijk

Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.

[ @tsql = ] 'tsql-'

Een of meer Transact-SQL instructies. @tsql kan nvarchar(n) of nvarchar(max)zijn.

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

@params biedt een declaratietekenreeks voor parameters voor @tsql, die vergelijkbaar is met sp_executesql. Parameters kunnen nvarchar(n) of nvarchar(max)zijn.

Een tekenreeks die de definities bevat van alle parameters die zijn ingesloten in de Transact-SQL_batch. De tekenreeks moet een Unicode-constante of een Unicode-variabele zijn. Elke parameterdefinitie bestaat uit een parameternaam en een gegevenstype. n is een tijdelijke aanduiding die aanvullende parameterdefinities aangeeft. n is een tijdelijke aanduiding die aanvullende parameterdefinities aangeeft. Elke parameter die in de instructie is opgegeven, moet worden gedefinieerd in @params. Als de Transact-SQL-instructie of batch in de instructie geen parameters bevat, is @params niet vereist. NULL is de standaardwaarde voor deze parameter.

Retourwaarde

0 geeft aan dat het is gelukt. Iets anders geeft aan dat de fout is mislukt.

Resultatenset

sp_describe_parameter_encryption retourneert twee resultatensets:

  • De resultatenset waarin cryptografische sleutels worden beschreven die zijn geconfigureerd voor databasekolommen, komen de parameters van de opgegeven Transact-SQL-instructie overeen.

  • De resultatenset waarin wordt beschreven hoe bepaalde parameters moeten worden versleuteld. Deze resultatenset verwijst naar de sleutels die worden beschreven in de eerste resultatenset.

Elke rij van de eerste resultatenset beschrijft een paar sleutels: een versleutelde sleutel voor kolomversleuteling en de bijbehorende CMK (Column Master Key).

Kolomnaam Gegevenstype Beschrijving
column_encryption_key_ordinal Id van de rij in de resultatenset.
database_id Database-id.
column_encryption_key_id De id van de kolomversleutelingssleutel.

Opmerking: deze id geeft een rij aan in de sys.column_encryption_keys catalogusweergave.
column_encryption_key_version Gereserveerd voor toekomstig gebruik. Bevat momenteel altijd 1.
column_encryption_key_metadata_version binary(8) Een tijdstempel die de aanmaaktijd van de kolomversleutelingssleutel vertegenwoordigt.
column_encryption_key_encrypted_value varbinary(4000) De versleutelde waarde van de kolomversleutelingssleutel.
column_master_key_store_provider_name sysname- De naam van de provider voor het sleutelarchief dat de CMK bevat, die is gebruikt om de versleutelde waarde van de kolomversleutelingssleutel te produceren.
column_master_key_path nvarchar(4000) Het sleutelpad van de CMK, dat is gebruikt om de versleutelde waarde van de kolomversleutelingssleutel te produceren.
column_encryption_key_encryption_algorithm_name sysname- De naam van het versleutelingsalgoritmen dat wordt gebruikt om de versleutelingswaarde van de kolomversleutelingssleutel te produceren.

Elke rij van de tweede resultatenset bevat versleutelingsmetagegevens voor één parameter.

Kolomnaam Gegevenstype Beschrijving
parameter_ordinal Id van de rij in de resultatenset.
parameter_name sysname- Naam van een van de parameters die zijn opgegeven in het argument @params.
column_encryption_algorithm kleine Code die het versleutelingsalgoritmen aangeeft dat is geconfigureerd voor de kolom waarop de parameter overeenkomt. De momenteel ondersteunde waarde wordt 2 voor AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type kleine Code die het versleutelingstype aangeeft dat voor de kolom is geconfigureerd, komt de parameter overeen. De ondersteunde waarden zijn:

0 - tekst zonder opmaak (de kolom is niet versleuteld)
1 - deterministische versleuteling
2 : gerandomiseerde versleuteling.
column_encryption_key_ordinal Code van de rij in de eerste resultatenset. In de rij waarnaar wordt verwezen, wordt de kolomversleutelingssleutel beschreven die is geconfigureerd voor de kolom. De parameter komt overeen met.
column_encryption_normalization_rule_version kleine Versienummer van het type normalisatie-algoritme.

Opmerkingen

Een SQL Server-clientstuurprogramma dat Always Encrypted ondersteunt, roept automatisch sp_describe_parameter_encryption aan om versleutelingsmetagegevens op te halen voor geparameteriseerde query's die door de toepassing worden uitgegeven. Vervolgens gebruikt het stuurprogramma de versleutelingsmetagegevens om de waarden van parameters te versleutelen die overeenkomen met databasekolommen die zijn beveiligd met Always Encrypted. Deze vervangt de parameterwaarden voor tekst zonder opmaak die door de toepassing worden verzonden, met de versleutelde parameterwaarden voordat de query naar de database-engine wordt verzonden.

Machtigingen

De VIEW ANY COLUMN ENCRYPTION KEY DEFINITION- en VIEW ANY COLUMN MASTER KEY DEFINITION-machtigingen in de database vereisen.

Voorbeelden

In het volgende voorbeeld wordt de waarde voor ENCRYPTED_VALUEafgekapt voor weergavedoeleinden.

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

Dit is de eerste resultatenset:

Kolom Waarde
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

Dit is de tweede resultatenset:

Kolom Waarde
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