Mi scuso se questa domanda ripete un'altra già posta. Ho cercato per ore e non ne ho trovato uno adatto alla mia situazione.
Risultato desiderato
Un utente che utilizza l'autenticazione SQL ha le autorizzazioni per Database1 su Server1 (istanza predefinita) e basta. L'utente esegue una procedura memorizzata che, come parte del suo processo, accede al Database 2 su Server1 \ Instance2. Vorrei che fosse sicuro e semplice (entrambi sono importanti).
Ulteriori informazioni
Le mie credenziali di Windows hanno accesso ad entrambe le istanze (che si trovano sullo stesso server). Pertanto, posso eseguire la procedura memorizzata con il mio login senza difficoltà. Tuttavia, non voglio fornire all'utente il mio livello di accesso. Devo anche usare un login SQL poiché l'utente non sarà nel dominio.
Quello che vorrei sarebbe dare alla procedura memorizzata il mio livello di accesso solo per quella procedura. Dato che sono un amministratore di sistema, ciò darebbe all'utente tutto ciò di cui aveva bisogno per quella procedura. Se dovessi farlo funzionare, probabilmente creerei un account solo per quello scopo invece di usare il mio, ma in entrambi i casi sarebbe sicuro poiché controllo ciò che fa il proc memorizzato.
Ho provato a inserire l'istruzione "WITH EXECUTE AS" nel mio proc memorizzato ma non sono riuscito a ottenere le informazioni di accesso a Windows. Quando lo inserisco, ottengo il seguente errore quando compilo il proc memorizzato:
Impossibile eseguire come utente "dominio \ jdoe" perché non esiste o non si dispone dell'autorizzazione.
L'utente è amministratore di sistema su entrambi i server, come ho detto, quindi non sono sicuro di cosa abbia bisogno.
Ho esaminato quanto segue:
- AFFIDABILE - Preferirei non esporre il mio database e questo sembra spaventoso
- Server collegato: non desidero concedere autorizzazioni aggiuntive. Non mi fido che l'altro database abbia accesso al mio database e non mi fido che il mio database abbia accesso a tutto l'altro database.
- Certificati: questo sembra complicato e difficile. A meno che non riesca a trovare un modo molto semplice per farlo e mantenerlo, non sono sicuro che valga la pena.
- Concatenamento della proprietà - Ancora una volta, spaventoso. Sembra che questo causi più problemi di sicurezza quando il mio obiettivo è prevenire problemi di sicurezza.
- Utente con mirroring - Ho persino creato lo stesso utente (ovviamente SID diverso) sull'altra istanza del server e gli ho dato la stessa password. Non andare.
Sento che mi manca qualcosa di ovvio, ma non sono sicuro di cosa si tratti. Da quando ho sbattuto la testa contro il muro tutto il giorno, probabilmente sono troppo vicino per vederlo. Lo apprezzerei molto se qualcuno qui potesse darmi una mano o indicarmi la giusta direzione. Dirò di aver letto molti articoli di MSDN (ragazzo, li odio - non sembrano mai dirmi quello che voglio sapere). Quello che mi piacerebbe davvero è un tutorial semplice e facile da seguire che mi guida attraverso come fare questo. A parte questo, sarebbe utile anche un'indicazione generale della direzione da seguire.