Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Procédure : Créer un compte personnalisé pour exécuter ASP.NET

Dernière mise à jour le 31 août 2004
Sur cette page

Objectifs Objectifs
S'applique à S'applique à
Résumé Résumé
Points à connaître Points à connaître
Créer un compte local Créer un compte local
Attribuer des privilèges minimum Attribuer des privilèges minimum
Accorder des autorisations NTFS Accorder des autorisations NTFS
Configurer ASP.NET pour l'exécuter avec le nouveau compte Configurer ASP.NET pour l'exécuter avec le nouveau compte

Objectifs

Ce module vous permet d'effectuer les opérations suivantes :

  • créer un compte doté de privilèges minimum et assorti d'autorisations suffisantes pour exécuter les applications ASP.NET correctement ;

  • configurer ASP.NET pour exécuter un compte personnalisé doté de privilèges minimum.

S'applique à

Ce module s'applique aux produits et technologies suivants :

  • Microsoft® Windows® XP ou Windows 2000 Server (avec le Service Pack 3) et systèmes d'exploitation ultérieurs

  • Microsoft .NET Framework version 1.0 (avec le Service Pack 2) et versions ultérieures

  • Internet Information Services (IIS) 5.0 ou 6.0 (uniquement en cas d'utilisation du mode d'isolation IIS 5.0)

Résumé

Par défaut, chaque processus de travail ASP.NET s'exécute dans le contexte d'un compte doté de privilèges minimum appelé ASPNET. Si votre application ASP.NET est déployée sur un serveur établi à partir d'un domaine ou a besoin d'accéder à des ressources sur des serveurs distants, vous pouvez simplifier l'administration en configurant ASP.NET en vue d'une exécution dans le contexte d'un compte différent.

Ce module décrit comment configurer ASP.NET en vue d'une exécution dans le contexte d'un compte local personnalisé ou d'un compte de domaine. Il fournit également des informations sur les autorisations que vous devez attribuer à ce compte pour qu'il fonctionne correctement.

Points à connaître

Avant d'utiliser ce module, vous devez tenir compte des points suivants :

Identité de processus de travail ASP.NET

Le compte utilisé par défaut pour exécuter ASP.NET et créé lors de l'installation est un compte local doté de privilèges minimum. Ce compte est défini dans le fichier Machine.config de la façon suivante :

<processModel enable="true" userName="machine" password="AutoGenerate" />

Ce compte est nommé ASPNET sous Utilisateurs et groupes locaux, et possède un mot de passe sécurisé dans l'autorité du système local (LSA,Local System Authority).

