# Plataforma de referência → DSPM SecOps local

Assessment visual e funcional realizado na plataforma de referência disponível em 13 de agosto de 2026.

## Critério de validação

- **Covered**: tela e principais controles usam as APIs e os dados sintéticos do ambiente local.
- **Local simulation**: a interface e as opções foram reproduzidas para testes, com persistência local, sem executar operações externas na conta de referência.
- Os dados exibidos no clone são exclusivamente sintéticos. Nenhum registro sensível da plataforma de referência foi copiado.

## Dashboards

| Referência | Caminho | Local | Opções verificadas | Estado |
|---|---|---|---|---|
| SecOps | `/dashboards/sec-ops` | `#dash-secops` | Accounts, Export, data refresh, Sensitive Records at High Risk, histórico 1M/3M/6M, Open Issues, Top Identities, Issue Trends, Top Issues, Top Datastores, Top Data Classes e filtros por widget | Covered |
| Data & Assets | `/dashboards/data` | `#dash-data` | Accounts, Export, Total Datastores, Data Classes, Datastore Trends, Infrastructure Breakdown (Datastores/Records/Sensitive Records), Scan Coverage, Current Scan Status, Monitored Datastores, Sensitivity Distribution e Monitored Volume | Covered |

## Triage e Discovery

| Referência | Caminho | Local | Opções verificadas | Estado |
|---|---|---|---|---|
| Issues | `/issues?grouping=policy` | `#issues` | New/Reopened/Stale/Closed, Group by Policy/Datastore/Account/None, AI Filters, Issue Status, Use Case, Policy, Severity, Data Class, Datastore, Account, Identity, Topics, busca, ordenação, Columns, Export CSV e detalhe do issue | Covered |
| Datastores | `/datastores` | `#datastores` | Search, Filters, Sort by Data Sensitivity, Columns, Export CSV, Cloud Provider, Infrastructure, Account, Scan Status, Data Class, Identity Name, Trust Level, Topics, Sensitivity, File Type e paginação | Covered |
| Data — Classifications | `/data-explorer` | `#data` | PII, PCI, Customer Data, Credentials, Restricted Data, Classifications/Topics, Category, Is Identifiable, Data Subject Role, Frameworks, Account, Identity, Trust, Identity Type, Topics, busca, ordenação, Columns e CSV | Covered |
| Data — Topics | `/data-explorer/topics` | `#data` | All/Built-in/Custom, Datastores, Objects at Risk, Records at Risk, Total Objects, Total Records, Issues, busca, ordenação, Columns e CSV | Covered |
| Identities | `/identities` | `#identities` | External Identities, Unsanctioned Applications, MFA Disabled, Stale Identities, Copilot Enabled, busca, filtros por identidade/dados/datastore/issue/objeto, ordenação, Columns, Tree View e CSV | Covered |
| Activities | `/activities` | `#activities` | Limited history, Sensitive Deletions, External Movements, Permission Changes, Org-Wide Sharing, Sensitivity Label Changed, data refresh, time range, gráfico, filtros por activity/datastore/actor/object, Columns e Export | Covered |

## Management

| Referência | Caminho | Local | Opções verificadas | Estado |
|---|---|---|---|---|
| Issue Policies | `/policies` | `#policies` | Explore, All Policies, Browse by Use Case/Severity/Framework, oito use cases, catálogo de 31 frameworks, Data Security Policy e Sensitivity Label Policy | Covered |
| Reports | `/reports` | `#reports` | Search, Report Type/Status/Added By/Source, Sort, Columns, Export CSV e 13 tipos de relatório com filtros, projeto, tamanho, frequência e notificações | Covered |
| Compliance | `/compliance` | `#compliance` | Active/Hidden, postura, controles aprovados, violações, detalhe de framework, agrupamento, filtros e exportação | Covered |
| Accounts | `/accounts` | `#accounts` | KPIs, Search, Cloud Provider, Added By, Account Status, Deployment, Status Reason, Health Alerts, Data Center, Sort, Columns, CSV e ações | Covered |
| Deployments | `/deployments` | `#deployments` | Cloud, On-prem Networks, On-prem Assets, Outpost Leader, DLP Providers, Search, status/health/provider filters, Columns, CSV e catálogo de configuração | Covered |

