sp_control_dbmasterkey_password (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menambahkan atau menghilangkan kredensial yang berisi kata sandi yang diperlukan untuk membuka kunci master database.

Konvensi sintaks transact-SQL

Sintaks

  
sp_control_dbmasterkey_password @db_name = 'database_name,  
     @password = 'master_key_password' , @action = { 'add' | 'drop' }  

Argumen

@db_name=N'database_name'
Menentukan nama database yang terkait dengan kredensial ini. Tidak dapat menjadi database sistem. database_name adalah nvarchar.

@password=N'kata sandi'
Menentukan kata sandi kunci master. kata sandi adalah nvarchar.

@action=N'tambahkan'
Menentukan bahwa kredensial untuk database yang ditentukan akan ditambahkan ke penyimpanan kredensial. Info masuk akan berisi kata sandi kunci master database. Nilai yang diteruskan ke @action adalah nvarchar.

@action=N'jatuhkan'
Menentukan bahwa kredensial untuk database yang ditentukan akan dihilangkan dari penyimpanan kredensial. Nilai yang diteruskan ke @action adalah nvarchar.

Keterangan

Ketika SQL Server memerlukan kunci master database untuk mendekripsi atau mengenkripsi kunci, SQL Server mencoba mendekripsi kunci master database dengan kunci master layanan instans. Jika dekripsi gagal, SQL Server mencari penyimpanan kredensial untuk kredensial kunci master yang memiliki GUID keluarga yang sama dengan database yang membutuhkan kunci master. SQL Server kemudian mencoba mendekripsi kunci master database dengan setiap kredensial yang cocok sampai dekripsi berhasil atau tidak ada lagi kredensial.

Perhatian

Jangan membuat kredensial kunci master untuk database yang harus tidak dapat diakses oleh sa dan prinsipal server lain yang sangat istimewa. Anda dapat mengonfigurasi database sehingga hierarki kuncinya tidak dapat didekripsi oleh kunci master layanan. Opsi ini didukung sebagai pertahanan mendalam untuk database yang berisi informasi terenkripsi yang tidak boleh dapat diakses oleh sa atau prinsipal server dengan hak istimewa lainnya. Membuat kredensial kunci master untuk database seperti itu menghapus pertahanan ini secara mendalam, memungkinkan sa dan prinsipal server dengan hak istimewa lainnya untuk mendekripsi database.

Kredensial yang dibuat dengan menggunakan sp_control_dbmasterkey_password terlihat dalam tampilan katalog sys.master_key_passwords . Nama kredensial yang dibuat untuk kunci master database memiliki format berikut: ##DBMKEY_<database_family_guid>_<random_password_guid>##. Kata sandi disimpan sebagai rahasia kredensial. Untuk setiap kata sandi yang ditambahkan ke penyimpanan kredensial, ada baris dalam sys.credentials.

Anda tidak dapat menggunakan sp_control_dbmasterkey_password untuk membuat kredensial untuk database sistem berikut: master, model, msdb, atau tempdb.

sp_control_dbmasterkey_password tidak memverifikasi bahwa kata sandi dapat membuka kunci master database yang ditentukan.

Jika Anda menentukan kata sandi yang sudah disimpan dalam kredensial untuk database yang ditentukan, sp_control_dbmasterkey_password akan gagal.

Catatan

Dua database dari instans server yang berbeda dapat berbagi GUID keluarga yang sama. Jika ini terjadi, database akan berbagi rekaman kunci master yang sama di penyimpanan kredensial.

Parameter yang diteruskan ke sp_control_dbmasterkey_password tidak muncul dalam jejak.

Catatan

Saat Anda menggunakan kredensial yang ditambahkan dengan menggunakan sp_control_dbmasterkey_password untuk membuka kunci master database, kunci master database dienkripsi ulang oleh kunci master layanan. Jika database dalam mode baca-saja, operasi enkripsi ulang akan gagal, dan kunci master database akan tetap tidak terenkripsi. Untuk akses berikutnya ke kunci master database, Anda harus menggunakan pernyataan OPEN MASTER KEY dan kata sandi. Untuk menghindari penggunaan kata sandi, buat kredensial sebelum Anda memindahkan database ke mode baca-saja.

Potensi Masalah Kompatibilitas Mundur: Saat ini, prosedur tersimpan tidak memeriksa apakah kunci master ada. Ini diizinkan untuk kompatibilitas mundur, tetapi menampilkan peringatan. Perilaku ini tidak digunakan lagi. Dalam rilis mendatang, kunci master harus ada dan kata sandi yang digunakan dalam prosedur tersimpan sp_control_dbmasterkey_password harus kata sandi yang sama dengan salah satu kata sandi yang digunakan untuk mengenkripsi kunci master database.

Izin

Memerlukan keanggotaan dalam peran server tetap sysadmin .

Contoh

J. Membuat kredensial untuk kunci master AdventureWorks

Contoh berikut membuat kredensial untuk AdventureWorks2022 kunci master database, dan menyimpan kata sandi kunci master sebagai rahasia dalam kredensial. Karena semua parameter yang diteruskan harus sp_control_dbmasterkey_password dari jenis data nvarchar, string teks dikonversi dengan operator Ntransmisi .

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';  
GO  

B. Menghilangkan kredensial untuk kunci master database

Contoh berikut menghapus kredensial yang dibuat dalam contoh A. Perhatikan bahwa semua parameter diperlukan, termasuk kata sandi.

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks2022',   
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';  
GO  

Lihat Juga

Menyiapkan Database Cermin Terenkripsi
Prosedur Tersimpan Keamanan (Transact-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
sys.credentials (Transact-SQL)
Kredensial (Mesin Database)