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
[email protected]
Gustavo Henrique Matos Bezerra Motta
PPGI – UFPB
[email protected]
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
Permissões
Goleiro
Defender
Atacante
Fazer Gols
Conceitos Necessários
Conflito de Interesses
Defender
Separação de Responsabilidades
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
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
Permissões
Goleiro
Defender
Atacante
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
Permissões
Goleiro
Defender
Atacante
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)  ( r  Roles :
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:
h  Permissões_usuário(u)  ps ≥ n
h  (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}  {Fazer Gols, Defender} |
| {{Defender} U {Fazer Gols}}  {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
Permissões
Goleiro
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 Pessoa
[email protected]
Gustavo Henrique Matos Bezerra Motta
PPGI – UFPB
[email protected]
Download

Um modelo pragmático de separação de responsabilidades para o