2017-06-26 4 views
1

J'essaie de trouver un moyen de faire l'équivalent d'une commande «exécuter en tant qu'utilisateur» à partir d'une chaîne de connexion SQL. J'ai une requête provenant d'une source externe que je ne peux pas modifier et une base de données qui a déjà une configuration de sécurité en utilisant execute as user. La seule chose que je peux vraiment modifier est la chaîne de connexion. J'ai regardé partout et j'ai du mal à trouver quelque chose de connexe dans mes recherches.Exécution À partir de la chaîne de connexion sql

Est-ce que quelque chose de similaire à "execute as user" peut être fait dans une chaîne de connexion?

Si oui, comment?

En utilisant SQL Server 2016 - SP1

Edit: utilisateurs dans une table ont un certain nombre de rôles qui leur sont associés. Chaque combinaison unique de rôles a un utilisateur créé (qui ne peut pas se connecter, donc vous ne pouvez pas vous connecter en tant qu'utilisateur et avoir accès). Cet utilisateur a un schéma qui applique la sécurité au niveau de la ligne. En fonction du rôle de l'utilisateur, il ne peut voir que les données autorisées. En utilisant "execute as user = [utilisateur généré automatiquement]", ils empruntent l'identité de l'utilisateur approprié avec le schéma d'autorisations unique et ne récupèrent donc que les données qu'ils sont autorisés à voir. Je vais établir une connexion avec un utilisateur et ensuite avoir besoin de faire l'équivalent de l'instruction execute as, mais je ne peux pas modifier la requête réelle, donc cela doit être fait dans la chaîne de connexion.

+2

Peut-être vous connecter en tant qu'utilisateur que vous voulez emprunter l'identité (à savoir ID utilisateur et mot de passe dans la chaîne de connexion)? –

+0

malheureusement, ne peut pas faire cela non plus ... Les utilisateurs à usurper l'identité sont définis comme incapable de se connecter –

+0

Donc, vous voulez exécuter quelques sql en usurpant l'identité d'un utilisateur qui n'est pas autorisé à établir une connexion? Est-ce que cela semble peut-être que quelque chose ne va pas bien? –

Répondre

0

Vous ne pouvez pas le faire via la chaîne de connexion car vous devez déjà être connecté pour vous faire passer pour un utilisateur.

Une chaîne de connexion permet à un utilisateur de se connecter (c'est-à-dire de se connecter) à une instance SQL et ne peut donc pas être utilisée par des utilisateurs qui ne peuvent pas se connecter. Au lieu de cela, vous devrez vous connecter en tant qu'utilisateur avec des droits de connexion, puis emprunter l'identité de l'utilisateur via EXECUTE AS USER.