Journalisation dans MSAL pour Python

Les applications Microsoft Authentication Library (MSAL) génèrent des messages de journal qui peuvent aider à diagnostiquer les problèmes. Une application peut configurer la journalisation avec quelques lignes de code et avoir un contrôle personnalisé sur le niveau de détail et si les données personnelles et organisationnelles sont enregistrées ou non. Nous vous recommandons de créer une implémentation de journalisation MSAL et de fournir aux utilisateurs un moyen d’envoyer des journaux lorsqu’ils rencontrent des problèmes d’authentification.

La journalisation dans MSAL Python est conçue pour utiliser les mécanismes de journalisation de Python standard, de sorte que toutes vos connaissances précédentes sur la journalisation Python s’appliquent à MSAL Python.

  • Par défaut, la journalisation dans n’importe quel script Python est désactivée. Si vous souhaitez activer la journalisation du débogage pour tous les modules dans l’ensemble de votre script Python, vous utilisez logging.basicConfig(level=logging.DEBUG).
  • La plupart des messages de journalisation de MSAL Python sont déjà au niveau de débogage, qui est désactivé par défaut. Mais si vous souhaitez activer la journalisation de débogage pour déboguer les modules OTHER dans votre script Python, vous voulez donc désactiver MSAL, vous désactivez simplement l’enregistreur d’événements utilisé par MSAL Python : logging.getLogger("msal").setLevel(logging.WARN).
  • MSAL Python ne consigne pas les informations d’identification personnelles (PII). Donc, il n’existe même pas d’option permettant d’activer la journalisation des données personnelles dans MSAL pour Python. Les développeurs d’applications peuvent toujours utiliser la journalisation standard Python pour journaliser le contenu. Ainsi, l’application prend la responsabilité de gérer en toute sécurité les données hautement sensibles et de suivre les exigences réglementaires.

Niveaux de journalisation

MSAL fournit plusieurs niveaux de détail de journalisation :

  • LogAlways: Aucun filtrage par niveau n’est effectué pour ce niveau de journalisation. Les messages de journalisation de tous les niveaux sont enregistrés.
  • Critical : journaux qui décrivent un plantage irrécupérable de l’application ou du système, ou une défaillance catastrophique nécessitant une attention immédiate.
  • Error: indique qu’une erreur s’est produite et qu’une erreur a été générée. Utilisé pour le débogage et l’identification des problèmes.
  • Warning: Il n’y a pas nécessairement eu d’erreur ou d’échec, mais sont destinés aux diagnostics et à l’identification des problèmes.
  • Informational: MSAL journalise les événements destinés à des fins d’information qui ne sont pas nécessairement destinés au débogage.
  • Verbose (Par défaut) : MSAL enregistre les détails complets du comportement de la bibliothèque.

Note

Tous les niveaux de journalisation ne sont pas disponibles pour toutes les bibliothèques MSAL.

Données personnelles et organisationnelles

Par défaut, l’enregistreur d’événements MSAL ne capture pas de données personnelles ou organisationnelles hautement sensibles. La bibliothèque offre la possibilité d’activer la journalisation des données personnelles et organisationnelles si vous décidez de le faire.

Les sections suivantes fournissent plus de détails sur la journalisation des erreurs MSAL pour votre application.

MSAL pour la journalisation Python

La journalisation dans MSAL pour Python tire parti du module de journalisation dans la bibliothèque standard Python. Vous pouvez configurer la journalisation MSAL comme suit (et la voir en action dans la username_password_sample) :

Activer la journalisation du débogage pour tous les modules

Par défaut, la journalisation dans n’importe quel script Python est désactivée. Si vous souhaitez activer la journalisation détaillée pour tous les modules Python dans votre script, utilisez logging.basicConfig avec un niveau de logging.DEBUG:

import logging

logging.basicConfig(level=logging.DEBUG)

Cela imprime tous les messages de journal donnés au module de journalisation dans la sortie standard.

Configurer le niveau de journalisation MSAL

Vous pouvez configurer le niveau de journalisation du fournisseur de journaux MSAL pour Python à l’aide de la méthode logging.getLogger() avec le nom du journaliseur "msal" :

import logging

logging.getLogger("msal").setLevel(logging.WARN)

Configurer la journalisation MSAL avec Azure App Insights

Les journaux Python sont transmis à un gestionnaire de journalisation, qui, par défaut, est StreamHandler. Pour envoyer des journaux MSAL à Application Insights avec une clé d’instrumentation, utilisez le AzureLogHandler fourni par la bibliothèque opencensus-ext-azure.

Pour installer, opencensus-ext-azure ajoutez le paquet opencensus-ext-azure depuis PyPI à vos dépendances ou exécutez pip install :

pip install opencensus-ext-azure

Modifiez ensuite le gestionnaire par défaut du module fournisseur d’informations "msal" en une instance de AzureLogHandler avec une clé d’instrumentation définie dans la APP_INSIGHTS_KEY variable d’environnement :

import logging
import os

from opencensus.ext.azure.log_exporter import AzureLogHandler

APP_INSIGHTS_KEY = os.getenv('APP_INSIGHTS_KEY')

logging.getLogger("msal").addHandler(AzureLogHandler(connection_string='InstrumentationKey={0}'.format(APP_INSIGHTS_KEY)))

Données personnelles et organisationnelles dans Python

MSAL pour Python ne consigne pas les données personnelles ni les données organisationnelles. Il n’existe pas de propriété permettant d’activer ou de désactiver la journalisation des données personnelles ou organisationnelles.

Vous pouvez utiliser la journalisation de Python standard pour journaliser ce que vous souhaitez, mais vous êtes responsable de la gestion sécurisée des données sensibles et de la conformité aux exigences réglementaires.

Pour plus d'informations sur la journalisation dans Python, reportez-vous à la section Journalisation de Python : procédure.