Je m'excuse si cette question répète une autre déjà posée. J'ai cherché pendant des heures et je n'ai pas trouvé celui qui correspond à ma situation.
Résultat souhaité
Un utilisateur utilisant l'authentification SQL a des autorisations d'exécution sur Database1 sur Server1 (instance par défaut) et c'est tout. L'utilisateur exécute une procédure stockée qui, dans le cadre de son processus, accède à la base de données 2 sur Server1 \ Instance2. Je voudrais que ce soit sûr et simple (les deux sont importants).
Plus d'informations
Mes informations d'identification Windows ont accès aux deux instances (qui se trouvent sur le même serveur). Par conséquent, je peux exécuter la procédure stockée sous ma connexion sans difficulté. Cependant, je ne veux pas donner à l'utilisateur mon niveau d'accès. J'ai également besoin d'utiliser une connexion SQL car l'utilisateur ne sera pas sur le domaine.
Ce que j'aimerais, c'est donner à la procédure stockée mon niveau d'accès juste pour cette procédure. Étant donné que je suis un administrateur système, cela donnerait à l'utilisateur tout ce dont il avait besoin pour cette procédure. Si je réussissais à le faire, je créerais probablement un compte juste à cette fin au lieu d'utiliser le mien, mais dans les deux cas, ce serait sûr car je contrôle ce que fait le proc stocké.
J'ai essayé de mettre l'instruction "WITH EXECUTE AS" dans mon proc stocké mais je n'ai pas pu l'obtenir pour prendre mes informations de connexion Windows. Lorsque je le mettais, j'obtiendrais l'erreur suivante lors de la compilation du proc stocké:
Impossible d'exécuter en tant qu'utilisateur 'domaine \ jdoe', car il n'existe pas ou vous n'avez pas d'autorisation.
L'utilisateur est administrateur système sur les deux serveurs, comme je l'ai dit, donc je ne sais pas de quoi il a besoin de plus.
J'ai examiné les éléments suivants:
- CONFIANCE - Je préfère ne pas exposer ma base de données et cela semble effrayant
- Serveur lié - Je ne veux pas accorder d'autorisations supplémentaires. Je ne fais pas confiance à l'autre base de données pour avoir accès à ma base de données et je ne fais pas confiance à ma base de données pour avoir accès à toutes les autres bases de données.
- Certificats - Cela semble compliqué et difficile. À moins que je puisse trouver un moyen très simple de le faire et de le maintenir, je ne suis pas sûr que cela en vaille la peine.
- Chaînage de propriété - Encore une fois, effrayant. Il semble que cela cause plus de problèmes de sécurité lorsque mon objectif est de prévenir les problèmes de sécurité.
- Utilisateur en miroir - J'ai même créé le même utilisateur (SID différent évidemment) sur l'autre instance de serveur et lui ai donné le même mot de passe. Ne pas aller.
J'ai l'impression de manquer quelque chose d'évident mais je ne suis pas sûr de ce que c'est. Depuis que je me suis cogné la tête contre le mur toute la journée à ce sujet, je suis probablement trop près pour le voir. J'apprécierais beaucoup que quelqu'un ici me donne un coup de main ou me pointe dans la bonne direction. Je dirai que j'ai lu beaucoup d'articles MSDN (mon garçon, je les déteste - ils ne semblent jamais me dire ce que je veux savoir). Ce que j'aimerais vraiment, c'est un didacticiel simple et facile à suivre qui m'explique comment procéder. À part cela, même une indication générale de la direction que je dois prendre serait utile.
