Hari ini ketika memecahkan masalah pialang layanan, saya menemukan bahwa pemilik database adalah login Windows dari seorang karyawan yang telah meninggalkan perusahaan. Info masuknya telah dihapus dan pemberitahuan permintaan gagal.
Seharusnya praktik terbaik untuk menangani ini adalah membuat 'sa' pemilik basis data. Kami mengubahnya dan itu membersihkan antrian.
Pertanyaan saya (sangat mendasar): apa pemilik basis data dan apa tujuannya?
Jawaban:
Ada beberapa kebingungan di luar sana antara konsep basis data 'dbo' (pengguna) dan 'db_owner' (peran tetap) di satu sisi dan konsep contoh 'pemilik basis data' di sisi lain. 'Dbo' dan 'db_owner' sering disebut 'pemilik basis data'. Dalam apa yang Anda tanyakan, Anda berbicara tentang pemilik basis data sebagai kepala server yang memiliki basis data.
Teorinya seperti ini: segala sesuatu yang dapat diberikan izin adalah 'aman' . Semua yang dapat diamankan memiliki pemilik. Pemilik surat berharga memiliki kendali mutlak atas surat berharga dan tidak dapat ditolak hak istimewa apa pun. Keamanan tingkat instance dimiliki oleh prinsipal server (login). Keamanan tingkat basis data dimiliki oleh prinsipal basis data (pengguna). Kepala sekolah datang dalam dua rasa: primer (identitas) dan sekunder (keanggotaan). Keamanan tingkat server secara default dimiliki oleh prinsipal server primer yang saat ini dicatat. Keamanan tingkat basis data dimiliki secara default oleh prinsipal basis data saat ini, kecuali untuk objek terikat skema yang secara default dimiliki oleh pemilik skema. Semua yang dapat diamankan mendukung klausa OTORISASI pada saat membuat untuk menegakkan pemilik yang berbeda.
ALTER AUTHORIZATION
nantinya dapat digunakan untuk mengubah pemilik yang dapat diamankan.Karena basis data adalah tingkat server yang dapat diamankan, maka ia akan, secara default, dimiliki oleh kepala sekolah utama yang mengeluarkan pernyataan CREATE DATABASE. Yaitu. login NT dari karyawan yang berangkat.
Jadi pertanyaan Anda benar-benar " Mengapa barang-barang keamanan memerlukan pemilik? ". Karena pemilik adalah akar kepercayaan. Pemiliklah yang memberikan, menyangkal, dan mencabut izin pada objek. Bisakah sistem keamanan dirancang tanpa pemilik yang dapat diamankan? Mungkin ya, tetapi harus ada mekanisme untuk menggantikan peran yang dimainkan pemilik dalam model saat ini. Misalnya, pertimbangkan bahwa ayah yang dapat diamankan tidak memiliki pemilik (mis. Alih-alih memiliki yang dapat diamankan, pencipta asli hanya diberikan PENGENDALIAN atasnya) akan mungkin membuat akses yang aman dan mencabutnya untuk semua orang , termasuk dirinya sendiri. Persyaratan pemilik menghindari masalah ini karena pemilik tidak dapat mengunci dirinya sendiri.
Efek samping yang sedikit diketahui dari CREATE DATABASE dalam menciptakan sebuah keamanan (database) yang dimiliki oleh login NT asli telah membakar banyak sebelumnya. Aturannya sama untuk setiap yang bisa diamankan, tetapi beberapa faktor memperburuk masalah pemilik DATABASE:
dbo
(kepala basis data), atau beberapa kepala basis data lainnya, dan dengan demikian pemilik terkandung dengan basis dataEXECUTE AS context
. Masalah di kemudian hari inilah yang membakar sebagian besar pengguna. Karena Service Broker menggunakan EXECUTE AS secara ekstensif (pengiriman pesan memiliki konteks EXECUTE AS, serta aktivasi antrian yang memiliki eksplisit) biasanya pengguna Layanan Broker yang menemukan masalah ini terlebih dahulu.BTW, Kudos untuk menyelidiki dan memperbaiki masalah awal Anda :)
sumber
Basis data
owner
ini sedikit membuang ke waktu sebelum skema (yang tepat) diperkenalkan dalam SQL Sever 2005.Pada dasarnya pemilik database adalah default
dbo
(pemilik database) dari database, dengan database itu sendiri menjadi objek database .Dari dokumen SQL Server 2000 ...
Dalam versi SQL Server sebelumnya, ketika skema tidak bisa "memiliki" objek ( atau lebih tepatnya harus dinyatakan bahwa semua objek, tabel, tampilan, dll. Dimiliki oleh
dbo
dan tidak ada skema lain ) diperlukan untuk "pengguna" untuk memilikinya ... harus pergi tanpa mengatakan mengapa sesuatu perlu memiliki database (atau izin pada umumnya akan agak sulit.)Jadi, secara teknis dalam versi SQL Server yang lebih lama (atau database yang ditingkatkan) itu bukan tabel "Foo" itu adalah tabel "dbo.Foo" ... dengan
dbo
menjadi pemiliknya.Dengan munculnya SQL Server 2005 Anda bisa memiliki skema yang dimiliki objek database seperti misalnya Anda memiliki skema bernama "bar" dan tabel bernama "Foo" ... ini menjadi
bar.Foo
seperti ...Bagian yang sulit datang dengan fakta bahwa pengguna yang membuat basis data secara otomatis ditetapkan sebagai pemilik yang menyebabkan masalah dengan pergantian karyawan, dll.
Karenanya adalah praktik terbaik untuk mengubahnya ke
sa
akun, atau mungkin (menurut pengalaman saya) ke akun domain yang dapat dikelola oleh tim ops / IT organisasi.Artikel ini memberikan rincian perbedaan antara cara lama "pemilik" dalam melakukan sesuatu, dan sistem kepemilikan berbasis "skema" yang lebih baru.
sumber