### Catálogo de Deployments

- Cloud: AWS, Azure, GCP, Microsoft 365, Salesforce, Snowflake, Databricks, MongoDB Atlas, Box, Google Workspace, Microsoft Copilot Studio, Atlassian, ServiceNow ITSM, Oracle Cloud, CockroachDB, YugabyteDB Anywhere, Jira, Confluence e Airtable.
- On-prem Networks: On-prem Network.
- On-prem Assets: Oracle DB, SQL Server, MySQL, MongoDB, NetApp, SMB, Dell PowerScale, Active Directory, DB2 IBM i, NFS e DB2 IBM Z.
- DLP Providers: Netskope.

### Tipos de Reports

Issues Status; Issues and Affected Data; Files Accessible by Identities – M365; List of Identities; Data Retention by Datastore – Overview; Data Retention by Datastore – Files; List of Datastores; License Usage By Datastores; License Usage; Event Log; Activities – Detailed; Activities – By Datastore; Activities – By Object.

## Settings & Operations

| Grupo | Referência | Local | Opções verificadas | Estado |
|---|---|---|---|---|
| Workflow | Automations | `#settings-automations` | Busca, filtros, criação, políticas, gatilhos, ações, status e execução | Local simulation |
| Workflow | Action Templates | `#settings-action-templates` | Busca, filtros, integração, ação, projeto e criação | Local simulation |
| Workflow | Integrations | `#settings-integrations` | Catalog/Installed, Category, Availability, Built By, Status, instalação e catálogo nativo/partner | Local simulation |
| System Monitoring | Licensing | `#settings-licensing` | DSPM Volume, DSPM Seats, dispositivos do Endpoint Protection, com uso e cota; Omni DLP e DSR têm atalho para a página; DataWatcher é serviço, fora do software | Real backend |
| System Monitoring | License Notifications | `#settings-license-notifications` | Thresholds 50/75/85/90/95/100/125/150, recipients, CC e salvar | Local simulation |
| System Monitoring | Event Log | `#settings-event-log` | Período, Datastore, Account, Event Type, User, Event Source, busca e CSV | Covered |
| System Monitoring | System Health | `#settings-system-health` | Status, Name, Alert Type, Priority, Source Type, Account, Deployment, busca e CSV | Covered |
| Configuration | General Settings | `#settings-general` | Remediation Center, OTP/SSO, status, approval, justification, Tags & Labels e Actions | Local simulation |
| Configuration | Trust Settings | `#settings-trust` | Domains, Identities, Trust level, Added by, busca, inclusão e CSV | Local simulation |
| Configuration | Data Customization | `#settings-data` | Topics, descrição, mapping, modified, author, busca, inclusão e CSV | Local simulation |
| Configuration | Projects | `#settings-projects` | Busca, assigned users/groups, datastore scope e inclusão | Local simulation |
| My Account | Personal Tokens | `#settings-personal-tokens` | Busca, descrição, expiração, geração e segredo exibido uma vez | Local simulation |
| Administration | Users | `#settings-users` | Nome, e-mail, roles, status e convite | Local simulation |
| Administration | SSO | `#settings-sso` | Domains, IDP, roles e configuração | Local simulation |
| Administration | SCIM | `#settings-scim` | Name, provider, status, users e conexão | Local simulation |
| Administration | Developer Tools | `#settings-dev-tools` | Endpoints, Event Catalog, Logs, Activity e criação de endpoint | Local simulation |
| Administration | API Tokens | `#settings-api-tokens` | Descrição, roles, expiração, geração e segredo exibido uma vez | Local simulation |

## Revisão de 1 de novembro de 2026

Comparação feita somente por leitura: estrutura de telas e rotas presentes nos bundles, sem levar dados do tenant para o projeto. Textos e dados locais são próprios ou sintéticos.

