Autoriser les utilisateurs administrateurs à se connecter en tant que d'autres utilisateurs

11

Pensez-vous que c'est une bonne pratique d'implémenter une possibilité pour permettre à un utilisateur administrateur de se connecter en tant qu'un autre utilisateur, en contournant le mot de passe? Cela pourrait être implémenté par un mot de passe principal ou une fonction au sein de l'administration des utilisateurs, "Connexion en tant que cet utilisateur".

Les administrateurs demandent une telle fonction pour pouvoir essayer de reproduire un problème signalé ou pour vérifier si les autorisations sont correctes, par exemple.

Dan McGrath
la source
9
En général, ce n'est pas une bonne idée dans l'ingénierie de sécurité de permettre aux gens de se connecter en tant que compte partagé (ou compte d'autres personnes, d'ailleurs) même si leurs autorisations sont identiques. L'authentification doit être un processus distinct de l'autorisation. Si les tâches sont effectuées sous des comptes d'utilisateurs distincts, ils en sont responsables .
xmm0
1
+1 à Mehrdad Afshari. Je grince des dents chaque fois que j'entends des gens parler d'administrateur comme ça.
Dan McGrath
2
@Mehrdad Afshari et @Dan McG, c'est tout bon et vrai, mais que proposez-vous de faire quand un administrateur a besoin d' accéder à un compte d'utilisateur dans une situation quotidienne? Demander à l'utilisateur de saisir ses informations d'identification? Il arrive très souvent que pour vérifier ou reproduire un problème, vous devez vérifier les paramètres d'un utilisateur spécifique, en particulier lorsque les comptes sont liés à des droits complexes et à d'autres paramètres qui ne peuvent pas être reproduits 1: 1 avec un compte neutre.
Pekka
4
Vous le regardez dans le mauvais sens. Si l'administrateur doit vérifier le paramètre d'un utilisateur, nous devons développer de meilleurs outils pour obtenir ces informations de diagnostic de l'utilisateur. Par exemple: si votre application sur Windows se bloque, voulez-vous qu'un administrateur MS dans Redmond RDPing dans votre compte d'utilisateur vérifie les choses, ou voulez-vous une méthode hautement automatisée pour leur renvoyer les informations requises (à la discrétion de l'utilisateur) ?
Dan McGrath
2
@Dan: Le client n'est peut-être pas disposé à payer pour cela.

Réponses:

15

Non pas du tout. Cela viole la séparation des fonctions.

Cela provoque également des ravages en s'appuyant sur les journaux pour afficher les actions des utilisateurs.

Si vous avez vraiment besoin de vérifier des choses comme ça, l'administrateur doit également avoir un ou plusieurs comptes de test factices qui sont configurés comme les utilisateurs. De cette façon, ils peuvent d'abord confirmer les subventions, etc. fonctionnent correctement sur l'utilisateur de test.

En aparté aussi, les utilisateurs administrateurs ne devraient pas toujours bénéficier de tous les droits dont dispose un utilisateur. Par exemple, un utilisateur peut avoir des raisons valables d'afficher les numéros de carte de crédit dans un système. Un administrateur ne devrait pas; ces données ne font pas partie de leur travail. Encore une fois, cela revient à la séparation des fonctions.

Minimisez votre exposition en minimisant l'octroi de droits inappropriés. Cela devrait également inclure les administrateurs ...

Dan McGrath
la source
2
Alors que vous avez des points valides, je ne pense pas que la réponse est tout à fait si claire - dans certains cas , il est la meilleure solution.
sleske
11

Du point de vue des principes de sécurité et de programmation propre, ce n'est pas une bonne idée. Mais cela peut être une grande commodité dans le travail quotidien de l'administrateur, c'est pourquoi je suis pour cela s'il est bien mis en œuvre.

Pour moi, une implémentation correcte devrait répondre aux exigences suivantes:

  • Le système vous connecte en tant qu'utilisateur en question, mais contourne l'authentification par mot de passe si vous êtes connecté en tant qu'administrateur.

  • Le système sait par un indicateur qu'il ne s'agit pas de l'utilisateur x, mais d'un administrateur connecté en tant qu'utilisateur x. Toute installation d'abattage refléterait la différence.

  • Il n'y a aucun moyen de "sortir" de la connexion utilisateur au niveau administrateur.

