Saya memiliki pengguna melihat server tertaut yang seharusnya tidak mereka lihat.
Server tertaut ditentukan sehingga hanya saya yang akan memiliki akses ke sana, tetapi semua orang dapat melihat dan menggunakannya.
Saya telah membuat server tertaut baru menggunakan langkah-langkah berikut:
- Hubungkan SSMS Object Explorer ke instance SQL Server
- Rentangkan
Server Objects
, klik kananLinked Servers
dan klik kiriNew Linked Server...
- Di bawah
General
tab memilihSQL Server
untukServer type
dan menulis nama Server - Di bawah
Security
tab di bagian atas klikAdd
, pilih "sa" sebagaiLocal Login
, masukkanRemote User
nama danRemote Password
- Di bawah
Security
tab di bagian bawah (bawahFor a login not defined in the list above, connections will:
) pilih opsi pertama:Not be made
- Klik
OK
dan mulai pengujian
Sekarang satu-satunya orang yang seharusnya melihat server tertaut adalah saya ("sa"), tetapi entah bagaimana pengguna lain dapat melihatnya dan menggunakannya.
Catatan 1: Pengguna yang dapat menggunakan server yang ditautkan memiliki izin pada server jarak jauh, mereka tidak melihat data yang seharusnya tidak mereka lihat, mereka hanya dapat mengaksesnya dari server yang ditautkan ketika mereka seharusnya tidak dapat melihatnya.
Catatan 2: Saya satu-satunya sysadmin
di kedua contoh.
sumber
Jawaban:
Tidak ada cara untuk "menyembunyikan" server yang ditautkan atau mencegah pengguna yang tidak sah mencoba menggunakannya. Yang dapat Anda kontrol adalah apakah mereka benar-benar memiliki akses di sisi lain. Server yang ditautkan di dalam dan dari dirinya sendiri bukan objek yang sebenarnya; seperti sinonim, Anda tidak memberikan akses ke alias, hanya untuk hal yang dirujuk.
Cobalah, dan Anda akan melihat bahwa beberapa asumsi Anda (mis. Bahwa "login ... tidak dapat melihat server yang ditautkan dalam objek explorer") salah. Saya melakukan ini:
sys.servers
untuk melihat daftar server yang terhubung.Saya dapat menjalankan permintaan berikut tanpa masalah:
Namun saya tidak dapat menjalankan query terhadap database non-sistem, karena saya belum memberikan akses eksplisit ke database non-sistem atau objek di dalamnya. Misalnya:
Menghasilkan kesalahan ini:
Saya berharap Anda dapat mencapai hasil yang lebih ketat dengan secara eksplisit menolak akses ke objek tertentu pada server yang ditautkan (atau dengan
DENY CONNECT SQL
login itu secara bersamaan), tetapi ini tidak membatasi efeknya pada server yang ditautkan; itu juga mempengaruhi koneksi langsung.Bagaimanapun, saya gagal melihat titik dari apa yang ingin Anda capai:
sumber
Anda dapat menggunakan opsi pertama "Tidak dibuat dengan" pemetaan login seperti di bawah ini:
Inilah hasilnya dengan login yang dipetakan:
Dan inilah yang terjadi dengan akun lain
sumber