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.
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 N
transmisi .
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)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk