2 votes

MS SQL Server : où est mon compte utilisateur ?

J'ai accès à n'importe quelle base de données sur ce serveur en utilisant mon ID et mon mot de passe. Voici ma chaîne de connexion :

Data Source=my.database ; Initial Catalog=main_table ; User ID=my_user_id ; Password=my_password ;

Cela fonctionne, mais maintenant je veux refuser l'accès à mon_utilisateur_id. Le problème est que je ne trouve l'utilisateur nulle part dans la base de données.

Comment est-ce possible ? On dirait un compte invisible. Il ne figure nulle part, mais SQL accorde des privilèges à ce compte.

Je suis perdu, où dois-je chercher ce compte ?

0 votes

L'accès est donné à des utilisateurs ou à des groupes. Votre utilisateur est-il un administrateur ? Par défaut, les administrateurs disposent d'un accès complet. Ou peut-être votre login fait-il partie d'un autre groupe qui a accès.

0 votes

Ou bien vérifiez vos rôles de serveur SQL login pour sysadmin ou similaire.

0 votes

Oups, il semble que le compte était effectivement caché à l'utilisateur connecté au serveur SQL. Je me suis dit que le fait que je me connecte en tant qu'utilisateur Windows dans le groupe Administrateurs implique que l'utilisateur est automatiquement l'administrateur du serveur SQL. Eh bien, pas exactement. En tant que tel, je peux créer et supprimer des tables, mais je ne peux même pas consulter les comptes de certains utilisateurs. C'est bizarre. Je comprendrais que mes privilèges soient trop faibles pour changer le mot de passe d'un utilisateur, mais pas pour simplement lister les utilisateurs. J'ai vu l'utilisateur sa mais pas the_user . Bizarre et peu intuitif. Et maintenant maladroit ;)

0voto

Samuel Points 605

Solution :

Un login serveur doit être associé à un utilisateur de base de données pour effectuer des actions dans la base de données. Les deux sont directeurs d'école dans SQL Server. Dans une chaîne de connexion, la valeur de l'identifiant de l'utilisateur est le nom du login du serveur. Vous pouvez essayer de vérifier les mappages d'utilisateurs pour ce login serveur pour votre base de données actuelle :

USE main_table               -- Server database

SELECT 
    sp.name AS LoginName,
    sp.type_desc AS LoginType,
    dp.name AS DatabaseUserName,
    r.name AS DatabaseRoleName
FROM sys.server_principals sp
LEFT JOIN sys.database_principals dp ON dp.sid = sp.sid
LEFT JOIN sys.database_role_members drm ON drm.member_principal_id = dp.principal_id
LEFT JOIN sys.database_principals r ON r.principal_id = drm.role_principal_id
WHERE sp.name = 'my_user_id' -- Server Login

Notes :

Avec votre chaîne de connexion actuelle, je pense que vous essayez de vous connecter à SQL Server avec l'authentification SQL. Votre login SQL est alors associé à un utilisateur de base de données (le login du serveur n'est pas égal à l'utilisateur de la base de données). Si vous voulez vous connecter en utilisant l'authentification Windows, dans la plupart des cas, il est nécessaire de supprimer l'ID utilisateur et le mot de passe de la chaîne de connexion et d'inclure IntegratedSecurity=true.

0 votes

La chaîne de connexion est celle utilisée par l'application. Ce que j'ai essayé de faire, c'est de refuser temporairement l'accès à l'application. Depuis le niveau MSSMS, en étant connecté en tant qu'utilisateur Windows. Je n'ai pas pu modifier la chaîne de connexion en conséquence. Lorsque je suis connecté en tant qu'utilisateur Windows, je ne vois pas du tout les connexions SQL. Ensuite, lorsque je me suis connecté en tant qu'utilisateur que j'ai essayé de désactiver, j'ai vu TOUS les utilisateurs et j'ai pu changer mon propre mot de passe. Je ne comprends toujours pas ce qui s'est passé.

0 votes

@Harry Que retourne le script dans l'exemple ? Merci de votre réponse.

0voto

MoonDragon Points 51
SELECT CASE 
        WHEN sysadmin = 1
            THEN 'You have system admin access'
        ELSE 'Normal user'
        END
FROM sys.syslogins
WHERE loginname LIKE '<loginname>'

la requête ci-dessus retournera Vous avez un accès administrateur système signifie que le login fourni a le privilège sysadmin, sinon le login fourni n'a pas le privilège sysadmin.

0 votes

Cette réponse nécessite une explication.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X