Configuration de l'identité de processus ASP.NET
Les pages ASP.NET sont exécutées dans un processus, ou programme Windows. Tous les programmes Windows s'exécutent avec une identité de sécurité spécifique. Par défaut, le processus ASP.NET s'exécute sous une identité Windows prédéfinie. En configurant votre application afin qu'elle utilise l'emprunt d'identité, vous pouvez également faire en sorte qu'ASP.NET s'exécute sous une identité différente ou sous l'identité Windows de l'utilisateur à l'origine de la demande.
Pour améliorer la sécurité de vos applications ASP.NET, vous devez vérifier que le processus ASP.NET s'exécute avec une identité qui possède les autorisations minimales requises pour exécuter vos applications. Les ressources exposées par ASP.NET sont ainsi moins vulnérables en cas de violation de la sécurité.
Sur un serveur Web exécutant Microsoft Windows Server 2003 et Internet Information Services (IIS) 6.0, le processus ASP.NET s'exécute dans le pool d'applications pour l'application Web. Le pool d'applications définit l'identité sous laquelle ASP.NET s'exécute (par défaut, le compte SERVICE RÉSEAU). Dans les versions antérieures d'IIS, (dans les systèmes d'exploitation Microsoft Windows 2000 et Windows XP Professionnel) ASP.NET s'exécute dans le processus de traitement ASP.NET (Aspnet_wp.exe). L'identité utilisée par ASP.NET pour s'exécuter est définie par l'identité du processus Aspnet_wp.exe (par défaut, le compte ASPNET).
Pour spécifier l'identité de votre application ASP.NET sur un serveur exécutant Windows Server 2003, utilisez le Gestionnaire des services IIS pour configurer l'identité du pool d'applications pour votre application ASP.NET. L'identité du pool d'applications doit également être ajoutée au groupe IIS_WPG sur l'ordinateur serveur.
Pour exécuter le processus de traitement ASP.NET avec son propre compte sous Windows 2000 et Windows XP Professionnel, vous pouvez appliquer les deux attributs suivants à l'élément de configuration <processModel> du fichier Machine.config du serveur Web :
userName Nom du compte Windows sous lequel le processus s'exécutera.
password Mot de passe en texte clair pour le compte. Il existe certains risques de sécurité lorsque des mots de passe en texte clair sont stockés dans un fichier de configuration. Si vous stockez des informations d'identification dans le fichier de configuration, vous devez chiffrer le contenu de l'élément de configuration <processModel> à l'aide de la configuration protégée. Pour plus d'informations, consultez Chiffrement des informations de configuration à l'aide de la configuration protégée. Pour les applications publiées sur Internet, vous devez utiliser d'autres méthodes pour exécuter l'application avec une identité spécifique, par exemple l'emprunt de l'identité anonyme fournie par IIS. Pour plus d'informations, consultez Utilisation de l'authentification IIS avec l'emprunt d'identité ASP.NET.
L'exemple suivant montre comment définir ces attributs dans l'élément <processModel> d'un fichier de configuration afin d'exécuter le processus de traitement sous un compte d'utilisateur local.
<system.web>
<processModel enable="true"
userName="LOCALMACHINE\IUSR_ProcessUser"
password="%Hco94*#QW12"/>
</system.web>
En plus d'affecter à l'attribut userName le nom d'une identité Windows existante, vous pouvez lui affecter les noms prédéfinis System ou Machine. Le compte System exécute le processus de traitement sous la même identité qu'IIS (généralement SYSTEM).
Remarque de sécurité |
---|
Il est déconseillé d'exécuter les applications sous le compte System, car le compte bénéficie de droits élevés et peut donc représenter un problème de sécurité si le processus ASP.NET est compromis. |
Le compte Machine exécute le processus de traitement avec un compte spécial nommé ASPNET qui possède des autorisations limitées. Qu'il utilise l'une ou l'autre identité, le processus ne doit pas fournir des informations d'identification au système d'exploitation.
Notes
Pour que vos applications ASP.NET fonctionnent correctement, vous devez vérifier que l'identité du processus a accès aux listes de contrôle d'accès (ACL - Access Control Lists) qui sont répertoriées dans Listes de contrôle d'accès requis par ASP.NET. En outre, sur les serveurs exécutant IIS 5.0, l'identité du processus doit bénéficier de l'accès en lecture à la métabase IIS, ce qui est possible en utilisant l'outil Aspnet_regiis.exe et en spécifiant l'option -ga (par exemple, aspnet_regiis -ga "UserDomain\ApplicationUser"
).