Aplicar permissões de segurança em nível de campo para consultas SOQL (Beta)

Use a cláusula WITH SECURITY_ENFORCED para ativar a verificação de permissões de segurança de nível de campo ou de objeto em consultas SOQL SELECT, incluindo subconsultas e relacionamentos entre objetos. Embora a realização dessas verificações era possível em versões anteriores, essa cláusula reduz significativamente a verbosidade e a complexidade técnica em operações de consulta. Esse recurso é personalizado para desenvolvedores do Apex que possuem uma experiência de desenvolvimento mínima com segurança e para aplicações em que a degradação adequada em erros de permissões não é necessária.
Nota

Nota

Como um recurso beta, o SELECT WITH SECURITY_ENFORCED é uma amostra e não faz parte dos "Serviços" estipulados no seu contrato de assinatura mestre com a Salesforce. Use esse recurso a seu exclusivo critério e tome suas decisões de compra com base apenas nos produtos e recursos disponíveis ao público em geral. A Salesforce não garante a disponibilidade geral desse recurso em nenhum período ou data e ele poderá ser descontinuado a qualquer momento. Esse recurso é somente para fins de avaliação, não para uso em produção. É oferecido no estado em que se encontra, não recebe suporte, e a Salesforce não é responsável por qualquer dano ou prejuízo resultante ou relacionado a ele. Todas as restrições, reservas de direitos da Salesforce, obrigações relacionadas aos Serviços e termos relativos a aplicativos e conteúdos não originários da Salesforce aplicam-se igualmente ao seu uso desse recurso.

Onde: Essa alteração se aplica ao Lightning Experience e ao Salesforce Classic nas edições Enterprise, Performance, Unlimited e Developer.

Como: Se os campos ou objetos referenciados na cláusula SELECT usando WITH SECURITY_ENFORCED estiverem inacessíveis ao usuário, uma exceção será lançada e nenhum dado será retornado.

Nota

Nota

A cláusula WITH SECURITY_ENFORCED está disponível apenas no Apex. Não é recomendado usar WITH SECURITY_ENFORCED em classes ou acionadores do Apex com uma versão de API anterior a 45.0.

Exemplo

Se a segurança em nível de campo para o campo LastName ou Description estiver oculta, essa consulta lançará uma exceção indicando permissões insuficientes.
SELECT Id, (SELECT LastName FROM Contacts), 
   (SELECT Description FROM Opportunities)
   FROM Account WITH SECURITY_ENFORCED

Exemplo

Se a segurança em nível de campo para Website estiver oculta, essa consulta lançará uma exceção indicando permissões insuficientes.
SELECT Id, Parent.Name, Parent.Website FROM Account WITH SECURITY_ENFORCED