Bagikan melalui


sp_describe_parameter_encryption (T-SQL)

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed Instance

Menganalisis pernyataan Transact-SQL yang ditentukan dan parameternya, untuk menentukan parameter mana yang sesuai dengan kolom database yang dilindungi dengan menggunakan fitur Always Encrypted. Mengembalikan metadata enkripsi untuk parameter yang sesuai dengan kolom terenkripsi.

Sintaks

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

Argumen

Penting

Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.

[ @tsql = ] 'tsql'

Satu atau beberapa pernyataan Transact-SQL. @tsql mungkin nvarchar(n) atau nvarchar(max).

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

@params menyediakan string deklarasi untuk parameter untuk @tsql, yang mirip sp_executesqldengan . Parameter mungkin nvarchar (n) atau nvarchar(max).

String yang berisi definisi semua parameter yang disematkan dalam transact-SQL_batch. String harus berupa konstanta Unicode atau variabel Unicode. Setiap definisi parameter terdiri dari nama parameter dan jenis data. n adalah tempat penampung yang menunjukkan definisi parameter tambahan. n adalah tempat penampung yang menunjukkan definisi parameter tambahan. Setiap parameter yang ditentukan dalam pernyataan harus ditentukan dalam @params. Jika pernyataan Transact-SQL atau batch dalam pernyataan tidak berisi parameter, @params tidak diperlukan. NULL adalah nilai default untuk parameter ini.

Nilai hasil

0 menunjukkan keberhasilan. Hal lain menunjukkan kegagalan.

Tataan hasil

sp_describe_parameter_encryption mengembalikan dua tataan hasil:

  • Kumpulan hasil yang menjelaskan kunci kriptografi yang dikonfigurasi untuk kolom database, parameter pernyataan Transact-SQL yang ditentukan sesuai dengan.

  • Kumpulan hasil yang menjelaskan bagaimana parameter tertentu harus dienkripsi. Tataan hasil ini mereferensikan kunci yang dijelaskan dalam tataan hasil pertama.

Setiap baris kumpulan hasil pertama menjelaskan sepasang kunci: kunci enkripsi kolom terenkripsi, dan kunci master kolom (CMK) yang sesuai.

Nama kolom Jenis data Deskripsi
column_encryption_key_ordinal int ID baris dalam hasil.
database_id int ID Database.
column_encryption_key_id int ID kunci enkripsi kolom.

Catatan: ID ini menunjukkan baris dalam tampilan katalog sys.column_encryption_keys .
column_encryption_key_version int Disiapkan untuk penggunaan masa mendatang. Saat ini, selalu berisi 1.
column_encryption_key_metadata_version biner(8) Tanda waktu yang mewakili waktu pembuatan kunci enkripsi kolom.
column_encryption_key_encrypted_value varbinary(4000) Nilai terenkripsi dari kunci enkripsi kolom.
column_master_key_store_provider_name nama sysname Nama penyedia untuk penyimpanan kunci yang berisi CMK, yang digunakan untuk menghasilkan nilai terenkripsi kunci enkripsi kolom.
column_master_key_path nvarchar(4000) Jalur kunci CMK, yang digunakan untuk menghasilkan nilai terenkripsi dari kunci enkripsi kolom.
column_encryption_key_encryption_algorithm_name nama sysname Nama algoritma enkripsi yang digunakan untuk menghasilkan nilai enkripsi kunci enkripsi kolom.

Setiap baris kumpulan hasil kedua berisi metadata enkripsi untuk satu parameter.

Nama kolom Jenis data Deskripsi
parameter_ordinal int ID baris dalam tataan hasil.
parameter_name nama sysname Nama salah satu parameter yang ditentukan dalam argumen @params .
column_encryption_algorithm kecil Kode yang menunjukkan algoritma enkripsi yang dikonfigurasi untuk kolom yang sesuai dengan parameter. Nilai yang saat ini didukung adalah 2 untuk AEAD_AES_256_CBC_HMAC_SHA_256.
column_encryption_type kecil Kode yang menunjukkan jenis enkripsi yang dikonfigurasi untuk kolom, parameter sesuai dengan. Nilai yang didukung adalah:

0 - teks biasa (kolom tidak dienkripsi)
1 - enkripsi deterministik
2 - Enkripsi acak.
column_encryption_key_ordinal int Kode baris dalam tataan hasil pertama. Baris yang direferensikan menjelaskan kunci enkripsi kolom yang dikonfigurasi untuk kolom, parameter sesuai dengan.
column_encryption_normalization_rule_version kecil Nomor versi algoritma normalisasi jenis.

Keterangan

Driver klien SQL Server, yang mendukung Always Encrypted, secara otomatis memanggil sp_describe_parameter_encryption untuk mengambil metadata enkripsi untuk kueri berparameter yang dikeluarkan oleh aplikasi. Kemudian, driver menggunakan metadata enkripsi untuk mengenkripsi nilai parameter yang sesuai dengan kolom database yang dilindungi dengan Always Encrypted. Ini menggantikan nilai parameter teks biasa yang dikirimkan oleh aplikasi, dengan nilai parameter terenkripsi, sebelum mengirim kueri ke mesin database.

Izin

VIEW ANY COLUMN ENCRYPTION KEY DEFINITION Memerlukan izin dan VIEW ANY COLUMN MASTER KEY DEFINITION dalam database.

Contoh

Contoh berikut memotong nilai untuk ENCRYPTED_VALUE, untuk tujuan tampilan.

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

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

Berikut adalah tataan hasil pertama:

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

Berikut adalah tataan hasil kedua:

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