sp_describe_parameter_encryption (Transact-SQL)
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Analizza l'istruzione Transact-SQL specificata e i relativi parametri per determinare quali parametri corrispondono alle colonne di database protette tramite la funzionalità Always Encrypted. Restituisce i metadati di crittografia per i parametri che corrispondono alle colonne crittografate.
Sintassi
sp_describe_parameter_encryption
[ @tsql = ] N'tsql'
[ , [ @params = ] N'@parameter_name data_type [ , ... n ]' ]
[ ; ]
Argomenti
[ @tsql = ] 'tsql'
Una o più istruzioni Transact-SQL. @tsql potrebbe essere nvarchar(n) o nvarchar(max).
[ @params = ] N'@parameter_name data_type [ ,... n ]'
@params fornisce una stringa di dichiarazione per i parametri per @tsql, simile a sp_executesql
. I parametri possono essere nvarchar(n) o nvarchar(max).
Stringa che contiene le definizioni di tutti i parametri incorporati nella SQL_batch Transact-SQL_batch. La stringa deve essere una costante o una variabile Unicode. Ogni definizione di parametro è costituita da un nome del parametro e da un tipo di dati. n è un segnaposto che indica definizioni di parametro aggiuntive. n è un segnaposto che indica definizioni di parametro aggiuntive. Ogni parametro specificato nell'istruzione deve essere definito in @params. Se l'istruzione Transact-SQL o il batch nell'istruzione non contiene parametri, @params non è necessario. NULL
è il valore predefinito per questo parametro.
Valore restituito
0
indica l'esito positivo. Qualsiasi altro elemento indica un errore.
Set di risultati
sp_describe_parameter_encryption
restituisce due set di risultati:
Il set di risultati che descrive le chiavi crittografiche configurate per le colonne di database, i parametri dell'istruzione Transact-SQL specificata corrispondono.
Set di risultati che descrive il modo in cui devono essere crittografati determinati parametri. Questo set di risultati fa riferimento alle chiavi descritte nel primo set di risultati.
Ogni riga del primo set di risultati descrive una coppia di chiavi: una chiave di crittografia della colonna crittografata e la chiave master della colonna corrispondente.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
column_encryption_key_ordinal |
int | ID della riga nel set di risultati. |
database_id |
int | ID del database. |
column_encryption_key_id |
int | ID chiave di crittografia della colonna. Nota: questo ID indica una riga nella vista del catalogo sys.column_encryption_keys . |
column_encryption_key_version |
int | Riservato a un uso futuro. Attualmente contiene sempre 1 . |
column_encryption_key_metadata_version |
binary(8) | Timestamp che rappresenta l'ora di creazione della chiave di crittografia della colonna. |
column_encryption_key_encrypted_value |
varbinary(4000) | Valore crittografato della chiave di crittografia della colonna. |
column_master_key_store_provider_name |
sysname | Nome del provider per l'archivio chiavi che contiene la chiave cmk, utilizzata per produrre il valore crittografato della chiave di crittografia della colonna. |
column_master_key_path |
nvarchar(4000) | Percorso della chiave del cmk, usato per produrre il valore crittografato della chiave di crittografia della colonna. |
column_encryption_key_encryption_algorithm_name |
sysname | Nome dell'algoritmo di crittografia utilizzato per produrre il valore di crittografia della chiave di crittografia della colonna. |
Ogni riga del secondo set di risultati contiene i metadati di crittografia per un parametro.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
parameter_ordinal |
int | ID della riga nel set di risultati. |
parameter_name |
sysname | Nome di uno dei parametri specificati nell'argomento @params . |
column_encryption_algorithm |
tinyint | Codice che indica l'algoritmo di crittografia configurato per la colonna a cui corrisponde il parametro . Il valore attualmente supportato è 2 per AEAD_AES_256_CBC_HMAC_SHA_256 . |
column_encryption_type |
tinyint | Codice che indica il tipo di crittografia configurato per la colonna, il parametro corrisponde a . I valori supportati sono:0 - testo non crittografato (la colonna non è crittografata)1 - Crittografia deterministica2 - crittografia casuale. |
column_encryption_key_ordinal |
int | Codice della riga nel primo set di risultati. La riga a cui si fa riferimento descrive la chiave di crittografia della colonna configurata per la colonna, il parametro corrisponde a . |
column_encryption_normalization_rule_version |
tinyint | Numero di versione dell'algoritmo di normalizzazione del tipo. |
Osservazioni:
Un driver client di SQL Server, che supporta Always Encrypted, chiama sp_describe_parameter_encryption
automaticamente per recuperare i metadati di crittografia per le query con parametri rilasciate dall'applicazione. Il driver usa quindi i metadati di crittografia per crittografare i valori dei parametri che corrispondono alle colonne di database protette con Always Encrypted. Sostituisce i valori dei parametri in testo non crittografato inviati dall'applicazione, con i valori dei parametri crittografati, prima di inviare la query al motore di database.
Autorizzazioni
Richiedere le VIEW ANY COLUMN ENCRYPTION KEY DEFINITION
autorizzazioni e VIEW ANY COLUMN MASTER KEY DEFINITION
nel database.
Esempi
Nell'esempio seguente viene troncato il valore per ENCRYPTED_VALUE
, a scopo di visualizzazione.
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';
Ecco il primo set di risultati:
Colonna | Valore |
---|---|
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 |
Ecco il secondo set di risultati:
Colonna | Valore |
---|---|
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 |