Skip to main content

Biblioteca Python para extralçao automatizada de dados para governança em Microsoft Fabric

Project description

fabricgov

Biblioteca Python para assessment automatizado de governança em ambientes Microsoft Fabric

🇺🇸 English documentation: README.en.md

Python Version License Poetry PyPI version Python Version


🎯 O que é?

fabricgov automatiza coleta de dados de governança em Microsoft Fabric via CLI ou Python.

Principais features:

  • 🔍 Inventário completo de workspaces e 27+ tipos de artefatos
  • 🔐 Coleta de acessos (workspaces, reports, datasets, dataflows)
  • 🔄 Histórico de refresh e agendamentos configurados
  • 🏢 Domínios, tags, capacidades e workloads do tenant
  • 💾 Sistema de checkpoint para tenants grandes (retoma de onde parou)
  • 📊 Export em JSON ou CSV
  • ⚡ CLI pronto para uso
  • 🛡️ Rate limit handling automático

📦 Instalação

# Via pip (recomendado)
pip install fabricgov

# Ou via Poetry
poetry add fabricgov

# CLI fica disponível
fabricgov --help

🚀 Quick Start

1. Configure credenciais (.env)

FABRICGOV_TENANT_ID=seu-tenant-id
FABRICGOV_CLIENT_ID=seu-client-id
FABRICGOV_CLIENT_SECRET=seu-client-secret

📘 Como obter credenciais →


2. Use o CLI

# Testa credenciais
fabricgov auth sp

# Coleta inventário
fabricgov collect inventory

# Coleta acessos (com checkpoint automático)
fabricgov collect workspace-access
fabricgov collect report-access
fabricgov collect dataset-access
fabricgov collect dataflow-access
fabricgov collect all-access   # todos os acessos de uma vez

# Coleta refresh
fabricgov collect refresh-history
fabricgov collect refresh-schedules
fabricgov collect all-refresh   # histórico + agendamentos

# Coleta infraestrutura
fabricgov collect domains
fabricgov collect tags
fabricgov collect capacities
fabricgov collect workloads

Flags disponíveis:

  • --format json|csv (padrão: csv)
  • --output DIR (padrão: output)
  • --resume/--no-resume (padrão: resume habilitado)

3. Ou use como biblioteca Python

from fabricgov.auth import ServicePrincipalAuth
from fabricgov.collectors import WorkspaceInventoryCollector
from fabricgov.exporters import FileExporter

# Autentica
auth = ServicePrincipalAuth.from_env()

# Coleta inventário
collector = WorkspaceInventoryCollector(auth=auth)
result = collector.collect()

# Exporta
exporter = FileExporter(format="csv", output_dir="output")
exporter.export(result, [])

📊 Coletores Disponíveis

Coletor O que coleta Checkpoint
WorkspaceInventoryCollector Inventário completo (workspaces + 27 tipos de artefatos)
WorkspaceAccessCollector Roles (Admin, Member, Contributor, Viewer)
ReportAccessCollector Permissões em reports
DatasetAccessCollector Permissões em datasets
DataflowAccessCollector Permissões em dataflows
RefreshHistoryCollector Histórico de execuções de datasets e dataflows
RefreshScheduleCollector Agendamentos configurados (sem chamadas de API)
DomainCollector Domínios do tenant (hierarquia, sensitivity labels)
TagCollector Tags do tenant (escopo tenant ou domínio)
CapacityCollector Capacidades Premium/Fabric (SKU, região, admins)
WorkloadCollector Workloads de capacidades Gen1 (P-SKU, A-SKU)

📘 Ver exemplos detalhados →


💾 Sistema de Checkpoint

Para tenants grandes, o checkpoint salva progresso automaticamente:

# Execução 1: processa 200 itens, salva checkpoint
fabricgov collect report-access
# ⏹️ Rate limit atingido (429)

# Aguarda ~1h30min

# Execução 2: retoma de onde parou (automático)
fabricgov collect report-access
# ✓ Processa mais 200 itens...

Como funciona:

  1. Detecta rate limit (429)
  2. Salva checkpoint automaticamente
  3. Encerra script (terminal liberado)
  4. Na próxima execução, retoma de onde parou

📘 Entenda limitações de rate limit →


🏗️ Arquitetura

fabricgov/
├── cli/                # CLI via Click
├── auth/               # ServicePrincipalAuth + DeviceFlowAuth
├── collectors/         # 11 collectors (access, refresh, infraestrutura)
├── exporters/          # JSON/CSV export
├── checkpoint.py       # Sistema de checkpoint
└── exceptions.py       # Exceções customizadas

📊 Exemplo de Output

