Exporter (0) Imprimer
Développer tout

Développement de logiciels dans Visual Studio .NET sans les privilèges administrateurs

Visual Studio .NET 2003

Lars Bergstrom
Équipe principale Visual Studio
Microsoft Corporation

Résumé : les membres du groupe local Administrateurs possèdent des privilèges leur allouant le contrôle total d’une machine. Si un développeur se connecte en tant que membre de ce groupe, cela représente un danger réel à la fois pour le déroulement des tâches effectuées dans cet environnement mais aussi pour le logiciel en cours de développement. Cet article explique comment développer efficacement un logiciel avec des privilèges non administrateurs.

S’applique à :

  • Microsoft® Windows® XP et la famille Microsoft Windows Server 2003
  • Disques durs avec système de fichiers NTFS
  • Microsoft Visual Studio® .NET

Sommaire

Introduction
Appartenance au groupe et autorisations pour le compte d’ouverture de session
Exécution de tâches d’administration
Développement de logiciels
Conclusion

Introduction

La sécurité est un élément important, plus personne ne conteste ce fait. Chacun cherche des solutions aux problèmes liés à la sécurité, aux bogues et aux utilisateurs malintentionnés. En revanche, peu d’entre nous font l’effort de supprimer l’une des principales causes du véritable danger des virus électroniques et des programmes de déchiffrement de mot de passe : nous nous connectons tous en tant que membre du groupe des Administrateurs locaux et la plupart des services fonctionnent avec des privilèges administrateurs. Si nous prenions l’habitude de travailler avec moins de privilèges, les conséquences d’une pièce corrompue dans un courrier électronique ou d’un service présentant une vulnérabilité seraient moins dramatiques. En exécutant des programmes sans disposer des privilèges administrateurs, nous travaillons dans un environnement plus sécurisé.

Les logiciels disponibles actuellement exigent souvent des privilèges élevés afin de fonctionner correctement. Pour mettre un terme à cette situation, les développeurs doivent être les premiers à ne plus travailler en tant qu’administrateurs locaux. En effet, si nous nous connectons, développons et testons des applications en tant que non administrateurs, le logiciel final aura plus de chances de fonctionner sans réclamer un tel degré de privilèges élevé. Nous devons donc corriger dans ce sens les logiciels en cours de développement.

Appartenance au groupe et autorisations pour le compte d’ouverture de session

Les tâches d’inscription dans le registre, d’installation de nouvelles applications logicielles et de configuration de périphériques requièrent des privilèges administrateurs. Pour effectuer ces tâches, vous devez conserver la possibilité d’ouvrir une session en tant qu’administrateur (sauf si un administrateur système, disponible en permanence, gère votre machine).

Dans la suite de ce document, nous désignerons par ‘Administrateur’ un compte d’administrateur local à la machine, par opposition au compte d’administrateur du domaine. Ce compte peut porter un nom différent tel que ‘root’ ou ‘Administrator’. Nous supposerons que vous travaillez dans un domaine Windows et que l’ouverture de session principale s’effectue via un compte ordinaire de ce domaine, sous la forme DOMAINE\nomutilisateur. Néanmoins, cela ne constitue pas une obligation et le compte utilisateur peut être un compte local.

Modification du statut de votre compte

Après avoir vérifié que vous avez toujours accès à un compte d’administrateur, allez dans Gestionnaire d’utilisateur, supprimez votre compte d’utilisateur du groupe Administrateurs puis ajoutez-le au groupe Utilisateurs et à tout autre groupe dont vous pourriez avoir besoin et qui bénéficie de moins de privilèges. Pour ajouter votre compte d’utilisateur au groupe Utilisateurs, vous devez tout d’abord charger Microsoft Management Console (MMC) et le composant logiciel enfichable Gestion de l’utilisateur.

Remarque : dans la plupart des configurations de réseaux, le groupe Utilisateurs du domaine est déjà considéré comme un membre du groupe local Utilisateurs ; par conséquent, votre compte de domaine sera déjà présent dans le groupe local Utilisateurs.

Utilisation de Microsoft Management Console (MMC)

  • Cliquez-droit sur Poste de travail et choisissez Gérer.

    — ou —

  • Dans le menu Démarrer, choisissez Exécuter puis tapez lusrmgr.msc.

Vous êtes maintenant prêt à ajouter votre compte au Groupe d’utilisateurs.

Ajout de votre compte à des groupes bénéficiant de moins de privilèges

  1. Confirmez que le compte qui constituera à l’avenir votre ouverture de session principale n’est pas un membre du groupe Utilisateurs avec pouvoir. Le groupe Utilisateurs avec pouvoirs constitue en fait le groupe Administrateurs, car il a un accès en écriture à la totalité du répertoire HKLM\Software et Program Files par défaut.
    1. Sous le nœud Groupes et utilisateurs locaux,choisissez le dossier Groupes.
    2. Double-cliquez sur le groupe Utilisateurs avec pouvoir.
    3. Si votre compte ou un groupe contenant votre compte est affiché dans la zone de liste Membres, sélectionnez cette entrée.
    4. Choisissez Supprimer.
  2. Ajoutez le compte au groupe Utilisateurs.
  3. Ajoutez le compte au groupe Utilisateurs du débogueur.
  4. Supprimez le compte du groupe Administrateurs.
  5. Ajoutez le compte à tout autre groupe approprié, en respectant le tableau suivant :