Pour accéder aux ressources réseau (une base de données, par exemple) avec l'identité de processus ASP.NET, vous pouvez effectuer l'une des opérations suivantes :

  • Utiliser un compte de domaine.

  • Utiliser des comptes locaux en miroir (des comptes disposant de noms d'utilisateurs et de mots de passe correspondants sur deux ordinateurs). Adoptez cette méthode lorsque les ordinateurs se trouvent dans des domaines distincts, sans relation de confiance, ou si les ordinateurs sont séparés par un pare-feu et si vous ne pouvez pas ouvrir les ports nécessaires à l'authentification NTLM ou Kerberos.

    La méthode la plus simple consiste à modifier le mot de passe du compte ASPNET en lui attribuant une valeur connue sur le serveur Web, puis à créer un compte nommé ASPNET avec le même mot de passe sur l'ordinateur cible. Sur le serveur Web, vous devez tout d'abord modifier le mot de passe du compte ASPNET dans Utilisateurs et groupes locaux et remplacer les informations d'identification de l'élément <processModel> qui se trouve dans le fichier Machine.config. Vous ne devez pas stocker des mots de passe en texte brut dans le fichier machine.config ; utilisez aspnet_setreg.exe pour stocker les mots de passe sous forme cryptée dans le Registre. Pour plus d'informations, consultez le Module 8, « Sécurité ASP.NET ».

    <processModel enable="true" 
          userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                    ASPNET_SETREG,userName" 
          password="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                    ASPNET_SETREG,password" . . ./>
    

    Vous pouvez suivre les étapes décrites dans ce module pour créer un compte local doté de privilèges minimum.

Emprunt d'identités fixes

Vous pouvez définir des identités fixes pour des répertoires virtuels précis à l'aide du paramètre suivant de Web.config. Utilisez aspnet_setreg.exe pour stocker les informations d'identification sous forme cryptée dans le Registre.

<identity impersonate="true"
          userName="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,userName"
          password="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,password" />

Cette méthode est généralement utilisée lorsque vous disposez de plusieurs sites Web sur le même serveur Web, qui doit fonctionner sous différentes identités, dans les scénarios d'hébergement d'applications par exemple.

Ce module décrit la création d'un compte local doté de privilèges minimum. Si l'administration constitue votre principale préoccupation, vous pouvez recourir à un compte de domaine contraint doté de privilèges minimum, à l'aide d'un mot de passe sécurisé.

Lorsque vous choisissez le compte utilisé pour exécuter ASP.NET, souvenez-vous des éléments suivants :

  • ASP.NET n'emprunte pas d'identité par défaut. Par conséquent, tout accès à une ressource effectué par votre application Web utilise l'identité de processus ASP.NET. Au cours de cet événement, les ressources Windows doivent disposer d'une liste de contrôle d'accès (ACL) qui autorise l'accès au compte du processus ASP.NET.

  • Si vous activez l'emprunt d'identité, votre application accède à des ressources à l'aide du contexte de sécurité de l'appelant initial, ou du compte d'utilisateur Internet anonyme (IUSR_MACHINE, par défaut), si IIS est configuré en vue d'adopter une authentification anonyme. Au cours de cet événement, les ressources doivent posséder des listes de contrôle d'accès établies à partir de l'identité de l'appelant initial (ou IUSR_MACHINE).

  • Adhérez toujours au principe du moindre privilège lors de la création d'un compte personnalisé ; attribuez uniquement l'ensemble minimal de privilèges et d'autorisations requis.

  • Évitez d'exécuter ASP.NET avec le compte SYSTEM.

  • Évitez d'accorder au compte le privilège « Fonctionner en tant que partie intégrante du système d'exploitation ».

Créer un compte local

Cette procédure permet de créer un compte local. Par défaut, celui-ci sera ajouté au groupe Utilisateurs local.

  • Pour créer un compte local

    1. Créez un compte local (par exemple « CustomASPNET »).
      Veillez à associer un mot de passe sécurisé au compte. Les mots de passe sécurisés doivent contenir au moins sept caractères et utiliser une combinaison de lettres minuscules et majuscules, de nombres et d'autres caractères tels que *, ? ou $.

    2. Désactivez l'option L'utilisateur doit modifier le mot de passe à la prochaine ouverture de session.

    3. Sélectionnez l'option Le mot de passe n'expire jamais.

Attribuer des privilèges minimum

Cette procédure permet d'attribuer un ensemble minimal de privilèges nécessaires à l'exécution de ASP.NET.

  • Pour attribuer des privilèges minimum

    1. À partir du groupe de programmes Outils d'administration, démarrez l'outil Stratégie de sécurité locale.

    2. Développez Stratégies locales et sélectionnez Attribution des droits d'utilisateur.
      Une liste de privilèges apparaît dans le volet situé à droite.

    3. Attribuez les privilèges suivants au nouveau compte :

      • Accéder à cet ordinateur à partir du réseau

      • Ouvrir une session en tant que tâche

      • Ouvrir une session en tant que service

      • Refuser les ouvertures de session locales

      • Interdire l'ouverture de session par les services Terminal Server

      Remarque : pour attribuer un privilège à un compte, double-cliquez sur le privilège, puis cliquez sur Ajouter afin de sélectionner le compte concerné.

    4. Fermez l'outil.

Accorder des autorisations NTFS

Cette procédure accorde les autorisations NTFS nécessaires au compte ASP.NET personnalisé dans le système de fichiers local.

Remarque : les étapes décrites dans cette procédure s'appliquent au système de fichiers du serveur Web (et non à celui d'un ordinateur distant, sur lequel vous pourriez être amené à dupliquer le compte dans le cadre de l'authentification réseau).

  • Pour accorder des autorisations NTFS

    1. Démarrez l'Explorateur Windows et accordez les autorisations appropriées aux dossiers indiqués dans le tableau 1.

      Le compte d'emprunt d'identité fixe indiqué dans le tableau 1 renvoie au compte qui peut être configuré le cas échéant à l'aide de l'élément <identity> dans Web.config, comme illustré ci-dessous.

      <identity impersonate="true"
                userName="registry:HKLM\SOFTWARE\YourSecureApp\
                          identity\ASPNET_SETREG,userName"
                password="registry:HKLM\SOFTWARE\YourSecureApp\
                          identity\ASPNET_SETREG,password" />
      

      Dans cet exemple, aspnet_setreg.exe est utilisé pour stocker sous forme cryptée les informations d'identification du compte personnalisé dans le Registre.

      Tableau 1 : Autorisations NTFS nécessaires

      Emplacement

      Autorisation nécessaire

      Compte

      Commentaires

      Fichiers ASP.NET temporaires :
      C:\WINNT\Microsoft.NET\
      Framework\<version>\
      Fichiers ASP.NET temporaires

      Contrôle total

      Comptes du processus et d'emprunt d'identité fixe

      Il s'agit de l'emplacement de la compilation dynamique ASP.NET. Le code d'application est généré dans un sous-répertoire distinct de ce dossier pour chaque application.
      L'attribut tempdir de l'élément <compilation> permet de modifier cet emplacement par défaut.

      Dossier temporaire :
      C:\WINNT\temp

      Lecture/Écriture/Suppression

      Processus

      Emplacement utilisé par les services Web pour générer des proxy de sérialisation.
      Notez que l'autorisation Supprimer
      est définie à l'aide du bouton
      Avancé qui se trouve sur la page
      Sécurité de la boîte de dialogue de propriétés du dossier de l'Explorateur Windows.

      Répertoire virtuel de l'application :
      C:\inetpub\wwwroot\webapp1

      Lecture

      Processus

      Emplacement des fichiers de l'application Web (répertoire racine virtuel de votre application.
      Par défaut, le groupe Utilisateurs possède les droits d'accès appropriés.

      Hiérarchie de l'installation (%installroot) :

      (C:\WINNT\Microsoft.Net\
      Framework\v1.0.3705)

      Lecture

      Comptes du processus et d'emprunt d'identité fixe

      ASP.NET doit être en mesure d'accéder aux assemblys .NET Framework.
      Par défaut le groupe Utilisateurs possède les droits d'accès appropriés.

      Global Assembly Cache :
      C:\WINNT\assembly

      Lecture

      Comptes du processus et d'emprunt d'identité fixe

      Il s'agit de l'outil Global Assembly Cache. Vous ne pouvez pas utiliser directement l'Explorateur Windows pour modifier les listes de contrôle d'accès pour ce dossier.
      Utilisez une fenêtre de commande Windows et exécutez la commande suivante :
      cacls %windir%\assembly /e /t /p domain\useraccount:R.
      Avant d'utiliser l'Explorateur Windows, vous pouvez également annuler l'inscription de shfusion.dll à l'aide de la commande suivante :
      regsvr32 –u shfusion.dll.
      Une fois les autorisations définies avec l'Explorateur Windows, inscrivez de nouveau shfusion.dll à l'aide de la commande suivante :
      regsvr32 shfusion.dll.

      Racine du site Web :
      C:\inetpub\
      wwwroot ou le chemin vers lequel pointe le site Web par défaut.

      Lecture

      Processus

      ASP.NET lit les fichiers de configuration et surveille les modifications de fichier dans ce dossier.

      Racine système :
      C:\WINNT\system32

      Lecture

      Processus

      Pour les fichiers DLL système chargés par l'environnement Framework.

      Hiérarchie des dossiers d'application
      C:
      \C:\inetpub\
      C:\inetpub\wwwroot\
      C:\inetpub\wwwroot\ mywebapp1

      Lister le dossier/Lecture

      Processus

      Pour les notifications de modification de fichier et le compilateur C# (à des fins de simplification des droits d'accès aux fichiers), le compte du processus doit disposer des autorisations Lister le dossier et Lire les données dans la hiérarchie des dossiers de l'application (tous les dossiers parents jusqu'à la racine).

Configurer ASP.NET pour l'exécuter avec le nouveau compte

Cette procédure modifie le fichier Machine.config pour configurer ASP.NET de manière à l'exécuter avec le nouveau compte.

  • Pour configurer ASP.NET de manière à l'exécuter avec le nouveau compte

    1. À l'invite de commandes, exécutez aspnet_setreg.exe afin d'ajouter au Registre une version cryptée du nom d'utilisateur et du mot de passe associés à votre compte personnalisé. Pour plus d'informations sur cet utilitaire et son téléchargement, consultez l'article 329290, « COMMENT FAIRE : Utilisation de l'utilitaire ASP.NET pour crypter les informations d'authentification et les chaînes de connexion de l'état de session » de la Base de connaissances Microsoft : http://support.microsoft.com/default.aspx?scid=329290.

      aspnet_setreg -k:SOFTWARE\YourSecureApp\processModel 
                    -u:"CustomASPNET" -p:"VotreMotDePasseSécurisé"
      
    2. Ouvrez le fichier Machine.config à l'aide de Visual Studio.NET ou du Bloc-notes.
      Le fichier Machine.config se trouve dans le dossier suivant :

      C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG
      
    3. Recherchez l'élément <processModel> et définissez les attributs userName et password de sorte qu'ils contiennent les chaînes suivantes pointant vers les informations d'identification cryptées.

      Default: 
      <processModel userName="machine" password="AutoGenerate" . . ./>
      Devient: 
      <processModel 
        userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
                  ASPNET_SETREG,userName" 
        password="registry:HKLM\SOFTWARE\YourSecureApp\processmodel\
                  ASPNET_SETREG,password" . . . />
      
    4. Enregistrez les modifications dans Machine.config.

Cela vous a-t-il été utile ?
(1500 caractères restants)
© 2013 Microsoft. Tous droits réservés.