| Referência | Caminho | Local | Estado | Base |
|---|---|---|---|---|
| AI Security | `/dashboards/ai-security` | `#dash-ai` | Covered | Observado: KPI de AI Assets e seção Runtime Protection. Inferido: os demais widgets, que não renderizaram na referência |
| Ask Cy | `/ask-cy` | `#ask` (Assistente) | Covered | Observado: campo de pergunta, categorias e perguntas salvas. Inferido: respostas, porque nenhuma pergunta foi enviada à referência |
| AI Assets | `/ai-assets` | `#ai-assets` | Covered | Observado: abas, gráficos, colunas e filtros |
| Scan Pause Rules | `/settings/scan-windows` | `#settings-scan-pause` | Covered | Observado: tela vazia, colunas e texto explicativo. Inferido: formulário. Reordenação local por botões, não por arrastar |
| Scan Readiness e Blockers | `/datastores`, `/accounts`, `/deployments` | mesmas telas | Covered | Observado: colunas e filtros. Inferido: regras que definem cada bloqueio |
| Sensitive Objects e Business Associations | `/identities` | `#identities` | Covered | Observado: colunas. Inferido: cálculo |
| Access Trail e Agent Activity | `/activities` | `#activities` | Covered | Observado: abas e colunas. Inferido: critério de agente |
| General Settings → Ask Cy | `/settings/general-settings/ask-cy` | `#settings-general` → Assistente | Covered | Observado: Everyone, Admins only, No one |

Não reproduzido nesta revisão:

- `/dlp/*` e `/settings/scan-center` aparecem nos bundles, mas retornam "Page not found" neste tenant.
- `/dashboards/custom/widget-builder` redireciona para o dashboard SecOps neste tenant.
- `/settings/general-settings/quarantine-datastores` abre sem conteúdo.
- `/issues/objects` redireciona para `/issues`.
- Algumas rotas de Settings foram ocultadas pelo filtro da extensão durante a leitura dos bundles.

### Segunda passada: aparência e controles

- **Aparência:** barra superior fixa, menu lateral, tipografia, tabelas e medidas alinhadas às observadas na referência, com código próprio. Logo, nome, ícones, fontes e textos da referência não são usados.
- **Controles:** Filters, Columns e Sort passam a funcionar. Filtros de Datastores, Identities e Activities agem no backend.
- **Seletor de projeto:** vale para Datastores, Issues, Identities e Activities. Dashboards e demais telas continuam sem esse recorte.
- **Telas de Settings marcadas como "Local simulation":** continuam simuladas, sem integração externa real.

### Terceira passada: layout tela a tela

Medidas de posição e rótulos lidos da referência, sem levar dados do tenant para o projeto.

- **SecOps e Data & Assets:** grade de três colunas com a mesma distribuição de widgets. Filtros por widget em Data & Assets (Infrastructure, Region, Project) agem no backend.
- **Issues:** faixa de contadores, Group by, resumo, Save Filter, Find, AI Filters e tabela agrupada que expande. Status padrão "Open, In Progress". O primeiro grupo abre expandido, escolha local.
- **Data:** cartões de categoria, abas, colunas Data Class, Context, Sensitivity, Total Records e Issues. All, Built-in e Custom funcionam em Topics.
- **Compliance:** cartões com anel de postura e ordenação por Posture Score ou nome.
- **Filtros:** viraram chips com menu pesquisável em todas as listas que usam a barra Find.
- **Top Data Classes:** ocupa duas colunas. Na referência a terceira coluna dessa linha não mostrou conteúdo.

### Quarta passada: funções reais no lugar de simulações

