Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Database yang terkandung memiliki beberapa ancaman unik yang harus dipahami dan dimitigasi oleh administrator SQL Server Database Engine. Sebagian besar ancaman terkait dengan USER WITH PASSWORD proses autentikasi, yang memindahkan batas autentikasi dari tingkat Mesin Database ke tingkat database.
Ancaman Yang Terkait dengan Pengguna
Pengguna dalam database terbatas yang memiliki ALTER ANY USER izin, seperti anggota peran database tetap db_owner dan db_securityadmin, dapat memberikan akses ke database tanpa sepengetahuan atau izin dari administrator SQL Server. Memberikan pengguna akses ke database mandiri meningkatkan area permukaan serangan potensial terhadap seluruh instans SQL Server. Administrator harus memahami delegasi kontrol akses ini, dan sangat berhati-hati memberikan izin ALTER ANY USER kepada pengguna di dalam database yang terkait. Semua pemilik database memiliki ALTER ANY USER izin. Administrator SQL Server harus secara berkala mengaudit pengguna dalam database yang terkandung.
Mengakses Database Lain Menggunakan Akun tamu
Pemilik database dan pengguna yang memiliki izin ALTER ANY USER dapat membuat pengguna database terisolasi. Setelah menyambungkan ke database mandiri pada instans SQL Server, pengguna database mandiri dapat mengakses database lain di Mesin Database, jika database lain telah mengaktifkan akun tamu .
Membuat Pengguna Duplikat di Database Lain
Beberapa aplikasi mungkin mengharuskan pengguna untuk memiliki akses ke lebih dari satu database. Ini dapat dilakukan dengan membuat pengguna database tertutup yang identik di setiap database. Gunakan opsi SID saat membuat pengguna kedua dengan kata sandi. Contoh berikut membuat dua pengguna yang identik dalam dua database.
USE DB1;
GO
CREATE USER Carlo WITH PASSWORD = '<strong password>';
-- Return the SID of the user
SELECT SID FROM sys.database_principals WHERE name = 'Carlo';
-- Change to the second database
USE DB2;
GO
CREATE USER Carlo WITH PASSWORD = '<same password>', SID = <SID from DB1>;
GO
Untuk menjalankan kueri lintas database, Anda harus mengatur TRUSTWORTHY opsi pada database panggilan. Misalnya jika pengguna (Carlo) yang ditentukan di atas berada di DB1, untuk menjalankan SELECT * FROM db2.dbo.Table1; maka TRUSTWORTHY pengaturan harus aktif untuk database DB1. Jalankan kode berikut untuk mengaktifkan pengaturan TRUSTWORHTY.
ALTER DATABASE DB1 SET TRUSTWORTHY ON;
Membuat Pengguna yang Menduplikasi Login
Jika pengguna database terkontrol dengan kata sandi dibuat, menggunakan nama yang sama dengan login SQL Server, dan jika login SQL Server tersambung dengan menentukan database terkontrol sebagai katalog awal, maka login SQL Server tidak akan dapat tersambung. Koneksi akan dievaluasi sebagai pengguna database tertutup dengan prinsipal kata sandi pada database tertutup alih-alih sebagai pengguna berdasarkan login SQL Server. Ini dapat menyebabkan penolakan layanan yang disengaja atau tidak disengaja untuk login SQL Server.
Sebagai praktik terbaik, anggota peran tetap server sysadmin harus mempertimbangkan untuk selalu menghubungkan diri tanpa menggunakan opsi katalog awal. Ini menyambungkan login ke database master dan menghindari upaya apa pun oleh pemilik database untuk menyalahgunakan upaya masuk. Kemudian administrator dapat beralih ke database yang telah ditentukan dengan menggunakan
USE<perintah database>. Anda juga dapat mengatur database default login ke database yang terkandung, yang menyelesaikan login ke master, lalu mentransfer login ke database yang terkandung.Sebagai praktik terbaik, jangan membuat pengguna database mandiri dengan kata sandi yang memiliki nama yang sama dengan login SQL Server.
Jika login duplikat ada, sambungkan ke database master tanpa menentukan katalog awal, lalu jalankan
USEperintah untuk mengubah ke database yang terkandung.Saat database kontainer ada, pengguna database yang bukan database kontainer harus terhubung ke Mesin Database tanpa menggunakan katalog awal atau dengan menentukan nama database yang bukan database kontainer sebagai katalog awal. Ini menghindari penyambungan ke database yang terisolasi yang berada di bawah kontrol yang tidak langsung oleh administrator Mesin Database.
Meningkatkan Akses dengan Mengubah Status Penampungan Database
Login yang memiliki izin ALTER ANY DATABASE, seperti anggota peran server tetap dbcreator, dan pengguna dalam database non-tertutup yang memiliki izin CONTROL DATABASE, seperti anggota peran database tetap db_owner, dapat mengubah pengaturan penahanan database. Jika pengaturan penahanan database diubah dari NONE ke PARTIAL atau FULL, maka akses pengguna dapat diberikan dengan membuat pengguna database mandiri dengan kata sandi. Ini dapat memberikan akses tanpa sepengetahuan atau persetujuan administrator SQL Server. Untuk mencegah database dimuat, atur opsi Mesincontained database authentication Database ke 0. Untuk mencegah koneksi oleh pengguna database mandiri dengan kata sandi pada database mandiri yang dipilih, gunakan pemicu masuk untuk membatalkan upaya masuk oleh pengguna database mandiri dengan kata sandi.
Melampirkan Database Yang Terkandung
Dengan melampirkan database terisolasi, administrator dapat memberi pengguna yang tidak diinginkan akses ke instans Mesin Database. Administrator yang khawatir tentang risiko ini dapat membuat database online dalam RESTRICTED_USER mode, yang mencegah autentikasi untuk pengguna database mandiri dengan kata sandi. Hanya prinsipal yang diotorisasi melalui login yang dapat mengakses Mesin Database.
Pengguna dibuat menggunakan persyaratan kata sandi yang berlaku pada saat mereka dibuat dan kata sandi tidak dicentang ulang saat database dilampirkan. Dengan melampirkan database mandiri yang memungkinkan kata sandi lemah ke sistem dengan kebijakan kata sandi yang lebih ketat, administrator dapat mengizinkan kata sandi yang tidak memenuhi kebijakan kata sandi saat ini pada Mesin Database yang melampirkan. Administrator dapat menghindari mempertahankan kata sandi yang lemah dengan mengharuskan semua kata sandi diatur ulang untuk database terlampir.
Kebijakan Kata Sandi
Kata sandi dalam database dapat diperlukan untuk menjadi kata sandi yang kuat, tetapi tidak dapat dilindungi oleh kebijakan kata sandi yang kuat. Gunakan Autentikasi Windows jika memungkinkan untuk memanfaatkan kebijakan kata sandi yang lebih luas yang tersedia dari Windows.
Autentikasi Kerberos
Pengguna database mandiri dengan kata sandi tidak dapat menggunakan Autentikasi Kerberos. Jika memungkinkan, gunakan Autentikasi Windows untuk memanfaatkan fitur Windows seperti Kerberos.
Serangan Kamus Offline
Hash kata sandi untuk pengguna database mandiri dengan kata sandi disimpan dalam database yang terkandung. Siapa pun yang memiliki akses ke file database dapat melakukan serangan kamus kata sandi terhadap pengguna database dengan kata sandi pada sistem yang tidak diaudit. Untuk mengurangi ancaman ini, batasi akses ke file database, atau hanya izinkan koneksi ke database mandiri dengan menggunakan Autentikasi Windows.
Meloloskan Diri dari Database yang Terkunci
Jika database terkandung sebagian, administrator SQL Server harus secara berkala mengaudit kemampuan pengguna dan modul dalam database yang terkandung.
Penolakan Layanan Melalui AUTO_CLOSE
Jangan konfigurasikan database yang terkandung untuk menutup otomatis. Jika ditutup, membuka database untuk mengautentikasi pengguna menggunakan sumber daya tambahan dan dapat berkontribusi pada penolakan serangan layanan.
Lihat Juga
Basis Data yang Terkandung
Memigrasikan ke Database yang Mengandung Sebagian Konten