Skip to main content

Audit log analyzer for Microsoft Purview

Project description

Purviewer

A powerful command-line tool for analyzing Microsoft Purview audit logs and Entra sign-ins. Extract insights from SharePoint, OneDrive, Exchange activity, and user authentication with comprehensive filtering, security analysis, and detailed reporting.

Features

File Operations Analysis

  • File Activity Tracking: Analyze downloads, uploads, deletions, and other file operations
  • Path Analysis: Track access patterns across SharePoint sites and OneDrive folders
  • Bulk Operations Detection: Identify suspicious mass downloads or deletions
  • File Timeline: Generate chronological timelines of file access events
  • URL Export: Export full SharePoint/OneDrive URLs for accessed files

User Activity Insights

  • User Mapping: Map user emails to display names via CSV import
  • Activity Filtering: Filter analysis by specific users or user groups
  • Top Users: Identify most active users by operation type
  • User Statistics: Detailed breakdown of user activity patterns

Security Analysis

  • IP Address Analysis: Track and analyze source IP addresses with optional geolocation lookup
  • User Agent Detection: Identify unusual or suspicious client applications
  • Suspicious Pattern Detection: Flag bulk operations, unusual access patterns, and after-hours activity
  • Network Filtering: Filter by specific IP addresses or exclude known good IPs

Exchange Activity

  • Email Operations: Track email sends, moves, deletions, and rule changes
  • Mailbox Access: Monitor folder access and email reading patterns
  • Client Application Tracking: Identify which applications accessed Exchange
  • Detailed Email Analysis: Extract subjects, senders, recipients, and attachments
  • CSV Export: Export complete Exchange activity to CSV for further analysis

Advanced Filtering

  • Date Range: Filter analysis to specific time periods
  • Action Types: Focus on specific operations (downloads, uploads, etc.)
  • File Keywords: Search for files containing specific keywords
  • IP Filtering: Include or exclude specific IP addresses with wildcard support

Sign-in Analysis (from Entra ID sign-in logs)

  • Authentication Tracking: Analyze user sign-ins from Microsoft Entra audit logs
  • Failure Detection: Identify failed sign-ins and authentication errors
  • Device Analysis: Track device types, operating systems, and client applications
  • Location Monitoring: Analyze sign-in locations and IP addresses
  • Security Insights: Detect unusual sign-in patterns and potential security issues

Arguments

  --actions ACTIONS                     specific actions to analyze, comma-separated (default: all)
  --list LIST                           print list of filenames containing keyword
  --file FILE                           show actions performed on files containing keyword
  --user USER                           filter actions by specific user
  --users-list FILE                     optional CSV with user mappings (UPN, display name)
  --start-date START_DATE               start date for analysis (YYYY-MM-DD)
  --end-date END_DATE                   end date for analysis (YYYY-MM-DD)
  --sort-by {filename,username,date}    sort results by filename, username, or date (default: date)
  --details                             show detailed file lists in operation summaries
  --ips IPS                             filter by individual IPs (comma-separated, supports wildcards)
  --exclude-ips EXCLUDE_IPS             exclude specific IPs (comma-separated, supports wildcards)
  --with-lookups                        perform detailed IP lookups (takes several seconds per IP)
  --timeline                            print a full timeline of file access
  --urls                                export full URLs of accessed files
  --exchange                            output only Exchange activity in table format
  --exchange-csv FILE                   export Exchange activity to specified CSV file
  --entra                               analyze sign-in data from an Entra ID CSV audit log
  --signin-filter SIGNIN_FILTER         filter sign-ins by specified text (case-insensitive)
  --signin-limit SIGNIN_LIMIT           limit rows shown for each sign-in column
  --signin-exclude SIGNIN_EXCLUDE       exclude sign-ins with specified text (case-insensitive)

Usage

# Basic analysis
purviewer audit_log.csv

# Filter by specific actions
purviewer audit_log.csv --actions "FileDownloaded,FileUploaded"

# Analyze specific user
purviewer audit_log.csv --user "john.doe@company.com"

# Filter by date range
purviewer audit_log.csv --start-date "2025-01-01" --end-date "2025-01-31"

# Search for files containing keyword
purviewer audit_log.csv --file "confidential"

# Export Exchange activity to CSV
purviewer audit_log.csv --exchange-csv exchange_activity.csv

# Generate timeline view
purviewer audit_log.csv --timeline

# Export file URLs
purviewer audit_log.csv --urls

# IP analysis with geolocation lookup
purviewer audit_log.csv --with-lookups

# Filter by IP addresses
purviewer audit_log.csv --ips "192.168.1.*,10.0.0.0/8"

# Exclude specific IPs
purviewer audit_log.csv --exclude-ips "192.168.1.100"

# Use user mapping file
purviewer audit_log.csv --users-list users.csv

# Show detailed analysis
purviewer audit_log.csv --details

# Analyze sign-in data
purviewer signin_data.csv --entra

# Filter sign-ins by user or text
purviewer signin_data.csv --entra --signin-filter "admin"

# Exclude certain sign-ins and limit results
purviewer signin_data.csv --entra --signin-exclude "success" --signin-limit 10

Installation

pip install purviewer

Requirements

  • Python 3.13+
  • Microsoft Purview audit log CSV export (for SharePoint/Exchange analysis)
  • Microsoft Entra sign-ins CSV export (for sign-in analysis)

Important Note: The sign-in analysis feature uses a different data source than the main Purview analysis. While most features analyze data from Microsoft Purview audit logs (SharePoint, OneDrive, Exchange), the --entra feature specifically requires a CSV export from Microsoft Entra ID's sign-in logs. These are two separate data sources with different formats and column structures.

The tool automatically detects SharePoint domains and email domains from your audit data, making it work seamlessly with any Microsoft 365 tenant.

License

Purviewer is released under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

purviewer-0.2.1.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

purviewer-0.2.1-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

Details for the file purviewer-0.2.1.tar.gz.

File metadata

  • Download URL: purviewer-0.2.1.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for purviewer-0.2.1.tar.gz
Algorithm Hash digest
SHA256 7596d31375c401f586b9f43a73369431bf3b2feedcc73321d71150ea4530f2b2
MD5 fe8e3d4baa3be1885b40974d50f7235d
BLAKE2b-256 885d0b4ad829c56f090ea0eb5c9199d46d8180b21644b958ed77fa43542981a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for purviewer-0.2.1.tar.gz:

Publisher: python-publish.yml on dannystewart/purviewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file purviewer-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: purviewer-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 39.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for purviewer-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c59ce7395578b970ff52797902c46aa94e93600f0b4033d8643aa8ba4d3ae3c6
MD5 7fd0b389472fc41529c8b23c2348aae7
BLAKE2b-256 b16833c370dccfd4083fe5716e12752892773e4c405d566752e71dde9f6eee72

See more details on using hashes here.

Provenance

The following attestation bundles were made for purviewer-0.2.1-py3-none-any.whl:

Publisher: python-publish.yml on dannystewart/purviewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page