| Área | Estado | Observação |
|---|---|---|
| Users | Real | Convite por link de uso único (o sistema não envia e-mail), papéis admin, analyst e viewer, desativação imediata, proteção do último admin |
| Personal e API Tokens | Real | Prefixo `dspm_`, só o hash fica no banco, expiração e revogação |
| SCIM 2.0 | Real | Descoberta por `/Schemas` e `/ResourceTypes`. Usuários e grupos por CRUD e PATCH. O provedor só altera contas que ele criou. Um grupo concede analyst ou viewer, nunca admin; mudança de grupo recalcula o papel dos membros e sobrescreve um ajuste manual entre analyst e viewer |
| SSO | OIDC e SAML 2.0 reais | OIDC: Authorization Code com PKCE. SAML: pedidos assinados, assertion assinada obrigatória e opcionalmente criptografada, logout único nos dois sentidos, vários certificados por conexão. O login pelo portal do provedor reinicia como pedido daqui, sem confiar na assertion recebida. SHA-1 só com opção ligada na conexão; rsa-1_5 não é aceito. Ambos testados só com provedor simulado, nunca com um provedor de verdade |
| Integrations | 30 conectores | Todos enviam ou leem de fato, mas só foram testados com chamadas simuladas. A tela mostra o nível de cada um. Contrato lido na documentação do fornecedor: BlinkOps, Torq, Collibra. A confirmar (fontes de terceiros ou conhecimento prévio): Okta, Delinea, Saviynt, Alation, Atlan, AWS Security Hub, Cribl, Elastic, SentinelOne, Wiz, Upwind, Cato, Axonius, Guardicore, ServiceNow CMDB. Endpoint genérico, sem contrato público localizado: Clutch, Oasis, Anecdotes, Breeze, Island, Secoda |
| Action Templates, Automations | Real | Template envia pela integração; automações `auto` rodam nos issues novos de um scan real |
| Webhooks | Real | HMAC-SHA256, 3 tentativas, log de entregas. Eventos: issue.created, issue.updated, report.completed |
| Projetos | Real | Seletor filtra todas as leituras; tendências históricas (`trends`) não têm projeto e não mudam |
| Filtros | Real | Chips aceitam vários valores |
| Topics | Real | Objects at Risk, Total Objects e Total Records vêm do banco |
| Scan Center, Custom Dashboards | Inferido | Telas próprias: o tenant de referência não as abre. O Scan Center atualiza o catálogo local; scan de fonte real segue em Data Sources |
| Trust Settings, Data Customization | Real | CRUD no servidor, só admin altera. Tópicos aparecem em Data → Topics. A contagem de identidades procura `@domínio` no nome; a lista de confiança ainda não muda o nível das identidades |
| General Settings, License Notifications | Salvo, sem efeito | Abas Data, Remediation Center, Tags & Labels, Actions, assistente e notificações ficam no servidor, mas só o assistente age. Esta cópia não tem centro de remediação externo, ligação issue-ticket, amostras ocultáveis nem envio de e-mail, e a tela diz isso |
| Licensing | Real | Contagens lidas do banco. Sem contrato local, não há cota nem percentual |
| Reports | Real | Run, Duplicate, Edit schedule, Delete e download dos dados de verdade. Agendamento fica registrado, sem executor periódico |
| Accounts, Deployments | Real | Colunas da referência, medidas em 2 de novembro de 2026. O menu de linha, que a referência não tem, foi removido |

Saída de rede passa por `backend/egress.py`, que bloqueia endereços internos salvo com `DSPM_ALLOW_PRIVATE_EGRESS=1`. A conexão fica presa ao endereço validado, e as respostas têm limite de 10 MB e 30 segundos. `ai.py` e `discovery.py` também passam por aí; o Ollama pode usar `localhost:11434`, e qualquer outro alvo interno exige a variável. Drivers de banco em `discovery.py` não usam HTTP e ficam fora dessa proteção. Colunas de Identities e Users seguem a referência medida nesta passada.

## Extensões locais preservadas

Remediation, Omni DLP, Endpoint Protection, Agent Guardian, Privacy/DSR, Connectivity Overview, Data Sources, AI Providers e Audit Log não aparecem no menu principal da plataforma de referência avaliada. Foram preservados sob **Settings & Operations → Local Extensions**, sem misturá-los com o catálogo espelhado.

## Avaliação comparativa de 2026-11-02

Leitura estrutural do site (rótulos de colunas e filtros, sem dados do tenant), comparada com a interface local.