Si vous :

Ajoutez votre compte au :

Utilisez Terminal Services pour vous connecter à l’ordinateur à distance

Groupe Utilisateurs du bureau à distance

Développez et déboguez des applications Web locales et utilisez Windows Server 2003

Groupe IIS_WPG

Remarque : si vous développez et déboguez des applications Web locales à l’aide de Windows XP Professionnel, exécutez la procédure suivante pour ajouter le privilège Ouvrir une session avec programme de commandes à votre compte.

Ouverture de session avec programme de commandes

  1. Dans le menu Démarrer, choisissez Exécuter puis tapez gpedit.msc.

L’Éditeur Objets Stratégie de groupe apparaît.

  1. Développez le nœud Configuration de l’ordinateur pour afficher les nœuds Paramètres Windows, Paramètres de sécurité, Stratégies locales et Attribution des droits d’utilisateur.
  2. Ajoutez le compte DOMAINE\nomutilisateur au groupe Ouvrir une session avec programme de commandes.
  3. Fermez la session et ouvrez-en une autre en tant que cet utilisateur défini afin que vos changements prennent effet.

Autorisation d’accès aux fichiers et aux partages

Pendant votre ouverture de session en tant que membre du groupe local Administrateurs, vous avez peut-être créé des répertoires pour votre usage personnel. Vous avez sans doute également créé des partages de réseaux accessibles depuis votre compte d’utilisateur. Mais ils ont été créés avec une autorisation d’accès limitée au groupe local Administrateurs. Vous devez vous assurer que les répertoires créés sur votre disque local en-dehors de votre répertoire de profil vous sont toujours accessibles et appartiennent à votre compte d’utilisateur.

Pour vérifier la propriété d’un fichier ou d’un répertoire privé

  1. Cliquez-droit sur le fichier ou le dossier en question et choisissez Propriétés.
  2. Sous l’onglet Sécurité, choisissez Avancé.
  3. Sous l’onglet Propriétaire, vérifiez que votre compte d’utilisateur est affiché. Si ce n’est pas le cas, prenez-en possession.

Pour vérifier l’accès aux partages de fichiers

  1. Cliquez-droit sur Poste de travail et choisissez Gérer.
  2. Cliquez sur le nœud Dossiers partagés puis sur Partages.
  3. Pour contrôler l’accès à chaque partage créé par l’utilisateur, cliquez-droit sur un partage et choisissez Propriétés.
  4. L’onglet Partager des autorisations et l’onglet Sécurité correspondent respectivement à l’accès au partage et aux autorisations du système de fichiers sous-jacentes. Le compte d’utilisateur doit posséder un accès aux deux listes afin de procéder à toutes les opérations relatives à ce partage.

Si vous ne possédez pas cet accès, ajoutez votre compte d’utilisateur dans les deux emplacements.

Exécution de tâches d’administration

Lors de l’ouverture d’une session, vous remarquerez que la plupart des icônes de l’interface utilisateur ne fonctionnent plus. Par exemple, si vous cliquez sur l’horloge dans la barre des tâches, le calendrier ne s’affiche plus. En effet, cette fonction est disponible uniquement pour les utilisateurs disposant de privilèges élevés car elle permet de changer l’heure du système.

Exécution d’une application sous une autre identité

Windows XP intègre des fonctions facilitant l’exécution d’une application sous une autre identité sans devoir fermer la session en cours. Toutefois, il est à noter que l’application s’achèvera lorsque vous mettrez fin à votre session principale. Pour cela, trois possibilités s’offrent à vous.

Exécution d’un raccourci avec différentes identifications

  1. Cliquez-droit sur un raccourci. Le menu Propriétés s’affiche.
  2. Choisissez Exécuter en tant que….

Cela vous permet de fournir un nom d’utilisateur et un mot de passe différents pour exécuter l’application.

Si vous pensez toujours exécuter une application sous une autre identité, vous pouvez permettre à Windows de vous demander automatiquement cette identité.

Exécution à la ligne de commande d’une application sous une identité différente

  • Dans le menu Démarrer, choisissez Exécuter puis tapez runas /user:Administrator program.exe.
  • — ou —

  • Dans la fenêtre Invite de commandes, tapez runas /user:Administrator program.exe.

