Partage via


Problèmes de sécurité et conseils utiles pour le suivi

Cette rubrique décrit comment vous pouvez protéger les informations sensibles contre l’exposition, ainsi que des conseils utiles lors de l’utilisation de WebHost.

Utilisation d’un écouteur de trace personnalisé avec WebHost

Si vous écrivez votre propre écouteur de suivi, vous devez savoir que les traces peuvent être perdues dans le cas d'un service hébergé sur le Web. Lorsque WebHost recycle, il arrête le processus en direct pendant qu’un doublon prend le relais. Toutefois, les deux processus doivent toujours avoir accès à la même ressource pendant un certain temps, qui dépend du type d’écouteur. Dans ce cas, XmlWriterTraceListener crée un fichier de trace pour le deuxième processus ; tandis que le suivi des événements Windows gère plusieurs processus au sein de la même session et donne accès au même fichier. Si votre propre écouteur ne fournit pas de fonctionnalités similaires, les traces peuvent être perdues lorsque le fichier est verrouillé par les deux processus.

Vous devez également savoir qu’un écouteur de suivi personnalisé peut envoyer des traces et des messages sur le câble, par exemple à une base de données distante. En tant que déployeur d’applications, vous devez configurer des écouteurs personnalisés avec un contrôle d’accès approprié. Vous devez également appliquer un contrôle de sécurité sur toutes les informations personnelles qui peuvent être exposées à l’emplacement distant.

Journalisation des informations sensibles

Les suivis contiennent des en-têtes de messages lorsqu'un message est dans la portée. Lorsque le suivi est activé, les informations personnelles dans des en-têtes spécifiques à l’application, telles qu’une chaîne de requête ; et les informations de corps, telles qu’un numéro de carte de crédit, peuvent devenir visibles dans les journaux. Le déployeur d’applications est chargé d’appliquer le contrôle d’accès sur les fichiers de configuration et de trace. Si vous ne souhaitez pas que ce type d’informations soit visible, vous devez désactiver le suivi ou filtrer une partie des données si vous souhaitez partager les journaux de trace.

Les conseils suivants peuvent vous aider à empêcher l’exposition involontaire du contenu d’un fichier de trace :

  • Vérifiez que les fichiers journaux sont protégés par les listes de contrôle d’accès (ACL) dans les scénarios WebHost et auto-hôte.

  • Choisissez une extension de fichier qui ne peut pas être facilement traitée à l’aide d’une requête Web. Par exemple, l’extension de fichier .xml n’est pas un choix sûr. Vous pouvez consulter le guide d’administration IIS pour afficher la liste des extensions qui peuvent être traitées.

  • Spécifiez un chemin absolu pour l’emplacement du fichier journal, qui doit se trouver en dehors du répertoire public vroot WebHost pour empêcher son accès par un tiers externe à l’aide d’un navigateur Web.

Par défaut, les clés et les informations d’identification personnelle (PII), telles que le nom d’utilisateur et le mot de passe, ne sont pas enregistrées dans les traces et les messages enregistrés. Toutefois, un administrateur d’ordinateur peut utiliser l’attribut enableLoggingKnownPII dans l’élément machineSettings du fichier Machine.config pour permettre aux applications s’exécutant sur l’ordinateur de consigner les informations d’identification personnelle (PII) connues comme suit :

<configuration>
   <system.ServiceModel>
      <machineSettings enableLoggingKnownPii="Boolean"/>
   </system.ServiceModel>
</configuration>

Un déployeur d’applications peut ensuite utiliser l’attribut logKnownPii dans le fichier App.config ou Web.config pour activer la journalisation des informations d’identification personnelle comme suit :

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
  </sources>
</system.diagnostics>

La journalisation des informations personnelles est activée uniquement lorsque les deux paramètres sont true. La combinaison de deux commutateurs permet de consigner les informations d’identification personnelle connues pour chaque application.

Sachez que si vous spécifiez deux sources personnalisées ou plus dans un fichier de configuration, seuls les attributs de la première source sont lus. Les autres sont ignorés. Cela signifie que, pour le fichier App.config, les données personnelles ne sont pas journalisées pour les deux sources, même si la journalisation est explicitement activée pour la deuxième source.

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="false">
        <listeners>
           <add name="messages"
                type="System.Diagnostics.XmlWriterTraceListener"
                initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
      <source name="System.ServiceModel"
         logKnownPii="true">
         <listeners>
            <add name="xml" />
         </listeners>
      </source>
  </sources>
</system.diagnostics>

Si l’élément <machineSettings enableLoggingKnownPii="Boolean"/> existe en dehors du fichier Machine.config, le système génère une ConfigurationErrorsException.

Les modifications sont effectives uniquement lorsque l’application démarre ou redémarre. Un événement est enregistré au démarrage lorsque les deux attributs sont définis sur true. Un événement est également journalisé si logKnownPii est défini sur true, mais enableLoggingKnownPii est false.

Pour plus d’informations sur la journalisation des informations d’identification personnelle, consultez exemple de verrouillage de la sécurité des informations personnelles.

L’administrateur de l’ordinateur et le déploiement d’applications doivent faire preuve d’une prudence extrême lors de l’utilisation de ces deux commutateurs. Si la journalisation des informations d’identification personnelle est activée, les clés de sécurité et les informations d’identification personnelle sont journalisées. S’il est désactivé, les données sensibles et propres à l’application sont toujours enregistrées dans les en-têtes et corps de message. Pour une discussion plus approfondie sur la confidentialité et la protection des informations personnelles contre l’exposition, consultez confidentialité des utilisateurs.

En outre, l’adresse IP de l’expéditeur du message est enregistrée une fois par connexion pour les transports orientés connexion, et une fois par message envoyé dans le cas contraire. Cela s’effectue sans le consentement de l’expéditeur. Toutefois, cet enregistrement se produit uniquement aux niveaux de suivi Information ou Verbose, qui ne sont pas les niveaux de suivi par défaut ou recommandés dans les environnements de production, hormis pour le débogage en direct.

Voir aussi