Saya minta maaf jika pertanyaan ini mengulangi pertanyaan lain yang sudah diajukan. Saya telah mencari selama berjam-jam dan belum menemukan satu yang cocok dengan situasi saya.
Hasil yang diinginkan
Seorang pengguna yang menggunakan otentikasi SQL telah menjalankan izin untuk Database1 pada Server1 (contoh default) dan hanya itu. Pengguna menjalankan prosedur tersimpan yang, sebagai bagian dari prosesnya, mengakses Database 2 di Server1 \ Instance2. Saya ingin ini aman dan sederhana (keduanya penting).
Info lebih lanjut
Kredensial windows saya memiliki akses ke kedua instance (yang berada di server yang sama). Oleh karena itu, saya dapat menjalankan prosedur tersimpan di bawah login saya tanpa kesulitan. Namun, saya tidak ingin memberikan tingkat akses kepada pengguna. Saya juga perlu menggunakan login SQL karena pengguna tidak akan berada di domain.
Apa yang saya inginkan adalah memberikan prosedur yang tersimpan tingkat akses saya hanya untuk prosedur itu. Karena saya seorang sysadmin, itu akan memberi pengguna semua yang mereka butuhkan untuk prosedur itu. Jika saya berhasil, saya mungkin akan membuat akun hanya untuk tujuan itu daripada menggunakan milik saya, tetapi bagaimanapun juga itu akan aman karena saya mengontrol apa yang dilakukan oleh proc yang disimpan.
Saya mencoba meletakkan pernyataan "DENGAN EXECUTE AS" di proc saya yang tersimpan tetapi saya tidak bisa mendapatkannya untuk mengambil informasi login windows saya. Ketika saya memasukkannya, saya akan mendapatkan kesalahan berikut setelah mengkompilasi proc yang disimpan:
Tidak dapat mengeksekusi sebagai pengguna 'domain \ jdoe', karena tidak ada atau Anda tidak memiliki izin.
Pengguna adalah sysadmin di kedua server, seperti yang saya katakan, jadi saya tidak yakin apa lagi yang dibutuhkan.
Saya telah melihat yang berikut ini:
- TRUSTED - Saya lebih suka tidak mengekspos database saya dan ini terlihat menakutkan
- Server yang ditautkan - Saya tidak ingin memberikan izin tambahan. Saya tidak percaya database lain untuk memiliki akses ke database saya dan saya tidak percaya database saya untuk memiliki akses ke semua database lain.
- Sertifikat - Ini sepertinya rumit dan sulit. Kecuali saya dapat menemukan cara yang sangat sederhana untuk melakukan ini dan memeliharanya, saya tidak yakin itu sepadan dengan masalahnya.
- Rantai kepemilikan - Sekali lagi, menakutkan. Sepertinya ini menyebabkan lebih banyak masalah keamanan ketika tujuan saya adalah untuk mencegah masalah keamanan.
- Pengguna yang dicerminkan - Saya bahkan telah membuat pengguna yang sama (berbeda SID) pada contoh server lain dan memberikannya kata sandi yang sama. Tidak pergi.
Saya merasa kehilangan sesuatu yang jelas tapi saya tidak yakin apa itu. Karena saya telah membenturkan kepala ke dinding sepanjang hari ini, saya mungkin terlalu dekat untuk melihatnya. Saya akan sangat menghargainya jika seseorang di sini dapat membantu saya atau mengarahkan saya ke arah yang benar. Saya akan mengatakan bahwa saya telah membaca banyak artikel MSDN (anak laki-laki saya benci mereka - mereka sepertinya tidak pernah memberi tahu saya apa yang ingin saya ketahui). Apa yang saya benar-benar suka adalah tutorial sederhana, mudah diikuti yang menuntun saya melalui cara melakukan ini. Singkatnya, bahkan indikasi umum tentang arah yang harus saya tuju akan sangat membantu.