sp_describe_parameter_encryption (Transact-SQL)
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
Analysiert die angegebene Transact-SQL-Anweisung und deren Parameter, um zu bestimmen, welche Parameter Datenbankspalten entsprechen, die mithilfe des Features "Immer verschlüsselt" geschützt sind. Gibt Verschlüsselungsmetadaten für die Parameter zurück, die verschlüsselten Spalten entsprechen.
Syntax
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
Argumente
[ @tsql = ] 'tsql'
Mindestens eine Transact-SQL-Anweisung. @tsql kann nvarchar(n) oder nvarchar(max)sein.
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@params stellt eine Deklarationszeichenfolge für Parameter für @tsql bereit, die ähnlich istsp_executesql
. Parameter können nvarchar(n) oder nvarchar(max)sein.
Eine Zeichenfolge, die die Definitionen aller Parameter enthält, die in transact-SQL_batch eingebettet sind. Die Zeichenfolge muss eine Unicode-Konstante oder eine Unicode-Variable sein. Jede Parameterdefinition besteht aus einem Parameternamen und einem Datentyp. n ist ein Platzhalter für zusätzlicher Parameterdefinitionen. n ist ein Platzhalter für zusätzlicher Parameterdefinitionen. Jeder in der Anweisung angegebene Parameter muss in @params definiert werden. Wenn die Transact-SQL-Anweisung oder der Batch in der Anweisung keine Parameter enthält, ist @params nicht erforderlich. NULL
ist der Standardwert für diesen Parameter.
Rückgabewert
0
gibt an, dass der Erfolg erfolgreich ist. Alles andere deutet auf Fehler hin.
Resultset
sp_describe_parameter_encryption
gibt zwei Resultsets zurück:
Das Resultset, das kryptografische Schlüssel beschreibt, die für Datenbankspalten konfiguriert sind, entsprechen den Parametern der angegebenen Transact-SQL-Anweisung.
Das Resultset, das beschreibt, wie bestimmte Parameter verschlüsselt werden sollen. Dieses Resultset verweist auf die schlüssel, die im ersten Resultset beschrieben werden.
Jede Zeile des ersten Resultsets beschreibt ein Schlüsselpaar: einen verschlüsselten Spaltenverschlüsselungsschlüssel und den entsprechenden Spaltenmasterschlüssel (CMK).
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
column_encryption_key_ordinal |
int | ID der Zeile im Resultset. |
database_id |
int | Datenbank-ID |
column_encryption_key_id |
int | Die Spaltenverschlüsselungsschlüssel-ID. Hinweis: Diese ID zeigt eine Zeile in der sys.column_encryption_keys Katalogansicht an. |
column_encryption_key_version |
int | Für die zukünftige Verwendung reserviert. Enthält derzeit immer 1 . |
column_encryption_key_metadata_version |
binary(8) | Ein Zeitstempel, der die Erstellungszeit des Spaltenverschlüsselungsschlüssels darstellt. |
column_encryption_key_encrypted_value |
varbinary(4000) | Der verschlüsselte Wert des Spaltenverschlüsselungsschlüssels. |
column_master_key_store_provider_name |
sysname | Der Name des Anbieters für den Schlüsselspeicher, der den CMK enthält, der verwendet wurde, um den verschlüsselten Wert des Spaltenverschlüsselungsschlüssels zu erzeugen. |
column_master_key_path |
nvarchar(4000) | Der Schlüsselpfad des CMK, der verwendet wurde, um den verschlüsselten Wert des Spaltenverschlüsselungsschlüssels zu erzeugen. |
column_encryption_key_encryption_algorithm_name |
sysname | Der Name des Verschlüsselungsalgorithmus, der verwendet wird, um den Verschlüsselungswert des Spaltenverschlüsselungsschlüssels zu erzeugen. |
Jede Zeile des zweiten Resultsets enthält Verschlüsselungsmetadaten für einen Parameter.
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
parameter_ordinal |
int | ID der Zeile im Resultset. |
parameter_name |
sysname | Name eines der parameter, die im argument @params angegeben sind. |
column_encryption_algorithm |
tinyint | Code, der den verschlüsselungsalgorithmus angibt, der für die Spalte konfiguriert ist, der der Parameter entspricht. Der derzeit unterstützte Wert ist 2 für AEAD_AES_256_CBC_HMAC_SHA_256 . |
column_encryption_type |
tinyint | Code, der den für die Spalte konfigurierten Verschlüsselungstyp angibt, entspricht der Parameter. Die unterstützten Werte sind:0 - Nur-Text (die Spalte ist nicht verschlüsselt)1 - deterministische Verschlüsselung2 - randomisierte Verschlüsselung. |
column_encryption_key_ordinal |
int | Code der Zeile im ersten Resultset. In der Zeile, auf die verwiesen wird, wird der für die Spalte konfigurierte Spaltenverschlüsselungsschlüssel beschrieben, dem der Parameter entspricht. |
column_encryption_normalization_rule_version |
tinyint | Versionsnummer des Typnormalisierungsalgorithmus. |
Hinweise
Ein SQL Server-Clienttreiber, der Always Encrypted unterstützt, ruft automatisch Aufrufe sp_describe_parameter_encryption
zum Abrufen von Verschlüsselungsmetadaten für parametrisierte Abfragen ab, die von der Anwendung ausgegeben werden. Anschließend verwendet der Treiber die Verschlüsselungsmetadaten, um die Werte von Parametern zu verschlüsseln, die Datenbankspalten entsprechen, die mit Always Encrypted geschützt sind. Er ersetzt die von der Anwendung übermittelten Nur-Text-Parameterwerte durch die verschlüsselten Parameterwerte, bevor die Abfrage an das Datenbankmodul gesendet wird.
Berechtigungen
Sie benötigen die Berechtigungen VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
und VIEW ANY COLUMN MASTER KEY DEFINITION
in der Datenbank.
Beispiele
Im folgenden Beispiel wird der Wert für ENCRYPTED_VALUE
anzeigezwecke abgeschnitten.
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';
Dies ist der erste Resultset:
Spalte | Wert |
---|---|
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 |
Dies ist der zweite Resultset:
Spalte | Wert |
---|---|
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 |