Runas.exe vous invitera à fournir un mot de passe et exécutera dans une nouvelle session toute la ligne de commande saisie . Cette méthode est utile pour exécuter des programmes comme regedit, iexplore ou simplement ouvrir une nouvelle fenêtre de commandes, dont tous les processus enfants fonctionneront également sous la nouvelle identité. Étant donné qu’il s’agit d’une nouvelle session, elle n’héritera pas des handles, des variables d’environnement ou du répertoire de travail en cours lors de son appel ; si vous voulez exécuter un programme qui n’est pas dans le chemin de l’autre utilisateur, vous devez fournir un chemin d’accès à ce programme.

Invite automatique pour un nom d’utilisateur différent

Windows XP et les versions ultérieures permettent également à l’utilisateur de modifier les propriétés des raccourcis afin que, à chaque activation, l’utilisateur soit invité à saisir un nom d’utilisateur et un mot de passe différents.

  1. Cliquez-droit sur le raccourci et choisissez Propriétés.
  2. Sous l’onglet Raccourci, choisissez Avancé.
  3. Sélectionnez Exécuter avec différentes identifications.

Exécution d’outils d’administration spécialisés sous différentes identités

La question logique qui vient à l’esprit est la suivante : Comment exécuter les outils habituellement lancés à partir du panneau de configuration ? Faut-il effectuer un clic droit sur Poste de travail et sélectionner Gérer ou faut-il passer par d’autres éléments de l'interface utilisateur ne possédant ni de raccourcis intuitifs ni des équivalents de lignes de commande évidents ? Heureusement, tous les outils d’administration sont disponibles soit en exécutant les applications du panneau de configuration soit directement dans Microsoft Management Console. Les tableaux suivants dressent la liste des outils d’administration courants (applications du Panneau de configuration et fichiers MMC) et indiquent leur méthode d’exécution (à partir de l’invite de commande ou en démarrant les applications control.exe ou mmc.exe directement avec la commande Exécuter en tant que). Tous sont stockés dans le dossier Windows System 32, bien que certains soient disponibles uniquement dans la famille Windows Server 2003 ou sous Windows XP. Ces entrées sont répertoriées dans le tableau ci-dessous.

Action d’administration

Application du Panneau de configuration

Options d’accessibilité

access.cpl

Moniteur 802.11

apgui.cpl

Ajout/Suppression de programmes

appwiz.cpl

Console

console.cpl 1

Affichage

DESK.cpl

Périphériques SCSI, PCMCIA et à bandes

DEVAPPS.cpl 1

Assistant Ajout de nouveau matériel

hdwwiz.cpl

Internet

inetcpl.cpl

Options régionales

INTL.cpl

Contrôleurs de jeu

joy.cpl

Souris, polices, clavier, imprimantes

main.cpl

Multimédia et sons

MMSYS.cpl

Modems

MODEM.cpl 1

Réseau

ncpa.cpl

Gestion d’ouverture de session pour XP

nusrmgr.cpl (XP)

Interface ODBC

odbccp32.cpl

Options d’alimentation

powercfg.cpl

Ports

PORTS.cpl 1

Périphériques, services, serveur

srvmgr.cpl 1

Système

SYSDM.cpl

Téléphonie

telephon.cpl

Date/Heure

TIMEDATE.cpl

Onduleur

ups.cpl 1

1 Utilise la famille Windows Server 2003 des systèmes d’exploitation

Action d’administration

Fichier MMC

Certificats utilisateur actuel

certmgr.msc

Autorité de certification

certsrv.msc 1

Modèles de certification

certtmpl.msc 1

Service d’indexation

ciadv.msc

Gestion de l’ordinateur

compmgmt.msc

Éditeur Objets Stratégie de groupe

dcpol.msc 1

Gestionnaire de périphériques

devmgmt.msc

Défragmenteur de disque

dfrg.msc

Service de fichiers répartis

dfsgui.msc 1

Gestion du disque

diskmgmt.msc

Domaines et approbations Active Directory

domain.msc 1

Paramètres de sécurité du domaine par défaut

dompol.msc 1

Utilisateurs et ordinateurs Active Directory

dsa.msc 1

Sites et services Active Directory

dssite.msc 1

Observateur d’événements

eventvwr.msc

Serveur de fichiers

filesvr.msc 1

Dossiers partagés

fsmgmt.msc

Éditeur Objets Stratégie de groupe

gpedit.msc

Service d’authentification Internet

ias.msc 1

Utilisateurs et groupes locaux

lusrmgr.msc

Stockage amovible

ntmsmgr.msc

Demandes d’opérateurs stockage amovible

ntmsoprq.msc

Performances

perfmon.msc

Routage et accès à distance

rrasmgmt.msc 1

Jeu de stratégies résultant

rsop.msc

Paramètres locaux de sécurité

secpol.msc

Services

services.msc

Téléphonie

tapimgmt.msc 1

Configuration et connexions Terminal Services

tscc.msc 1

Bureau à distance

tsmmc.msc 1

Infrastructure de gestion Windows

wmimgmt.msc

