MSAL에서 Python 로깅

MSAL(Microsoft 인증 라이브러리) 앱은 문제를 진단하는 데 도움이 되는 로그 메시지를 생성합니다. 앱은 몇 줄의 코드로 로깅을 구성하고 세부 수준 및 개인 및 조직 데이터 로깅 여부를 사용자 지정 제어할 수 있습니다. MSAL 로깅 구현을 만들고 사용자가 인증 문제가 있을 때 로그를 제출할 수 있는 방법을 제공하는 것이 좋습니다.

MSAL Python 로깅은 표준 Python 로깅 메커니즘을 사용하도록 설계되었기 때문에 Python 로깅에 대한 모든 이전 지식이 MSAL Python 적용됩니다.

  • 기본적으로 모든 Python 스크립트의 로깅은 해제됩니다. Python 스크립트 전체의 모든 모듈에 대해 디버그 로깅을 활성화하려면 logging.basicConfig(level=logging.DEBUG)를 사용합니다.
  • 대부분의 MSAL Python 로그는 디버그 수준에 이미 있으며 기본적으로 해제됩니다. 하지만 Python 스크립트의 다른 모듈을 디버깅하기 위해 디버그 로깅을 사용하도록 설정했고, 이 경우 MSAL의 로그는 출력되지 않게 하려면 MSAL Python에서 사용하는 로거를 끄기만 하면 됩니다: logging.getLogger("msal").setLevel(logging.WARN).
  • MSAL Python PII(개인 식별 정보)를 기록하지 않습니다. 따라서 MSAL Python에는 PII 로깅을 켜는 토글조차 없습니다. 앱 개발자는 표준 Python 로깅을 사용하여 콘텐츠를 기록할 수 있습니다. 이렇게 하면 앱은 매우 중요한 데이터를 안전하게 처리하고 규정 요구 사항을 준수해야 합니다.

로깅 수준

MSAL은 다음과 같은 여러 수준의 로깅 세부 정보를 제공합니다.

  • LogAlways: 이 로그 수준에서 수준 필터링이 수행되지 않습니다. 모든 수준의 로그 메시지가 기록됩니다.
  • Critical: 복구할 수 없는 애플리케이션 또는 시스템 충돌 또는 즉각적인 주의가 필요한 치명적인 오류를 설명하는 로그입니다.
  • Error: 문제가 발생하여 오류가 발생했음을 나타냅니다. 문제를 디버깅하고 식별하는 데 사용됩니다.
  • Warning: 반드시 오류나 장애가 발생했다는 뜻은 아니지만, 진단 및 문제의 원인을 정확히 찾아내기 위한 것입니다.
  • Informational: MSAL은 반드시 디버깅을 위한 것이 아니라 정보 제공을 위한 이벤트를 기록합니다.
  • Verbose (기본값): MSAL은 라이브러리 동작의 전체 세부 정보를 기록합니다.

메모

모든 MSAL 라이브러리에 대해 모든 로그 수준을 사용할 수 있는 것은 아닙니다.

개인 및 조직 데이터

기본적으로 MSAL 로거는 매우 중요한 개인 또는 조직 데이터를 캡처하지 않습니다. 라이브러리는 사용자가 원할 경우 개인 및 조직 데이터의 로깅을 활성화할 수 있는 옵션을 제공합니다.

다음 섹션에서는 애플리케이션에 대한 MSAL 오류 로깅에 대한 자세한 내용을 제공합니다.

Python 로깅용 MSAL

Python MSAL의 로깅은 Python 표준 라이브러리의 로깅 모듈을 활용합니다. 다음과 같이 MSAL 로깅을 구성할 수 있습니다(username_password_sample 작동 중인 것으로 확인).

모든 모듈에 디버그 로깅 사용

기본적으로 모든 Python 스크립트의 로깅은 해제됩니다. 스크립트의 모든 파이썬 모듈에 대해 상세 로깅을 사용하도록 설정하려면, 수준을 logging.DEBUG로 지정한 logging.basicConfig을(를) 사용합니다:

import logging

logging.basicConfig(level=logging.DEBUG)

그러면 로깅 모듈에 제공된 모든 로그 메시지가 표준 출력에 출력됩니다.

MSAL 로깅 수준 구성

로거 이름을 logging.getLogger()가진 메서드를 사용하여 Python 로그 공급자에 대한 MSAL의 "msal" 로깅 수준을 구성할 수 있습니다.

import logging

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

Azure 앱 Insights를 사용하여 MSAL 로깅 구성

Python 로그는 로그 핸들러에 전달되며, 이 핸들러는 기본적으로 StreamHandler입니다. 계측 키를 사용하여 MSAL 로그를 Application Insights로 보내려면 opencensus-ext-azure 라이브러리에서 제공하는 AzureLogHandler를 사용합니다.

설치하려면 opencensus-ext-azure 종속성에 PyPI의 opencensus-ext-azure 패키지를 추가하거나 pip install로 설치하세요.

pip install opencensus-ext-azure

그런 다음 "msal" 로그 공급자의 기본 처리기를 APP_INSIGHTS_KEY 환경 변수에 설정된 계측 키가 있는 AzureLogHandler 인스턴스로 변경합니다.

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)))

Python 개인 및 조직 데이터

Python MSAL은 개인 데이터 또는 조직 데이터를 기록하지 않습니다. 개인 또는 조직 데이터 로깅을 설정하거나 해제할 속성이 없습니다.

표준 Python 로깅을 사용하여 원하는 내용을 기록할 수 있지만 중요한 데이터를 안전하게 처리하고 규정 요구 사항을 준수해야 합니다.

Python 로깅에 대한 자세한 내용은 Python 로깅 방법(방법)을 참조하세요.