| Tela | Resultado |
|---|---|
| Issues, Identities, dashboards SecOps e Data & Assets | todos os rótulos lidos existem aqui |
| Datastores | faltavam Asset Name e Model; adicionados, com vínculo sintético em `ai_asset_stores` |
| Activities | faltavam Object Path e Delegated AI Agent; adicionados |
| Compliance | 9 dos 33 nomes de framework do site foram lidos; aqui existem 24, mapeamento inferido e não certificado |

Não comparado: títulos dos widgets dos dashboards, que não puderam ser lidos pela estrutura da página.

Delegated AI Agent filtra eventos cujo ator é um agente. O sistema não registra a cadeia de delegação (quem pediu ao agente).

## Situação dos conectores em 2026-11-02

Rodaram de verdade, contra arquivos e banco locais sintéticos: FileShare e SQLite. Todos os outros só foram testados com rede ou SDK simulados, seguindo a documentação de cada fornecedor, porque não há credenciais: o contrato real ainda pode divergir. Cada scan mostra as recusas em Data Sources > Coverage.

| Antes | Agora |
|---|---|
| RDS só metadados | lê as linhas com `rds_logins`, o segredo gerenciado (opcional) ou IAM; precisa de rota de rede até a instância |
| Sem Teams e BigQuery | canais, respostas e chats do Teams; tabelas do BigQuery. Teams exige aprovação da Microsoft para APIs protegidas |
| Catálogo sem conector | as 33 entradas apontam para um conector. Novos: Jira, Confluence, Atlassian, ServiceNow, Box, Airtable, Databricks, Google Workspace, Copilot Studio, Netskope, DB2 i e z. NetApp e PowerScale via SMB; NFS via caminho montado; CockroachDB e YugabyteDB via PostgreSQL; Outpost Leader é este servidor varrendo a rede |
| DSR só em trechos | "Buscar nas fontes" relê tudo que está conectado e guarda só os caminhos |
| Sem escrita de rótulos | M365 pelo Graph (API tarifada); Office e PDF em diretório, no próprio arquivo; S3 como tag, que outras ferramentas não leem como rótulo. Exige opção na conexão e papel admin |
| Retenção por detecção | usa a data de modificação na fonte; linhas de banco e dados sintéticos não têm essa data e o relatório indica |
| Event Log de issues | issues, acessos e scans |
| Relatório para qualquer endereço | só contas locais e domínios autorizados em General Settings > E-mail; revalidado na entrega |
| Alcance limitado pela credencial | continua assim, por natureza: nada lê além do concedido. Coverage lista o acesso necessário e o que foi recusado |

Limites que permanecem: DB2 for i e z exigem licença da IBM; Cosmos DB aparece só como inventário.

## Rodada de lacunas de 2026-11-02

Títulos conferidos com o site: os 17 widgets de SecOps e Data & Assets têm o mesmo título. Rotas de Settings lidas no menu do site: todas existem aqui.

Rotas presentes nos bundles do site, mas com "Page not found" ou 404 neste tenant, e por isso não observadas nem construídas: `/access-graph`, `/alerts`, `/investigations`, `/risk/initiatives`, `/vendors`, `/settings/notifications`, `/analytics/policies`, `/settings/grant-dlp-access`, `/dlp/agents-management`, `/dlp/memories`, `/dlp/destinations`, `/risk/issues/data-objects`. A lista de rotas dos bundles veio truncada depois de `/vendors`, então pode haver outras.