1 Utilise la famille Windows Server 2003 des systèmes d’exploitation

Identité sur le réseau

Lors de l’ouverture d’une fenêtre ou d’une session en tant qu’administrateur, l’identité que l’on présente par défaut sur le réseau n’est pas celle du compte de domaine habituellement utilisé pour l’ouverture de session. Or, la plupart des réseaux ne permettent l’accès aux ressources importantes (comme les partages de fichiers) qu’aux comptes de domaine. Il est nécessaire de pouvoir changer l’identité présentée sur le réseau.

Pour ce faire, il existe deux façons de procéder : vous ouvrez une nouvelle fenêtre de commande et configurez une autre identité par défaut en vue d’une utilisation sur le réseau, ou vous autorisez l’accès aux serveurs ou aux partages avec un autre nom d’utilisateur et mot de passe.

Lors de l’exécution d’une invite de commande, il peut s’avérer utile de modifier votre environnement afin d’indiquer clairement qu’il s’agit d’une fenêtre dotée de privilèges d’administration. Vous avez le choix entre l’une des méthodes suivantes :

  • Modifier le libellé de l’invite où sont saisies les commandes, comme par exemple INVITE ADMIN $P$G
  • Donner à l’invite une couleur différente, comme par exemple un arrière-plan rouge avec une police noire, à l’aide de la commande COLOR c0
  • Définir la barre de titre avec un texte particulier à l’aide de la commande title, par exemple title Admin Window

Ouverture d’une nouvelle fenêtre de commandes avec une autre identité réseau

  1. Pour ouvrir la fenêtre, tapez runas /user:administrator "runas /netonly /user:DOMAIN\username cmd.exe"
  2. Dans la première fenêtre de commande qui apparaît, entrez le mot de passe administrateur lorsque vous y êtes invité.
  3. Dans la seconde fenêtre de commande qui apparaît, tapez le mot de passe d’un autre nom d’utilisateur (dont les identifications seront utilisées lors de l’accession aux ressources sur le réseau).

Ouverture d’une nouvelle fenêtre de commandes pour accéder aux partages de réseaux individuels

  1. Ouvrez une nouvelle fenêtre de commandes à l’aide de la commande runas /user:administrator cmd.exe.
  2. Pour chaque serveur de réseau nécessitant un autre groupe d’identifications, utilisez la commande net use /user:DOMAIN\username \\server dans cette fenêtre d’environnement.

D’autres formes de la commande net use vous permettent de mapper de façon permanente un lecteur réseau à une lettre, ou de fournir une identité de domaine en vue de l’authentification des demandes d’accès provenant de votre machine. Le tableau suivant dresse la liste de quelques commandes net use. Une fois ces commandes achevées, les applications peuvent être installées à partir des partages distants de façon normale.

Commande net use

Action

net use

Dresse la liste des connexions

net use * /persistent:no /user:DOMAIN\username \\server\share

Ouvre sous une autre identité une connexion mappée avec une lettre de disque local mais ne reconnecte pas le lecteur à la prochaine ouverture de session.

net use /user:DOMAIN\username \\server\share

Établit la connexion avec un partage réseau sous une autre identité

Installation de logiciels

 Lorsque vous ne disposez pas de privilèges administrateurs, l’installation de logiciels peut s’avérer une tâche compliquée. Par exemple, l’insertion d’un disque d’installation déclenche l’exécution du programme d’installation pour l’utilisateur en cours, alors que celui-ci ne dispose probablement pas d’autorisations pour installer l’application. Pour éviter cela, il est possible de :

  • Exécuter le programme d’installation (en général setup.exe) à l’aide de la commande Exécuter en tant que….

    — ou —

  • Utiliser la commande runas /user:administrateur "control appwiz.cpl"

Cette action crée une instance de l’application Ajout/Suppression de programmes fonctionnant en tant qu’administrateur. Choisissez l’installation pour tous les utilisateurs de cet ordinateur si l’application le propose en option. Sinon, seul l’administrateur pourra l’exécuter une fois l’installation terminée.

Contrôles ActiveX

De nombreux sites Web (particulièrement ceux des intranets des entreprises) ont souvent besoin d’un accès administrateur pour installer leurs contrôles ActiveX et ne prennent pas en charge l’installation limitée à l’utilisateur. Voici le moyen le plus simple de lancer Internet Explorer en tant qu’administrateur :

  1. Cliquez-droit sur l’icône d’Internet Explorer.

L’icône peut se situer dans la barre de lancement rapide, sur le Bureau ou dans le menu Démarrer.

  1. Choisissez Exécuter en tant que… dans le menu puis choisissez Administrateur.

Package Windows Installer

S’il s’agit d’un package Windows Installer (fichier .MSI), l’application MSIEXEC.exe s’avère utile pour l’installation ou la désinstallation des applications.

  • Pour l’installation, exécutez msiexec /I msifile.msi.

