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

Python Version License Poetry


🎯 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)
  • 💾 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

# Clone e instala
git clone https://github.com/luhborba/fabricgov.git
cd fabricgov
poetry install

# 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 test

# 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

# Ou coleta tudo de uma vez
fabricgov collect all-access

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

📘 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/         # 5 collectors com checkpoint
├── 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)
└── 20260225_143000/                # Timestamped folder
    ├── summary.json
    ├── workspaces.csv
    ├── reports.csv
    ├── workspace_access.csv
    ├── report_access.csv
    ├── dataset_access.csv
    └── dataflow_access.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 (Atual) - 2026-02-25

  • CLI completo (fabricgov command)
  • DatasetAccessCollector
  • DataflowAccessCollector
  • 5 collectors com checkpoint
  • Estimativa de tempo restante em coletas
  • Primeira Versão no Pypi
  • Progress bars visuais

🚧 v0.4.0 (Próximo)

  • MkDocs para documentação
  • CapacityConsumptionCollector (DAX queries)
  • Assessment orchestrator
  • Azure Key Vault support

🎯 v1.0.0

  • Primeira versão no PyPI
  • Testes de integração completos
  • Report templates (HTML, Word, PDF)

📘 Ver changelog completo →


📚 Documentação


📄 Licença

MIT License - veja LICENSE


👤 Autor

Luciano Borba — Consultor Data Engineering
Power Tuning


⭐ 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.3.0.tar.gz (31.7 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.3.0-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fabricgov-0.3.0.tar.gz
  • Upload date:
  • Size: 31.7 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.3.0.tar.gz
Algorithm Hash digest
SHA256 b9e0cd9aee6279b1a3b2c30332c4dcd3a843525f3bedbd2a1a68a6a329ade6d0
MD5 b08e6a8b811a51f660d8a371ce919db6
BLAKE2b-256 8f7ae4015cb6a282244f1d28c5cfa0f9cd3ee2bc343c7db1896bbcec80801c4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fabricgov-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 45.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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5894cc79ae6b8fdb57b61321d94d3eb4ccc8e34825b74b18826538bcf6840e6e
MD5 7f76eb728ae87f303c3ee97af9f15173
BLAKE2b-256 a4018d3153714ea0fa462f09e189f3dd8372c152d3b6fd7f6f292af6b6aec016

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