output/
├── inventory_result.json           # Reutilizável entre collectors
├── checkpoint_report_access.json   # Checkpoint (auto-removido ao completar)
└── 20260226_143000/                # Timestamped folder
    ├── summary.json
    ├── workspaces.csv
    ├── reports.csv
    ├── workspace_access.csv
    ├── report_access.csv
    ├── dataset_access.csv
    ├── dataflow_access.csv
    ├── refresh_history.csv
    ├── refresh_schedules.csv
    ├── domains.csv
    ├── tags.csv
    ├── capacities.csv
    ├── workloads.csv
    └── workloads_errors.csv

⚠️ Limitações Conhecidas

Rate Limiting

  • APIs Admin: ~200 requests/hora (não documentado)
  • Tenants grandes: múltiplas execuções com pausas de ~1h30min
  • Checkpoint permite retomar sem perder progresso

Personal Workspaces

  • Não suportam APIs de usuários (retornam 404)
  • Filtrados automaticamente (30-60% dos workspaces em tenants típicos)

Performance

  • 200 workspaces: ~10 min
  • 663 reports: ~5h (4 execuções com pausas)
  • 2000+ itens: requer coleta agendada

📘 Lista completa de limitações →


🗺️ Roadmap

✅ v0.3.0 - 2026-02-23

  • CLI completo (fabricgov command)
  • DatasetAccessCollector
  • DataflowAccessCollector
  • 5 collectors com checkpoint
  • Primeira Versão no Pypi

✅ v0.4.0 - 2026-02-24

  • RefreshHistoryCollector (histórico de execuções)
  • RefreshScheduleCollector (agendamentos configurados)
  • CLI: fabricgov collect refresh-history
  • CLI: fabricgov collect refresh-schedules
  • CLI: fabricgov collect all-refresh
  • CLI: fabricgov auth sp (renomeado de auth test)

✅ v0.5.0 (Atual)

  • DomainCollector (domínios do tenant)
  • TagCollector (tags do tenant)
  • CapacityCollector (capacidades Premium/Fabric)
  • WorkloadCollector (workloads de capacidades Gen1)
  • CLI: fabricgov collect domains/tags/capacities/workloads
  • 11 collectors no total
  • CLI: Orquestradores all-infrastructure, all-access, all-refresh, all
  • CLI: fabricgov collect all — coleta completa em sessão única com checkpoint
  • CLI: fabricgov collect status — status da sessão e checkpoints pendentes
  • Progress bars visuais nos coletores de acesso e refresh

✅ v0.6.0

  • Atualização de Documentação interna (pt-BR)

🎯 v0.6.1 (Atual)

  • Documentação em inglês (docs/en/)
  • README em inglês

🎯 v0.7.0

  • Report HTML

v0.8.0

  • Identificar datasets sem dono
  • Usuários externos com acesso a workspaces sensíveis
  • Workspaces sem refresh há mais de 30 dias
  • CLI: fabricgov analyze

v0.9.0

  • Integração com KeyVault
  • Comparação de Snapshots - fabricgov diff

🎯 v1.0.0

  • Atualizar Report HTML
  • MkDocs para documentação

📘 Ver changelog completo →


📚 Documentação


📄 Licença

MIT License - veja LICENSE


👤 Autor

Luciano Borba — Consultor Data Engineering


⭐ Se este projeto foi útil, considere dar uma estrela no GitHub!

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

fabricgov-0.6.1.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

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

fabricgov-0.6.1-py3-none-any.whl (65.1 kB view details)

Uploaded Python 3

File details

Details for the file fabricgov-0.6.1.tar.gz.

File metadata

  • Download URL: fabricgov-0.6.1.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Linux/6.6.87.2-microsoft-standard-WSL2

File hashes

Hashes for fabricgov-0.6.1.tar.gz
Algorithm Hash digest
SHA256 cb7edd30bf4f74823763a774b5ab8a1f090c4ba0fd7123452fcc2751b51d2f4a
MD5 d231c89aaa6cd8d917d4a8f5c8ea3422
BLAKE2b-256 a08ad1f6e7948f2d9aeb034c5bcf377a8cae2bf1376c6408e13aefa10d93ad5f

See more details on using hashes here.

File details

Details for the file fabricgov-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: fabricgov-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 65.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Linux/6.6.87.2-microsoft-standard-WSL2

File hashes

Hashes for fabricgov-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 309852fa5840ef9a403594f903f7e4d126398a1727a69af1ba10b6fdb316d97c
MD5 bab3f1bdc93d517230414a8b27f5f1b6
BLAKE2b-256 c0ff14319f99c407139a5ec7d307a6d960ab38e9283ff64837c931050d5e321d

See more details on using hashes here.

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