Remarque : Windows exécute exactement cette opération lorsque vous double-cliquez sur un fichier .MSI.

  • Pour la désinstallation, exécutez msiexec /x msifile.msi.

Remarque : les arguments du programme msiexec.exe se situent dans ms-help://MS.VSCC/MS.MSDNVS/msi/app_73eb.htm.

Exécution de programmes requérant un accès administrateur

Malheureusement, de nombreux programmes ne se conforment pas au Logo Windows. Le Logo Windows indique qu’une application doit pouvoir fonctionner correctement avec un compte moins privilégié, chaque fois que cela est possible. Occasionnellement, un programme peut avoir besoin d’un accès en écriture pour les comptes d’utilisateur dans son répertoire d’installation sous Program Files, ou pour écrire une clé dans HKLM\Software. Si vous arrivez à déterminer le répertoire ou le fichier accédé,  ou la clé de registre concernée, vous pouvez les modifier afin que le programme puisse fonctionner. De plus amples explications sont fournies dans les procédures suivantes.

Modification des autorisations du registre

  1. Ouvrez regedit en tant qu’administrateur en tapant runas /user:Administrateur regedit.
  2. Cliquez-droit sur la clé de registre à modifier.
  3. Choisissez Autorisations.
  4. Ajoutez l’utilisateur approprié à l’ensemble des utilisateurs bénéficiant d’un Contrôle total ou accordez-leur un groupe personnalisé de privilèges d’accès sur cette clé.

Modification des autorisations du système de fichiers

Pour les fichiers ou les répertoires, le programme cacls.exe s’avère utile pour réinitialiser les autorisations à partir de la ligne de commande. L’aide pour l’utilisation du programme Cacls.exe est disponible de deux manières différentes :

  • À la ligne de commande, en utilisant le paramètre /?
  • Dans l’aide de Windows

Exemple : exécution du programme cacls.exe pour ajouter des autorisations pour un utilisateur sur un répertoire

Exécutez cacls.exe avec les drapeaux adéquats pour ajouter de façon récursive l’autorisation d’écriture :

runas /user:Administrateur "cacls.exe répertoire /t /e /g domaine\nomutilisateur:w"

  • Sous Windows Server 2003, définissez entièrement le paramètre répertoire avec une barre oblique finale.
  • Sous Windows XP Professionnel, il peut s’avérer nécessaire de supprimer les guillemets de fin en raison de différences dans le programme calcs.exe entre les versions du système d'exploitation.Vérifiez le résultat de la commande runas.exe et si elle contient un guillemet en trop (voir ci-dessous), supprimez-le dans la ligne de commande ci-dessus.

Tentative de démarrage de cacls.exe c:\foo\ /t /e /g domaine\nomutilisateur:w" en tant qu’utilisateur "MACHINE\Administrateur" ...

En dernier recours, vous pouvez utiliser runas.exe pour lancer le programme en tant qu’administrateur local ; toutefois, faites-le avec précautions car si le programme n’est pas suffisamment bien conçu pour s’exécuter correctement dans un environnement moins privilégié, quelle confiance lui accorder dans un environnement doté de privilèges élevés ? Malheureusement, de nombreux programmes n’ont pas été testés pour être exécutés par des utilisateurs autres que ceux qui les ont installés (cela est d’autant plus vrai pour un compte moins privilégié). Pour fonctionner, certains programmes doivent s’exécuter en tant qu’administrateur local. Néanmoins, il est toujours conseillé d’ouvrir une session en tant que simple utilisateur et de passer administrateur local pour lancer quelques applications ; l'environnement sera ainsi mieux sécurisé. Vous devriez aussi contacter l’entreprise qui a développé le logiciel pour lui faire part de ce problème en vue d’une correction lors de la prochaine version. La seule façon pour l’utilisateur final de fonctionner dans un environnement plus sûr tout en restant productif est que chaque développeur corrige ses logiciels.

Développement de logiciels

Visual Studio .NET est conforme au Logo Windows ; il peut donc fonctionner sous l’identité d’un utilisateur aux droits limités. Toutefois, même si la grande majorité des fonctionnalités fonctionnent dans ce cadre, quelques tâches restent difficiles à exécuter en raison des limitations du système d’exploitation ou de la nature des tâches effectuées. Les sections suivantes fournissent des solutions alternatives pour toutes les tâches difficiles rencontrées dans un processus de développement. Dans les prochaines versions de l’environnement de développement intégré (IDE), nous espérons réduire les contraintes partout où cela sera possible. Pour les futures versions des systèmes d’exploitation et des outils de développement, nous faisons tout notre possible pour faciliter l’exécution de toutes les tâches, de sorte qu’elles ne requièrent aucun privilège administrateur lorsque cela n’est pas explicitement requis pour la sécurité du système.

Mise en œuvre post-développement (inscription)

