Objetos seguros: edição de informações em mensagem de erro¶
As mensagens de erro relacionadas a objetos seguros se comportam da seguinte forma:
- Antes da mudança:
As mensagens de erro relacionadas a objetos seguros mostram a mensagem completa.
- Após a mudança:
As mensagens de erro relacionadas a objetos seguros podem ser editadas.
A mudança se aplica a mensagens de erro relacionadas aos seguintes tipos de objetos:
Funções seguras (incluindo funções de tabela seguras)
Para obter mais informações sobre objetos seguros, consulte Uso dos objetos seguros para controlar o acesso aos dados.
Quando um erro é detectado durante a expansão ou avaliação de um objeto seguro, a mensagem de erro é considerada para edição. Quando uma mensagem de erro é editada, o código de erro permanece inalterado.
São possíveis dois tipos de mudanças nas mensagens de erro: edição durante a execução e edição nos metadados após a execução. Esses tipos de mudanças são descritos nas seções a seguir.
Edições durante a execução¶
Uma mensagem de erro inteira ou parte de uma mensagem de erro pode ser editada quando o erro é retornado durante uma operação. Em geral, esse tipo de edição de mensagem de erro ocorre quando um usuário tenta usar um objeto seguro sem ter o privilégio OWNERSHIP para o objeto seguro.
Edições em metadados após a execução¶
Os usuários podem visualizar os metadados sobre os erros depois que eles ocorrem, incluindo as mensagens de erro. Por exemplo, os usuários podem visualizar esses metadados na página Query History no Snowsight, ou consultando exibições e chamando funções no Snowflake Information Schema. Quando uma mensagem de erro é editada durante a execução, a mensagem de erro é sempre editada nos metadados após a execução para todos os usuários.
Quando uma mensagem de erro não é editada durante a execução, a mensagem aparece inalterada nos metadados para alguns usuários e é editada para outros usuários. A mensagem de erro não é alterada nos metadados em nenhum dos seguintes casos:
O usuário que visualiza os metadados tem o privilégio AUDIT.
O usuário que está visualizando os metadados tem o parâmetro de usuário ENABLE_UNREDACTED_SECURE_OBJECT_ERROR definido como
TRUE. Um usuário com o privilégio AUDIT pode definir esse parâmetro para um usuário.O usuário que visualiza os metadados executou a instrução que causou o erro.
Em todos os outros casos, a mensagem de erro é editada nos metadados. As mensagens de erro editadas incluem o texto: Error in secure object.
Exemplos de edição de mensagens de erro¶
Os exemplos a seguir mostram mensagens de erro que foram editadas. A edição pode ocorrer durante a execução ou nos metadados após a execução.
Exemplo 1: consulta de uma exibição segura¶
No exemplo a seguir, um usuário com o privilégio SELECT em uma exibição segura executa uma consulta na exibição que retorna um erro.
Crie a exibição segura:
Descarte a tabela usada na consulta da exibição:
Execute uma consulta na exibição:
Mensagem de erro exibida para todos os usuários antes da mudança¶
Mensagem de erro editada e exibida para alguns usuários após a mudança¶
Exemplo 2: execução de uma consulta que chama uma função segura¶
Nos exemplos a seguir, um usuário com o privilégio USAGE em uma função segura executa uma consulta que chama a função segura, mas a função segura retorna um erro.
Exemplo 2a: os argumentos da função resultam em um erro¶
Crie a função segura:
Execute uma consulta que chama a função segura:
Mensagem de erro exibida para todos os usuários antes da mudança¶
Mensagem de erro editada e exibida para alguns usuários após a mudança¶
Exemplo 2b: um objeto do qual a função depende é excluído¶
Crie a função segura:
Descarte a tabela usada na função:
Execute uma consulta que chama a função segura:
Mensagem de erro exibida para todos os usuários antes da mudança¶
Mensagem de erro editada e exibida para alguns usuários após a mudança¶
Exemplo 3: uma política de mascaramento retorna um erro¶
No exemplo a seguir, um usuário executa uma consulta em uma exibição com uma política de mascaramento que encontra um erro.
Crie uma política de mascaramento:
Crie uma exibição e defina a política de mascaramento em uma coluna da exibição:
Descarte a tabela usada na política de mascaramento:
Execute uma consulta na exibição como um usuário que não tem privilégios de propriedade para a política de mascaramento:
Mensagem de erro exibida para todos os usuários antes da mudança¶
Mensagem de erro editada e exibida para alguns usuários após a mudança¶
Exemplo 4: uma política de acesso a linhas retorna um erro¶
No exemplo a seguir, um usuário executa uma consulta em uma exibição com uma política de acesso a linhas e encontra um erro.
Crie uma política de acesso a linhas:
Crie uma exibição e adicione a política de acesso a linhas na exibição:
Descarte a tabela usada na política de acesso a linhas:
Consulte a exibição como um usuário que não tem privilégios OWNERSHIP para a política de acesso a linhas:
Mensagem de erro exibida para todos os usuários antes da mudança¶
Mensagem de erro editada e exibida para alguns usuários após a mudança¶
Ref: 1858