ACLs de consulta

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 2 min. de leitura
  • As ACLs de consulta permitem que você defina um controle de acesso mais granular, definindo explicitamente quem pode consultar os dados.

    O que é uma ACL de consulta

    As ACLs de consulta têm sua operação definida como query_range ou query_match. As ACLs de consulta permitem um controle mais específico das consultas do usuário, restringindo ou habilitando o acesso com base na configuração. As ACLs de consulta são ferramentas poderosas contra ataques de consulta ocultos, em que um invasor consulta os dados de maneira oculta para extrair informações dos resultados, mesmo quando não consegue ver os valores.

    Quando usar uma ACL de consulta

    Sempre que uma coluna tiver valores confidenciais e permitir acesso parcial/condicional aos dados, uma ACL de consulta deve ser considerada e implementada conforme necessário com base na confidencialidade dos dados. Sempre que houver um acesso parcial/condicional às linhas e suas colunas nas tabelas, principalmente quando esse acesso não for imposto por filtros de dados, as ACLs de consulta devem ser implementadas conforme necessário com base na confidencialidade dos dados.

    Nota:
    Considere ACLs de consulta quando alguns usuários tiverem acesso a algumas linhas ou colunas e não a outras.

    Controle de consulta de folha de pagamento

    Posso ver uma linha na tabela de folha de pagamento com o meu salário, mas não há motivo para eu poder emitir consultas de intervalo para consultar usuários com um salário dentro de 2 limites. Uma ACL query_range no salário me impediria de emitir essa consulta.

    Controle de consulta de RH

    Posso ver todos os hr_profiles, mas só posso ver o SSN por conta própria. Não tenho nenhum negócio consultando SSN e as ACLs de consulta devem me impedir de executar consultas em SSN de outros perfis de RH para tentar extrair mapeamentos de SSN.

    Comportamento das ACLs de consulta

    As ACLs de consulta usam as operações query_match e query_range para um comportamento de consulta de tabela seguro e granular. Os comportamentos são descritos abaixo:
    query_match

    query_match é composto por: EQUAL, NOT_EQUALS, IN, NOT_IN, SAMEAS, NSAMEAS, ANYTHING, ISEMPTYSTRING, ISEMPTY, ISNOTEMPTY, ISNULL, ISNOTNULL. query_match é composto pelos "operadores seguros", no sentido de que são criados para buscar registros específicos e não podem ser explorados para retornar outros.

    Resultado da avaliação Resultado
    Aprovado O usuário pode enviar consultas de correspondência
    Falha O usuário não poderá enviar consultas de correspondência:
    • EQUALS
    • NOT_EQUALS
    • IN
    • NOT_IN
    • SAMEAS
    • NSAMEAS
    • ANYTHING
    • ISEMPTYSTRING
    • ISEMPTY
    • ISNOTEMPTY
    • ISNULL
    • ISNOTNULL
    query_range

    query_range é composto por todos os outros (STARTS_WITH, CONTAINS, >=, <= etc), que são mais perigosos, pois permitem que os usuários consultem mais registros ajustando os valores de limite.

    Resultado da avaliação Resultado
    Aprovado O usuário pode enviar consultas de intervalo e a classificação é irrestrita
    Falha O usuário não poderá enviar consultas de intervalo com (STARTS_WITH, CONTAINS, >=, <= etc. A classificação por coluna é restrita
    Importante:

    As ACLs de consulta (query_match e query_range) têm como padrão uma ACL star.star que delega acesso de leitura. Isso significa que, onde as ACLs são aplicadas em consultas, se nenhuma ACL de consulta tiver sido criada, o acesso de leitura à coluna será avaliado; se as ACLs de consulta forem definidas, elas substituirão o comportamento padrão.