Sous Visual C++ classique, il s’agit de regsvr32.exe. Sous Visual Basic .NET et sous Visual C# .NET, cela consiste à inscrire dans le registre des assemblages pour l’interopérabilité. Quel que soit le projet qui l’exige, il existe de nombreux outils requérrant un accès en écriture pour HKLM\Software\Classes afin d’inscrire les composants COM et les bibliothèques de types. Si votre application est en cours de procédure d’inscription et a besoin d’écrire dans des zones sécurisées du registre, vous devez avant tout déterminer si cela est nécessaire. Rappel :

  • HKCU\Software\Classes peut être écrit par tout utilisateur et cela s’applique à HKCR aussi bien qu’à HKLM\Software\Classes.

Remarque : les informations sur la composition de HKEY_CLASSES_ROOT sont disponibles sur ms-help://MS.VSCC/MS.MSDNVS/sysinfo/regapi_0htl.htm

  • Vous ne devez pas utiliser regsvr32.exe pour installer, en tant que simple utilisateur, les composants COM classiques. La modification de l’inscription de votre application en fonction de l’utilisateur est acceptable car la méthode DllRegisterServer doit être utilisée uniquement à des fins de déboguage et de développement personnels. Lors du déploiement d’applications vers des utilisateurs finaux, vous devez superviser tous vos critères d’inscription dans les tableaux de fichiers MSI de Windows Installer afin de prendre en compte certains problèmes comme les écritures multiples dans les mêmes clés du registre, ou l’ordre des installations ou désinstallation des différents programmes.

Malheureusement, nombreux sont les outils et les interfaces de programmation de systèmes d’exploitation qui autorisent l’inscription uniquement vers HKLM\Software\Classes. L’inscription de la bibliothèque de types en est un excellent exemple. Dans ces cas précis, vous pouvez exécuter runas /user:administrator cmd.exe, puis vous vous placez dans le répertoire de sortie et vous exécutez l’inscription pas à pas. Vous pouvez aussi chercher à supprimer la dépendance du logiciel par rapport à cette inscription dans le registre. Malheureusement, cette tâche est complexe et pourrait faire l’objet d’un article complet. Une autre solution consiste à créer des fichiers manifestes classiques pour contourner toutes les étapes d’inscription mais cela sort également du cadre d’étude de cet article. Pour obtenir des informations complémentaires, consultez l’aide ms-help://MS.VSCC/MS.MSDNVS/sbscs/sidebysideref_03ol.htm. La façon la plus simple de traiter les problèmes d’inscription est de procéder à l’inscription depuis une invite de commande sous votre compte administrateur.

Le tableau suivant décrit les tâches d’inscription post-développement et leur inscription. Effectuez-les une première fois et vous serez en mesure de compiler et d’exécuter sous un compte normal par la suite. Toutefois, rappelez-vous que vous aurez sans doute besoin de réitérer l’étape d’inscription chaque fois que vous passerez de la configuration Déboguage et à la configuration Version (et vice versa) et chaque fois que vous effectuerez des modifications dans vos applications qui auront un impact sur les objets inscrits.

Type d’inscription post-développement

Action d’inscription

Inscription exécutable COM

output.exe /RegServer

Inscription COM DLL

regsvr32 output.dll

Inscription assemblage .NET pour interopérabilité COM

regasm output.dll

Installation d’un assemblage .NET dans le cache global

gacutil /if output.dll

Inscription de EnterpriseServices .NET

regsvcs output.dll

Déboguage d’applications

Lors de l’ouverture d’une session en tant que non administrateur, une fonction vous manquera : Windows n’autorise pas le déboguage d’applications natives fonctionnant sous un compte utilisateur différent, sauf si vous possédez le droit d’utilisation spécial l’autorisant (SeDebugPrivilege). .NET Framework n’autorise pas le déboguage d’applications appartenant à d’autres utilisateurs, excepté si vous faites partie du groupe local Administrateurs. Vous serez toujours en mesure de déboguer les applications natives et managées que vous avez lancées à partir de l’environnement de développement ou qui fonctionnent déjà avec votre profil d’utilisateur non administrateur. Si vous souhaitez déboguer des services et d’autres programmes fonctionnant dans d’autres contextes de sécurité, vous devrez vous octroyer vous-même ce privilège SeDebug pour les applications natives, ajouter votre compte au groupe local d’Administrateurs ou utiliser RunAs pour lancer Visual Studio .NET en tant qu’utilisateur administrateur local. Cela dit, il existe de nombreuses méthodes pour lancer votre application comme si vous en étiez propriétaire, vous permettant à la fois de déboguer et de vous assurer que votre application s’exécute correctement dans un environnement avec peu de privilèges.

Applications natives et managées

