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.
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.
Retorno
listoupd.DataFrameoulq.ObjTable: Representa os registros de acesso permitidos para o usuário.
Exemplos
Usando um dicionário para permissões:
def security_rule(user: drp.User) -> list or pd.DataFrame or lq.ObjTable:
sec_table = {
"John": ["PA", "SP"],
"Smith": ["SP"],
"Jane": ["PA, RJ"],
"Robert": [], # Acesso total
"Stranger": None # Sem acesso
# Qualquer usuário não existente não terá acesso
}
return sec_table.get(user.login)Usando uma consulta para permissões:
def security_rule(user: drp.User) -> list or pd.DataFrame or lq.ObjTable:
query = f"SELECT * FROM sec_table WHERE login = '{user.login}'"
return lq.sql_execute("connection_name", query)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
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
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?