220 likes | 309 Views
Um modelo pragmático de separação de responsabilidades para o controle de acesso baseado em papéis. Bruno César Barreto de Figueirêdo PPGI – UFPB / Unimed João Pessoa bruno@unimedjp.com.br Gustavo Henrique Matos Bezerra Motta PPGI – UFPB gustavo@di.ufpb.br. Conceitos Necessários.
E N D
Um modelo pragmático de separação de responsabilidades para o controle de acesso baseado em papéis Bruno César Barreto de Figueirêdo PPGI – UFPB / Unimed João Pessoabruno@unimedjp.com.br Gustavo Henrique Matos Bezerra Motta PPGI – UFPBgustavo@di.ufpb.br
Conceitos Necessários • Tomaremos um cenário bem familiar a todos como exemplo, para tornar clara a motivação e os resultados pretendidos com nosso trabalho
Conceitos Necessários • Modelo de controle de acesso baseado em papéis (CABP) Usuários Papéis Goleiro Atacante Permissões Defender Fazer Gols
Conceitos Necessários Conflito de Interesses Separação de Responsabilidades Defender Fazer Gols
Conceitos Necessários • Como implementar a separação de responsabilidades quando o mesmo usuário assume funções conflitantes ? Defender Fazer Gols
Conceitos Necessários • Modelo de controle de acesso baseado em papéis (CABP) • Separação de Responsabilidades Estática • Usuários não poderão estar associados a papéis que contenham permissões de acesso com conflitos de interesses entre si. Logo, um usuário que seja goleiro, não poderá estar associado ao papel atacante, visto que as permissões : defender e fazer gols, estão associadas a esses papéis e contêm um conflito de interesses entre si. • Tomando o modelo, temos : SRE = {({goleiro,atacante},2)}.
Conceitos Necessários • Modelo de controle de acesso baseado em papéis (CABP) • Separação de Responsabilidades Estática Usuários Papéis Goleiro Atacante Permissões Defender Fazer Gols
Conceitos Necessários • Modelo de controle de acesso baseado em papéis (CABP) • Separação de Responsabilidades Dinâmica • Usuários poderão estar associados a papéis que contenham conflitos de interesses entre si, porém os mesmos papéis não poderão estar ativos simultaneamente. Logo, caso um goleiro queira fazer gols, terá de sair de campo e entrar novamente como um atacante, e então fazer gols. Caso o mesmo deseje voltar a defender, deverá sair outra vez de campo e entrar mais uma vez como goleiro. • Tomando o modelo, temos : SRD = {({goleiro,atacante},2)}.
Conceitos Necessários • Modelo de controle de acesso baseado em papéis (CABP) • Separação de Responsabilidades Dinâmica Usuários Papéis Goleiro Atacante Permissões Defender Fazer Gols
Motivação para o Trabalho • Concluímos que o Modelo de controle de acesso baseado em papéis (CABP), afasta-se da realidade do dia-a-dia, quando trata da separação de responsabilidades. • As soluções encontradas hoje em dia ficam dependentes da aplicação e não do controle do acesso, o que traz problemas de segurança, padronização, etc.
Proposta de Trabalho • Formatar um modelo de controle de separação de responsabilidades mais poderoso e flexível, de forma a permitir que esse controle fique centrado no mecanismo de controle do acesso e não nas aplicações.
Modelo PRAGMA SR • Extensão do CABP • Associação de permissões a papéis e de papéis a usuários, sem restrições • Configuração de todas as operações conflitantes para que o modelo possa controlar o seu acesso
Modelo PRAGMA SR • Controla o acesso às operações em tempo de execução, restringindo que o mesmo usuário acesse uma permissão que tenha um conflito de interesses com outra disponível para ele, independente do papel que contenha a mesma. • Controle do histórico do acesso às informações, permitindo que um usuário possa utilizar permissões conflitantes numa mesma sessão, desde que, as mesmas não atuem sob as informações acessadas por ele próprio, mas sim sobre as informações acessadas pelos demais usuários (Exemplo a seguir).
Modelo PRAGMA SR • A função Check_Access • Check_access(s: Sessions; op: OPS; ob: OBS; id: ID) Boolean. Check_access (s, op, ob, id) (rRoles : r Papéis_da_sessão(s) (r, (op, ob)) PA Usuário_tem_operação_conflitante (Usuário_da_sessão(s), op, ob, id))
Modelo PRAGMA SR • A função Usuário_tem_operação_conflitante • Usuário_tem_operação_conflitante (u, op, ob, id) ( (ps, h, n) OPC | (op, ob) ps: hPermissões_usuário(u) ps≥ nh(Operações_excutadas_usuário(u, id) {(op, ob)}) ps≥ n)
Modelo PRAGMA SR • Tomando o exemplo do goleiro, temos: • OPC = ({defender, fazer gols}, true, 2) • Permissões_usuário(u) = {defender, fazer gols} • HA = ({Rogério,{Defender},Minha_Meta}, {Rogério,{Fazer Gols}, Meta_Adversário}
Modelo PRAGMA SR • Aplicando à função Check_access, temos: • Check_access(Partida_Futebol,{Fazer Gols},Minha_Meta) • Usuário_tem_Operação_Conflitante(Rogério,{Fazer Gols}, Minha_Meta) • | Operações_executadas_usuário(Rogério,Minha_Meta) U {Fazer Gols} I {Fazer Gols, Defender} | • | {{Defender} U {Fazer Gols}} I {Fazer Gols, Defender} | = 2 • Logo como n = 2, a função retorna true como resposta. Portanto não será possível “Fazer Gols” na sua própria meta. Caso apliquemos a mesma função para a meta do adversário, a função retornará true, indicando que será sim possível fazer gols na meta oposta, resolvendo, dessa forma o problema.
Modelo PRAGMA SR • Permite que o mesmo usuário possa ter permissões conflitantes e utilizá-las simultaneamente, desde que não sob suas próprias informações (sua meta), mas sim sob as dos outros usuários. Usuários Papéis Goleiro Permissões Defender Fazer Gols
Trabalhos Futuros • Investigação sobre a eficiência e facilidade de uso do modelo num sistema real • Implementação do modelo • Prova da complexidade dos algoritmos
Conclusão • Estende o CABP • Contribuições • Livre associação de permissões a papéis e de papéis a usuários • Controle do acesso às permissões em tempo de execução • Auditoria de conflitos de atribuições de permissões a usuários • Controle do acesso de acordo com o histórico de utilização, verificando se um objeto pode ser acessado por um usuário através de uma determinada permissão • Configuração simples para a obtenção do resultado esperado
Um modelo pragmático de separação de responsabilidades para o controle de acesso baseado em papéis Bruno César Barreto de Figueirêdo PPGI – UFPB / Unimed João Pessoabruno@unimedjp.com.br Gustavo Henrique Matos Bezerra Motta PPGI – UFPBgustavo@di.ufpb.br