Chaque fois que cela est possible, lancez simplement l’application en tant qu’utilisateur ordinaire (non administrateur) et tout fonctionnera correctement. Par défaut, utilisez l’option Démarrer du menu Déboguer pour les exécutables, et l’option Annexer au processus à partir du menu Déboguer pour toutes les applications lancées par vous sur cette machine. Vous devez être membre du groupe des Utilisateurs débogueurs afin d’annexer tout processus aux mécanismes Visual Studio .NET par défaut. L’appartenance à ce groupe ne vous donne pas le droit de déboguer les programmes d’autres utilisateurs mais simplement d’utiliser les services reliant le débogueur au processus à deboguer.

Ordinateurs à distance (natifs/managés)

Il existe deux façons raisonnables de procéder au déboguage à distance : le service Gestionnaire de déboguage ou msvcmon.exe. Le gestionnaire de déboguage est un service qui reconnaît vos identifications réseaux, vous identifie, vérifie votre appartenance au groupe Utilisateurs débogueurs de l’ordinateur cible et vous permet de vous connecter à vos propres applications si vous en êtes membre. Le Gestionnaire de déboguage est également le seul moyen de déboguer des applications managées à distance, applications Web comprises. Vous ne pourrez pas vous connecter aux applications d’autres utilisateurs sur des ordinateurs distants en étant simplement un membre du groupe Utilisateurs débogueurs. Pour les programmes natifs fonctionnant sur un ordinateur local, vous avez également besoin du droit d’utilisateur SeDebugPrivilege de la machine cible. Pour les applications natives sur un ordinateur distant, vous devez être un membre du groupe Administrateurs.

Autre solution pour déboguer des applications natives : le programme msvcmon.exe fournit un moyen de se connecter par TCP/IP aux applications managées sur un ordinateur distant. Dans ce cas précis, les identifications d’ouverture de session de la machine de déboguage ne sont pas copiées sur l’ordinateur distant. Par exemple, si msvcmon.exe est exécuté sur un ordinateur distant en tant qu’administrateur local de l’ordinateur, mais sans le paramètre « -anyuser », toute personne sera capable de se connecter au service et d’y joindre et de déboguer n’importe quelle application native sur cet ordinateur, même si elle ne possède pas à l’origine les droits lui permettant de le faire.

Création d’applications Web

Il existe deux façons de créer de nouvelles applications Web. La première consiste à ajouter le compte d’utilisateur pour lequel vous avez ouvert une session aux groupes de développeurs VS. Cela permettra à ce compte d’écrire partout dans le répertoire WebRoot d’IIS. La seconde consiste à créer le répertoire en tant que cet utilisateur puis d’ajouter une Racine virtuelle. Dans les deux cas, une fois les opérations achevées, vous pouvez créer la nouvelle application à partir de la boîte de dialogue Visual Studio .NET Créer un nouveau projet en tant qu’utilisateur limité.

Ajout d’une Racine virtuelle IIS

  1. Exécutez la console de gestion compmgmt.msc en tant qu’utilisateur administrateur
  2. Cliquez sur le nœud Services et applications pour afficher les nœuds Services d’informations Internet et Sites Web.
  3. Cliquez-droit sur le nœud Site Web par défaut, puis choisissez Nouveau puis Répertoire virtuel.
  4. Cliquez sur Suivant, tapez le nom de la racine virtuelle et cliquez à nouveau sur Suivant.
  5. Tapez le nom du répertoire à présenter puis cliquez sur Suivant.
  6. Laissez les autorisations d’accès par défaut et cliquez sur Suivant.
  7. Cliquez sur Terminer pour établir la racine virtuelle.

Déboguage des applications Web

Il existe deux conditions pour le déboguage des applications Web : exécuter ASP.NET avec vos autorisations d’ouverture de session limitée et de répertoires, et pour l’ensemble des répertoires, vous devez ajouter l’accès en lecture ou en écriture. Reportez-vous au tableau suivant.

Répertoire

Autorisations nécessaires dans le répertoire et dans tous ses enfants

%WINDIR%\Temp

Lecture et écriture

%INSTALLROOT%

Lecture

Fichiers temporaires %INSTALLROOT%\ASP.NET

Lecture et écriture

Remarque : %INSTALLROOT% est sous la forme D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705 et %WINDIR% est sous la forme D:\WINDOWS.

Par défaut, avec une ouverture de session sous un compte d’utilisateur limité, vous ne pouvez pas déboguer les applications Web car l’utilisateur exécutant le débogueur n’est pas un membre du groupe approprié déboguant les programmes des autres utilisateurs (Administrateurs). Le serveur Web a démarré ASP.NET en tant que compte NETWORK_SERVICE.

Si vous ne souhaitez pas ajouter ce compte au groupe local Administrateurs ou exécuter le débogueur en tant qu'administrateur local, vous pouvez modifier le compte sous lequel s’exécute ASP.NET. Sous Windows XP Professionnel, modifiez machine.config comme décrit ci-dessous puis tapez votre nom d’utilisateur et votre mot de passe ou le stocker chiffré dans le registre avec aspnet_setreg (cf http://support.microsoft.com/default.aspx?scid=329290 ). Cela a sans doute l'inconvénient de forcer toutes les applications ASP.NET de l’ordinateur à être exécutées en tant que votre compte d’utilisateur, mais c’est la meilleure méthode pour IIS 5. Cela vous permet en outre de déboguer et de créer des applications Web comme vous le faisiez auparavant.

