Row Level Security (RLS)
Introdução
A funcionalidade de Row Level Security (RLS) permite definir regras de segurança no nível de linha, garantindo que os usuários tenham acesso apenas aos dados apropriados. O security_rule é uma função que facilita a implementação do RLS no seu sistema, permitindo definir regras de acesso baseadas nas permissões do usuário.
Dica: Se você precisa de uma introdução sobre autenticação, autorização e lógicas de permissionamento, confira a página Autenticação, Autorização, e lógicas de Permissionamento.
Atenção: Esta funcionalidade requer conhecimento técnico em Python. Se você é novo(a) na linguagem ou deseja uma compreensão mais profunda sobre como essa funcionalidade é implementada, recomendamos a leitura da nossa documentação avançada.
Como funciona
A função security_rule determina os valores da atributo que um usuário pode acessar. Os acessos são caracterizados por três saídas possíveis:
Acesso Total: Retorna uma lista vazia.
Sem Acesso: Retorna
None.Acesso Parcial: Retorna (1) uma
listade valores, (2) umDataFrameou (3) umlq.ObjTable.
Parâmetros
user (drp.User): Representação de um usuário com os seguintes atributos:user.id (int): ID do usuário.user.login (str): Nome de login do usuário.user.group_id (int): ID do grupo do usuário.user.sso_attributes (dict): Atributos de Single Sign-On do usuário.
Os valores da propriedade sso_attributes são obtidos a partir dos valores informados nos claims de forwardedClaim. Para mais informações, veja a seção forwardedClaim.
Retorno
listoupd.DataFrameoulq.ObjTable: Representa os registros de acesso permitidos para o usuário.
Exemplos
Usando um dicionário para permissões:
Usando uma consulta para permissões:
Modelos de Tabela de Segurança
Tabela de Relação de Usuário e Loja
Descrição: Tabela que vincula usuários a lojas específicas. Pode ser usada para determinar a quais lojas um usuário tem acesso.
John
101
John
102
Jane
103
Robert
Stranger
null
O usuário "John" está presente em 2 linhas da tabela de segurança, informando assim que ele tem acesso tanto à loja 101 quanto à 102.
O usuário "Robert" tem acesso a todas as lojas.
O usuário "Stranger", assim como qualquer outro usuário não encontrado na tabela, não tem acesso a nenhuma loja.
Tabela de Regras de Usuário
Descrição: Essa tabela contém o login de cada usuário e as respectivas permissões associadas a ele. As permissões podem ser estados, lojas ou qualquer outro atributo que defina o acesso.
John
PA, SP
Smith
SP
Jane
PA, RJ
Observe que no exemplo acima, é possível retornar uma lista de permissões caso o campo "permissions" contenha valores separado por vírgulas.
Conclusão: A implementação de RLS através da função security_rule permite flexibilidade e segurança na definição de permissões de acesso aos dados. Pode-se utilizar tanto dicionários para mapear as permissões diretamente, como também consultas SQL para determinar os níveis de acesso com base em tabelas específicas.
Last updated
Was this helpful?