Entenda de vez a diferença entre table.--none-- e table.* no ServiceNow
Se você já trabalhou com ACLs no ServiceNow, provavelmente já se deparou com duas opções que parecem muito semelhantes:
table.--none--table.*
E, assim como muita gente, deve ter se perguntado:
“Isso não é a mesma coisa?”
A resposta é simples: não, não é — e entender essa diferença é fundamental para evitar problemas de segurança e acesso no sistema.
Por que essa dúvida acontece?
Visualmente, as duas opções parecem indicar algo “genérico” na tabela. Porém, na prática, elas atuam em níveis completamente diferentes dentro das ACLs.
Como o próprio material destaca:
Apesar de parecer… não são iguais, não fazem a mesma coisa e não têm o mesmo impacto
🔐 table.--none--: controle no nível do registro
Quando você utiliza table.--none--, está definindo uma ACL que atua no nível do registro (linha).
O que isso significa?
- Controla o acesso ao registro inteiro
- Se negar acesso → o usuário nem consegue visualizar o registro
- É a camada mais crítica de segurança
📌 Exemplo prático:
Imagine uma tabela de chamados (incident):
- Se o usuário não passar na ACL
incident.--none--
👉 Ele não verá o chamado na lista
👉 Não conseguirá acessar o formulário
Isso confirma o ponto do material:
“ACL no nível do registro controla acesso à linha inteira”
👁️ table.*: controle no nível de campo
Já o table.* funciona de forma diferente: ele atua no nível de campo (field-level).
O que isso significa?
- Aplica a regra para todos os campos da tabela
- O usuário pode acessar o registro
- Mas pode ter campos ocultos ou restritos
📌 Exemplo prático:
O usuário abre um chamado normalmente, porém:
- Não consegue ver o campo “salário”
- Ou não consegue editar determinados campos
Isso acontece porque:
“Usuário acessa o registro, mas os campos podem ser filtrados”
🎯 A diferença-chave (resumo direto)
Aqui está o ponto mais importante que você precisa guardar:
| Tipo de ACL | O que controla | Impacto |
|---|---|---|
--none-- |
Acesso ao registro | Bloqueia completamente |
* |
Visibilidade dos campos | Restringe parcialmente |
Como reforçado no material:
--none--→ controla acesso ao registro*→ controla visibilidade dos campos
⚠️ Erros comuns que você deve evitar
Muitos desenvolvedores cometem erros clássicos ao não entender essa diferença:
❌ Usar table.* achando que está protegendo o registro
Resultado: o usuário ainda acessa dados sensíveis
❌ Ignorar --none--
Resultado: falha crítica de segurança (acesso indevido)
❌ Misturar regras sem estratégia
Resultado: comportamento inconsistente e difícil de debugar
🧠 Boas práticas recomendadas
Se você quer trabalhar de forma profissional com ServiceNow:
✔ Sempre comece pela ACL --none-- (base de segurança)
✔ Use * para refinar visibilidade de campos
✔ Pense em camadas de segurança (defense in depth)
✔ Teste com diferentes perfis de usuário
✔ Evite depender apenas de client-side (UI Policy / Client Script)
🚀 Conclusão
Entender a diferença entre table.--none-- e table.* não é apenas um detalhe técnico — é um conceito essencial de segurança e arquitetura no ServiceNow.
Enquanto um controla se o usuário pode acessar o registro, o outro define o que ele pode ver dentro dele.
Dominar isso te coloca em outro nível como desenvolvedor na plataforma.