Cela peut en fait améliorer la sécurité car l'administrateur n'a pas à rechercher et à utiliser les informations d'identification des utilisateurs, ce qui est en réalité souvent le cas pour les raisons mentionnées par l'OP: quelque chose doit être vérifié, testé, etc. sur le compte de l'utilisateur .

Pekka
la source
8

Comme toujours ... cela dépend. Il n'y a pas de réponse facile et les deux systèmes sont utilisés dans la pratique (par exemple, Windows: l'administrateur ne peut pas se connecter en tant qu'utilisateur sans réinitialiser le mot de passe par rapport à Linux: l'administrateur peut se connecter en tant qu'utilisateur local en utilisant su).

De toute évidence, ne pas autoriser l'administrateur à se connecter en tant qu'un autre utilisateur est l'option la plus sécurisée, vous devez donc décider si le confort supplémentaire (pouvoir déboguer des problèmes qui ne se produisent que pour un certain utilisateur) l'emporte sur le risque. Si vous décidez d'implémenter une telle option, assurez-vous qu'il existe une journalisation rigoureuse, afin qu'un administrateur (ou quelqu'un qui a obtenu un mot de passe administrateur) ne puisse pas cacher ses traces.

Vous pouvez également utiliser le modèle que Windows utilise: Un administrateur ne peut pas se connecter en tant qu'autre utilisateur, mais un administrateur peut réinitialiser le mot de passe d'un utilisateur. De cette façon, un administrateur peut accéder, mais l'utilisateur toujours savoir que quelqu'un accède son compte.

Heinzi
la source
Nitpick: sudone vous connecte pas en tant qu'utilisateur local, il exécute simplement un processus en tant qu'utilisateur ("Exécuter en tant qu'utilisateur" de la Window). Pour vous connecter en tant qu'utilisateur local, utilisez su. Sinon, je suis d'accord.
sleske
@sleske: Bien sûr, merci d'avoir repéré cela. Fixé.
@sleske: pas nécessairement, regardez sudo -i.
liori
L'idée d'un «shell de connexion» a plus à voir avec le shcomportement de l' exécutable qu'avec les autorisations accordées. su - useret sudo -u user shaccorder le même accès; la différence est qu'il shexécute différents scripts de démarrage.
jpaugh
3

Eh bien, phpBB3 a une fonctionnalité "Tester les autorisations de l'utilisateur" pour les administrateurs, ce qui est vraiment utile. De plus, cela ne vous permet pas vraiment d'interférer avec ce compte d'utilisateurs, mais d'obtenir simplement l'expérience qu'ils ont, en fonction de leurs autorisations.

Mais se connecter en tant que quelqu'un d'autre pose un certain nombre de problèmes, comme d'autres l'ont mentionné.

back2dos
la source
1

Oui, une telle fonctionnalité peut être problématique, mais parfois il n'y a pas d'autre moyen, elle peut donc être nécessaire.

Quelques exemples:

  • Sous Unix / Linux, cette fonctionnalité existe ( su - <username>, ce qui donne le même résultat que la connexion en tant que cet utilisateur, mais ne nécessite aucun mot de passe pour root)
  • l'application sur laquelle je travaille a également cela, et elle est essentielle pour déboguer les problèmes avec les paramètres personnels d'un utilisateur (dont notre application en a beaucoup)

Comme indiqué, si des paramètres complexes dépendent de l'utilisateur connecté (variables d'environnement, chemins d'accès, paramètres personnels dans une application), il n'y a souvent aucun autre moyen pratique de déboguer le problème d'un utilisateur.

En ce qui concerne la journalisation / l'audit: l'utilisation de cette fonctionnalité doit bien sûr être journalisée. En dehors de cela, vous devrez faire confiance à votre administrateur pour ne pas en abuser. Mais cela est valable pour les administrateurs en général.

Si vous avez besoin de restreindre davantage vos administrateurs, vous avez besoin d'une sorte de système MAC (contrôle d'accès obligatoire), sans "vrai" administrateur. C'est possible, mais beaucoup plus compliqué, c'est donc un compromis.

sleske
la source