{"id":50803912,"url":"https://github.com/caiotomaza/govcert","last_synced_at":"2026-06-12T23:05:37.909Z","repository":{"id":359434116,"uuid":"1246068021","full_name":"caiotomaza/govcert","owner":"caiotomaza","description":"Projeto da faculdade pra disciplina de governança e segurança da informação. A ideia é monitorar o uso de IAs generativas dentro de órgãos públicos — tipo quando um servidor cola um CPF ou dado sigiloso no ChatGPT sem perceber o risco.  O sistema é composto por uma extensão do Chrome que captura as interações com IAs (input e output) e manda pra um","archived":false,"fork":false,"pushed_at":"2026-05-21T21:10:31.000Z","size":151,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-05-22T06:41:52.591Z","etag":null,"topics":["api","chrome","laravel","php"],"latest_commit_sha":null,"homepage":"http://localhost:8000/","language":"Blade","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caiotomaza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T20:56:46.000Z","updated_at":"2026-05-21T21:11:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/caiotomaza/govcert","commit_stats":null,"previous_names":["caiotomaza/govcert"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/caiotomaza/govcert","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiotomaza%2Fgovcert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiotomaza%2Fgovcert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiotomaza%2Fgovcert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiotomaza%2Fgovcert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caiotomaza","download_url":"https://codeload.github.com/caiotomaza/govcert/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caiotomaza%2Fgovcert/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34265538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","chrome","laravel","php"],"created_at":"2026-06-12T23:05:37.193Z","updated_at":"2026-06-12T23:05:37.900Z","avatar_url":"https://github.com/caiotomaza.png","language":"Blade","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GovCert\n\nSistema de auditoria e governança do uso de Inteligência Artificial generativa em órgãos públicos.\n\n---\n\n## O Problema\n\nServidores públicos usam IAs generativas (ChatGPT, Claude, Gemini, Copilot) no dia a dia sem controle institucional. Com isso, dados protegidos por lei podem sair do órgão sem registro: CPFs de cidadãos, credenciais de sistemas, prontuários médicos, contratos sigilosos, senhas e tokens de API.\n\nO GovCert resolve isso capturando, registrando e classificando automaticamente cada interação com IA generativa, identificando riscos de vazamento e exibindo evidências de auditoria no painel — com dados sensíveis **sempre mascarados** na interface.\n\n---\n\n## Como funciona\n\n```\nNavegador do Usuário\n  └─ Extensão Chrome (MV3)\n       ├─ content.js captura input/output no DOM\n       └─ background.js envia POST /api/audit/logs\n              │  Authorization: Bearer {token}\n              ▼\nDocker / Backend Laravel 12\n  ├─ Nginx :8000\n  ├─ PHP-FPM / Laravel 12\n  ├─ MySQL 8.0\n  └─ Redis 7\n              │  dispatch ProcessAuditLog → fila gemini\n              ▼\nWorker\n  └─ AiProviderManager → GeminiClient / OpenAiCompatibleClient\n       └─ Classifica risco, identifica tipo de vazamento, conta tokens\n```\n\nO painel exibe tudo mascarado. O texto original fica no banco como evidência forense — **nenhum auditor ou administrador consegue revelar o conteúdo sensível pela interface**.\n\n---\n\n## Funcionalidades\n\n| Funcionalidade | Descrição |\n|---|---|\n| Captura automática | Extensão detecta e registra prompts/respostas nas plataformas monitoradas |\n| Ingestão assíncrona | API retorna HTTP 202 imediatamente; análise ocorre em fila |\n| Análise de risco com IA | Worker classifica risco, tipo de vazamento e justificativa |\n| Mascaramento obrigatório | CPF, CNPJ, e-mail, telefone, senha, token, JWT, API key — sempre ocultos na interface |\n| Visão Geral | KPIs, gráficos de volume, distribuição de risco, tokens por dia |\n| Auditoria | Listagem de logs com filtros, exportação CSV/PDF, detalhe mascarado |\n| Tokens | Ranking de usuários com heatmap de consumo e quantidade de logs |\n| Alertas de tokens | Limites configuráveis por usuário e período |\n| Gestão de usuários | Admin cadastra usuários (3 perfis), envia link de criação de senha |\n| Configurações do GovCert | Troca de provedor de IA, teste de API, desconexão global de usuários |\n| ActivityLog | Trilha completa de ações administrativas |\n\n---\n\n## Stack\n\n| Camada | Tecnologia |\n|---|---|\n| Backend | PHP 8.2, Laravel 12 |\n| Autenticação API | Laravel Sanctum |\n| Banco | MySQL 8.0 |\n| Fila/Cache | Redis 7 |\n| Frontend web | Blade, Vite, Tailwind CSS |\n| Extensão | Chrome Manifest V3, JavaScript vanilla |\n| PDF | barryvdh/laravel-dompdf |\n| Testes | PHPUnit 11.5 |\n| Containers | Docker Compose, Nginx, PHP-FPM |\n| IA | Gemini (padrão), Grok, DeepSeek, OpenAI-compatível |\n\n---\n\n## Rodando localmente\n\n\u003e Pré-requisito: Docker e Docker Compose. PHP, Composer e Node **não** precisam estar instalados localmente.\n\n```bash\n# 1. Copiar ambiente\ncp src/.env.example src/.env\n# Edite src/.env e preencha GEMINI_API_KEY (opcional — pode configurar pelo painel depois)\n\n# 2. Build da imagem PHP\ndocker compose build app\n\n# 3. Subir containers\ndocker compose up -d\n# Com phpMyAdmin :8080 e Mailpit :8025:\n# docker compose --profile dev up -d\n\n# 4. Instalar dependências PHP\ndocker compose exec app composer install\n\n# 5. Gerar chave da aplicação\ndocker compose exec app php artisan key:generate --force\n\n# 6. Rodar migrations\ndocker compose exec app php artisan migrate --force\n\n# 7. Popular dados de desenvolvimento\ndocker compose exec app php artisan db:seed --force\n\n# 8. Corrigir permissões de storage\ndocker compose exec app chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache\ndocker compose exec app chmod -R 775 /var/www/storage /var/www/bootstrap/cache\n\n# 9. Acessar\nopen http://localhost:8000\n```\n\n---\n\n## Usuários de desenvolvimento\n\nApós `db:seed --force`:\n\n| Perfil | E-mail | Senha | Acesso |\n|---|---|---|---|\n| Administrador | `admin@govcert.gov.br` | `admin123` | Painel completo |\n| Chefe de Segurança | `chefe@govcert.gov.br` | `admin123` | Painel completo |\n| Auditor | `auditor@govcert.gov.br` | `auditor123` | Painel (sem admin) |\n| Usuário da extensão | `maria.silva@govcert.gov.br` | `usuario123` | Somente extensão/API |\n| Usuário inativo | `bloqueado@govcert.gov.br` | `usuario123` | Bloqueado na API |\n\n\u003e **Perfil `usuario`**: não acessa o painel web. É destinado exclusivamente ao login na extensão Chrome e ao envio de logs via API.\n\n---\n\n## Perfis de acesso\n\n| Recurso | Admin | Auditor | Usuário |\n|---|---|---|---|\n| Visão Geral | ✓ | ✓ | ✗ |\n| Auditoria | ✓ | ✓ | ✗ |\n| Tokens | ✓ | ✓ | ✗ |\n| Gestão de Usuários | ✓ | ✗ | ✗ |\n| Configurações do GovCert | ✓ | ✗ | ✗ |\n| Login na extensão / API | ✓ | ✓ | ✓ |\n\n---\n\n## Documentação\n\n\u003e Links no formato [[Obsidian]]. Para leitura direta, os arquivos estão em `docs/`.\n\n### Para novos desenvolvedores\n1. [[docs/00 - Visão Geral]]\n2. [[docs/01 - Como Rodar o Projeto]]\n3. [[docs/02 - Arquitetura]]\n4. [[docs/06 - Fluxos Principais]]\n5. [[docs/10 - Autenticação e Autorização]]\n6. [[docs/22 - Guia para Novos Desenvolvedores]]\n\n### Para operação\n1. [[RUNBOOK]]\n2. [[docs/05 - Configuração de Ambiente]]\n3. [[docs/18 - Build e Deploy]]\n4. [[docs/21 - Troubleshooting]]\n\n### Para segurança e auditoria\n1. [[docs/13 - Auditoria e Mascaramento de Dados]]\n2. [[docs/14 - Tokens e Alertas de Uso]]\n3. [[docs/15 - Configurações do GovCert]]\n4. [[docs/20 - Decisões Técnicas]]\n\n### Índice completo\n\n| Arquivo | Conteúdo |\n|---|---|\n| [[docs/00 - Visão Geral]] | O que é, problema, público, módulos, papéis |\n| [[docs/01 - Como Rodar o Projeto]] | Instalação local passo a passo |\n| [[docs/02 - Arquitetura]] | Camadas, diagrama, decisões técnicas |\n| [[docs/03 - Estrutura de Pastas]] | Árvore de diretórios comentada |\n| [[docs/04 - Tecnologias e Dependências]] | Stack detalhada com papel de cada tecnologia |\n| [[docs/05 - Configuração de Ambiente]] | Variáveis de ambiente |\n| [[docs/06 - Fluxos Principais]] | Captura, ingestão, análise, mascaramento, tokens |\n| [[docs/07 - Módulos e Componentes]] | Controllers, Services, Jobs, Models |\n| [[docs/08 - Banco de Dados]] | Schema, tabelas, relacionamentos |\n| [[docs/09 - APIs e Endpoints]] | Rotas web e API REST documentadas |\n| [[docs/10 - Autenticação e Autorização]] | Roles, Sanctum, sessões, permissões |\n| [[docs/11 - Interface Web]] | Telas, componentes, padrões visuais |\n| [[docs/12 - Extensão Chrome]] | MV3, content.js, background.js, login, limitações |\n| [[docs/13 - Auditoria e Mascaramento de Dados]] | Mascaramento obrigatório, dados detectados |\n| [[docs/14 - Tokens e Alertas de Uso]] | Contagem, ranking, heatmap, alertas |\n| [[docs/15 - Configurações do GovCert]] | Provedores de IA, teste de API, logout all |\n| [[docs/16 - Seeds e Dados de Teste]] | Usuários, perfis, senhas, distribuição de dados |\n| [[docs/17 - Testes]] | PHPUnit, como rodar, suítes disponíveis |\n| [[docs/18 - Build e Deploy]] | Docker, assets, deploy seguro |\n| [[docs/19 - Padrões de Código]] | Convenções, organização, ActivityLog |\n| [[docs/20 - Decisões Técnicas]] | Justificativas das escolhas arquiteturais |\n| [[docs/21 - Troubleshooting]] | Erros comuns e soluções |\n| [[docs/22 - Guia para Novos Desenvolvedores]] | Onde começar, primeira alteração |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiotomaza%2Fgovcert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaiotomaza%2Fgovcert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaiotomaza%2Fgovcert/lists"}