Remarque sur la sécurité : le fichier machine.config doit se trouver sur un disque NTFS et posséder une liste d’autorisation d’accès restrictive définie. Dans le cas contraire, toute personne ouvrant une session sur l’ordinateur pourra voir votre mot de passe (sauf si vous utilisez aspnet_setreg). Dans tous les cas, tous les utilisateurs du groupe Administrateurs pourront le lire, indépendamment de la liste de contrôle d’accès.

Exécution de ASP.NET par un autre utilisateur sous Windows XP Professionnel

En tant qu’administrateur, modifiez les attributs du fichier « %INSTALLROOT%\Config\machine.config » dans la balise processModel (voir ci-dessous) :

<processModel

        enable="true"

        userName="DOMAIN\username"

        password="MyPswd2"

        ...

/ >

Une alternative plus sécurisante est d’utiliser aspnet_setreg (cf http://support.microsoft.com/default.aspx?scid=329290)

Remarque : %INSTALLROOT% est sous la forme D:\WINDOWS\Microsoft.NET\Framework\v1.0.3705

Exécution de ASP.NET sous une autre identité sous Windows Server 2003

Avec Windows Server 2003 et IIS 6, il existe une nouvelle caractéristique dénommée pools d’application. Chaque pool peut être configuré pour être exécuté par un utilisateur différent, à condition que cet utilisateur soit membre du groupe IIS_WPG. Des racines virtuelles peuvent être ajoutées à un pool d’applications. Le débogueur sera alors capable de s’y joindre si le pool est exécuté par le même utilisateur qui a démarré le débogueur. Ce mécanisme est une façon simple de configurer un autre environnement d’exécution, de protéger sans risque les identifications de l’utilisateur et de configurer des racines virtuelles supplémentaires.

Ajout et configuration d’un pool d’applications

  1. Exécutez la console de gestion compmgmt.msc en tant qu’administrateur.
  2. Cliquez sur le nœud Services et applications pour afficher les nœuds Services d’informations Internet et Pools d’applications.
  3. Cliquez-droit sur le nœud Pools d’applications, puis choisissez Nouveau puis Pool d’applications.
  4. Entrez le nom du pool d’applications puis cliquez sur OK.
  5. Cliquez-droit sur le nouveau pool d’applications et choisissez Propriétés.
  6. Sous l’onglet Identité, choisissez l’option Configurable.
  7. Dans les zones correspondantes, tapez le Nom d’utilisateur et le Mot de passe avec lesquels vous utiliserez le débogueur puis cliquez sur OK.

Remarque : ce compte doit être un membre du groupe IIS_WPG et bénéficier des autorisations d’accès mentionnées plus haut afin d’exécuter les applications ASP.NET.

Configuration d’une racine virtuelle pour exécution dans un pool d’applications

  1. Exécutez la console de gestion compmgmt.msc en tant qu’administrateur.
  2. Cliquez sur le nœud Services et applications pour afficher les nœuds Services d’informations Internet et Sites Web par défaut.
  3. Cliquez sur le nœud Sites Web par défaut pour afficher tous les nœuds virtuels disponibles.
  4. Cliquez-droit sur la racine virtuelle et choisissez Propriétés
  5. Sous l’onglet Répertoire virtuel, modifiez le Pool d’applications dans la liste déroulante afin de sélectionner le pool d'applications s'exécutant avec l'identité de l'utilisateur approprié, puis cliquez sur OK.

Déploiement d’un projet

Le déploiement d’un projet possède les mêmes restrictions que celles de l’installation d’une application à partir du réseau (voir plus haut les outils Runas.exe et MSIEXEC). Déployez le projet comme une application normale, pour tous les utilisateurs. Dans le cas contraire, il peut s'avérer difficile de le démarrer ou de le déboguer.

Conclusion

Le coût du développement d’applications sécurisées et du maintien d'un environnement sécurisé dans lequel vous travaillez en utilisant un compte à faibles privilèges représente un inconvénient mineur lorsque vous devez exécuter une tâche requérant un niveau de privilèges élevé. En contrepartie, vous travaillez dans un environnement plus sain et vous développez des programmes plus sûrs.

Rappelez-vous que plus l’ensemble des privilèges que votre application requiert en fonctionnement est bas, moins cette dernière provoquera de dommages en cas d’incident. Si votre application contient une vulnérabilité, des personnes malintentionnées risquent de la découvrir et de l’exploiter mais avec des conséquences limitées si vos utilisateurs peuvent choisir de l’exécuter avec des privilèges limités.



Dernière mise à jour le lundi 15 mars 2004



Afficher:
© 2014 Microsoft