| Item | Situação | Origem do comportamento |
|---|---|---|
| DSR na fonte | Plano, confirmação digitada, execução e releitura. Texto: troca o identificador. Outros formatos: apaga o arquivo inteiro, ou fica à mão. Tabela SQL: apaga a linha ou corrige o valor; menção em texto é mascarada. Exige `allow_source_write` | Decisão própria |
| Várias contas | AWS `role_arns` e `organization_role`; GCP `project_ids` e `all_projects`; Azure `connection_strings` e provider Azure por service principal; Azure Files, Tables e SQL | Decisão própria |
| Rótulos | SMB e SFTP com as propriedades de Office e PDF; banco no comentário da tabela, propriedade estendida no SQL Server, tabela `_dspm_labels` no SQLite | Decisão própria |
| Requested By | Coluna, filtro e `POST /api/activities/ingest`. Activities não tem conector ao vivo: fontes reais entram só por essa rota | Decisão própria |
| Tendências por projeto | `project_trends`. Issues reconstruídos pelas datas; datastores, volume e risco só a partir do primeiro snapshot | Decisão própria |
| Quarantine Datastores | O site abre a página quase vazia | **Inferido**: o scan ignora o datastore até a liberação |
| `/issues/objects` | O site redireciona para `/issues` | **Inferido**: objetos em datastores com issue aberto |
| Endpoint fora da extensão | Script AppLocker, perfil Intune e pacote de rede gerados | Decisão própria; nunca aplicados numa máquina |
| Extensão 1.1.0 | sendBeacon, Web Worker só em modo bloqueio, base64 em JSON, OCR de imagem em página com texto, e observação depois do envio | Decisão própria |
| Data Watch | Regras, casos, prazo, resumo semanal. Os analistas do DataWatcher não têm equivalente | Parte automatizável |

Exigir `allow_source_write` e a confirmação digitada são travas deste sistema: destruir dados não pode depender de um clique.

## Políticas por framework (2026-11-02)

- Issue Policies mostrava números fixos no código, e 16 dos 24 frameworks não tinham política mapeada. Agora a contagem vem do mapeamento real: 65 políticas, 32 frameworks (novos: APP, CIS, COPPA, CSA STAR, PHIPA, PIPEDA, Quebec Law 25, SOCI).
- Inferido: a ligação política-controle é própria. A lista de políticas da referência não foi copiada.
- Sem sinal hoje: backup (Resilience cobre só visibilidade de varredura) e idade do titular (COPPA e LGPD Art. 14 não identificam dado de criança).

## Comparação com a VPS (2026-11-02, segunda rodada)

| Item | Situação | Origem do comportamento |
|---|---|---|
| Atividades do Microsoft 365 | `backend/m365_activity.py` lê a Office 365 Management Activity API (SharePoint, Exchange, Entra ID, General) a cada 15 min, 7 dias de histórico, sem IP do cliente; a tela mostra estado e "Read now". Exige ActivityFeed.Read com consentimento de administrador | Contrato público da Microsoft; testado só com rede simulada |
| Políticas | 125 (referência ~115): família de dado de contato, caso de uso Data Retention, combinações de exposição, criptografia, IA, resiliência e cópias não gerenciadas | Texto e condições próprios |
| Backup | 6 políticas novas com o sinal `backup`: só avaliam com fonte AWS (S3 versionamento e log; RDS backup, PITR, proteção contra exclusão, Multi-AZ). Sem o dado, ficam "Not evaluated" | Decisão própria |
| FERPA e HITRUST CSF v11.7.0 | 34 frameworks | Citações públicas, mapeamento próprio |
| LGPD | Este sistema liga mais políticas à LGPD que a referência (62 × 29). Mantido: é leitura própria, não certificação | Decisão própria |
| Integrações | 68 no catálogo (38 novas). Zapier, Tines, Swimlane, CrowdStrike Next-Gen SIEM e SailPoint com contrato conhecido; as outras 33 são genéricas (URL + cabeçalho) por falta de contrato público. Nenhuma testada contra o serviço real | `evidence` em cada conector |
| Telas | Botão do assistente em todas as telas; colunas escolhíveis, redimensionáveis e arrastáveis (`table_columns.js`, por navegador); Datastores com Data Sensitivity, Health Alerts e Last Successful Scan; filtros e colunas em AI Assets, Accounts, Event Log, Data Customization (Mapping Env), Projects, System Health, Automations e Action Templates | Estrutura observada; conteúdo próprio |
| Action Templates "Project" | Não implementado: template não pertence a projeto neste sistema | Lacuna conhecida |
