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
🎯 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
# 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
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 | ✅ |
💾 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:
- Detecta rate limit (429)
- Salva checkpoint automaticamente
- Encerra script (terminal liberado)
- Na próxima execução, retoma de onde parou
🏗️ 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
🗺️ Roadmap
✅ v0.3.0 (Atual) - 2026-02-25
- CLI completo (
fabricgovcommand) - 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
- Testes de integração completos
- Report templates (HTML, Word, PDF)
📚 Documentação
- Autenticação — Service Principal setup
- Coletores — Exemplos e casos de uso
- Exportadores — Integração com Power BI, Pandas
- Limitações — Rate limits, performance
- Contribuindo — Como contribuir
📄 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fabricgov-0.3.2.tar.gz.
File metadata
- Download URL: fabricgov-0.3.2.tar.gz
- Upload date:
- Size: 31.8 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e7cf9f7414eed35e5650c234861c52154693e6b84ffd3cbaed43621f1590dab
|
|
| MD5 |
b2aa13ae256bf26f00777cf4ab85f2d1
|
|
| BLAKE2b-256 |
21b3d0ee988d60cd119f4bf5248cf22bc77cdd2a63900e689e900be3a1bf28c0
|
File details
Details for the file fabricgov-0.3.2-py3-none-any.whl.
File metadata
- Download URL: fabricgov-0.3.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0bdf0c23f119a3edc8277fbbee33d047c6f3bbdd0ede0d62a8fe26a72f95817
|
|
| MD5 |
80164cec044dcbf053ce76443cfaf304
|
|
| BLAKE2b-256 |
299e9feb7cb064ba43e9ec4f38868f686f218d124b52f80b9c7911e17e7a9a28
|