You are on page 1of 8

Um componente de controle de acesso para

plataformas multi-domínios

Resumo do projeto para inscrição SIICUSP

Bolsista: Frederico de Oliveira Sampaio (frederico.sampaio@usp.br)


Orientadora: Professora Doutora Rosana Teresinha Vaccare Braga (rtvb@icmc.usp.br)
Colaborador: Artur José Ferro Sampaio (artur@icmc.usp.br)

Agosto 2016
Contexto

Este documento trata a apresentação de um dos subprojetos de uma iniciação


científica orientada pela Rosana Braga desde agosto de 2015, cuja proposta é o
desenvolvimento e avaliação de componentes de um Modelo Arquitetural Integrado
para Reúso de Software.
O projeto inicial foi motivado pela carência de artefatos que alavancassem o
reuso, principalmente de produções como documentos de requisitos, modelos de
análises de projeto, casos de testes, documentações, códigos-fontes entre outros. Isso
tudo faz com que se necessite de um gerenciamento específico e de fácil acesso. Além
disso, há uma dificuldade em integrar ferramentas diferentes, que não possuem um
padrão arquitetural e de troca de dados que facilitem um emprego conjunto, e esta
integração não apenas pode facilitar a utilização das ferramentas como também
possibilita maximizar o reuso de software.
O subprojeto apresentado, trata-se de um componente de acesso ao sistema de
gerenciamento, que se viu necessário o enfoque durante a vigência do projeto inicial.
Atribuiu-se a responsabilidade deste desenvolvimento ao bolsista Frederico Sampaio
que contou com auxílio do Analista de Sistema do ICMC Artur Sampaio.
A necessidade de um enfoque ao controle de acesso do sistema foi motivada
pela complexidade da administração de segurança e uma gestão eficiente de permissões
para que diferentes usuários tenham acesso garantido ou negado de acordo com suas
atribuições. Além disso, os usuários podem operar diariamente diversos sistemas, em
diferentes domínios, cada qual com suas políticas e restrições de acesso, e o modelo de
controle de acesso escolhido trata essa multiplicidade de domínios.

Introdução

Para o gerenciamento dos serviços e artefatos (denominaremos recursos


protegidos), tendo em vista a necessidade de se trabalhar com permissões de acesso
considerando tipos diversos de usuários, foi escolhido o modelo RBAC (Role Base Access
Control) para esta administração na segurança do acesso ao sistema.
O modelo propõe uma estrutura com três entidades básicas: papel, usuário e
recurso protegido. As permissões para acessar recursos protegidos então são
concedidas a papeis, e os usuários são associados aos papeis adequados. Assim o mesmo
usuário pode pertencer simultaneamente a vários papéis, e cada papel pode ter
permissão para acessar vários recursos protegidos; ao conceder ou negar permissões
para cada papel, tal ação tem efeito sobre todos os usuários vinculados a esse papel.
Com isso, elaborou-se um componente de software, baseado em plataforma
J2EE/JSF, capaz de oferecer serviços de autorização aderentes ao modelo RBAC, mas
com extensões para suporte a múltiplos domínios e que possa ser facilmente integrado
a aplicações clientes novas ou preexistentes através de webservices RESTful.

Modelo Lógico

Neste modelo, define-se cinco classes que constituem a base para a construção
do componente.
A classe UserBean representa os usuários do sistema. Além de seus próprios
atributos, há uma lista de elementos RoleBean, com relacionamento muitos para
muitos. A classe RoleBean representa cada papel (ou grupo de usuários) a ser
gerenciado, e além de seus atributos necessários, possui uma lista de elementos do tipo
UserBean e ProtectedResourceBean. A classe ProtectedResourceBean é responsável
pelos pontos de controle de acesso que serão verificados na aplicação cliente. Os
objetos dessa classe definem a granularidade do controle de acesso e a classe possui
uma lista de elementos do tipo RoleBean, também com relacionamento muitos para
muitos.
Para suportar a extensão do modelo RBAC original (suporte a múltiplos
domínios), são incluídas duas novas classes e a primeira nova classe é denominada
DomainBean, e representa cada subsistema ou domínio de aplicação para o qual se
deseja gerenciar permissões. A segunda classe se chama AssignedRoleBean, e
representa a “atribuição de uma Role a um User para determinado Domain”. A Fig 1
ilustra melhor o modelo lógico.
Fig 1 – Diagrama de Classe do Modelo Lógico

Modelo Físico

Todas as classes constituintes do sistema são mapeadas por tabelas em uma base
de dados, garantindo a persistência das informações. Relacionamentos múltiplos utiliza
tabelas intermediárias, como se pode ver na Fig. 2.
A concessão ou revogação de cada permissão para um determinado papel é
gerenciada pelos registros da tabela rbac_permission. As associações entre usuários e
papéis seguem o mesmo método, e são registradas na tabela rbac_role_user. E para a
extensão do modelo para suporte a multi-domínios, é criada a tabela rbac_domain, e
rbac_assigned_role substitui a tabela de relacionamento usuário-papel.
Fig. 2 – Diagrama Entidade Relacionamento do Modelo Físico

Implementação

A principal linguagem de desenvolvimento do componente de controle de acesso


é Java, pois além de uma linguagem prática, possui múltiplos recursos para suportar o
back-end deste sistema.
Um destes recursos são os Annotations, que além de facilitar o desenvolvimento
ajudando na detecção de erros, processar em tempo de implantação e geração de
arquivos XML, o presente trabalho se utiliza de uma própria annotation para
mapeamento de recursos protegidos.
Há também o uso da tecnologia Java Server Faces (JSF) que facilita a contrução
de interfaces de usuários do lado do servidor.
Para fornecer um desenvolvimento rápido e simples de aplicações Java, foi
também empregada a tecnologia Enterprise JavaBeans (EJB), que é um componente
arquitetural seguro e portátil do lado do servidor para plataforma Java Enterprise
Edition (Java EE). E para distanciar o desenvolvedor dos detalhes de baixo nível das
camadas web, foi utilizado Jersey, um framework baseado em annotations.
E para o gerenciamento de persistência e mapeamento objeto-relacional, foi
utilizado JPA (Java Persistence API), onde se utiliza da própria linguagem Java para
gerenciar a base de dados
Resultados

Utilizando a tecnologia Java Server Faces (JSF), foram construídas interfaces de


usuário do lado do servidor para poder testar permissões de acesso a recursos
protegidos criados previamente. Para visualizar estes recursos basta executar o projeto
e utilizar as urls criadas pelo faces, como exemplo a inclusão de objetos protegidos,
acessado em http://localhost:8080/rbacweb/faces/protectedResources.xhtml.
Ao se acessar um recurso, são enviados dados do usuário e do domínio ao
sistema de controle, que garante ou nega o acesso ao recurso de acordo com as
permissões que o usuário possui.
Diagrama de Classe do Componente proposto

Fig. 4 – Diagrama de Classe do modelo extendído

Conclusão e Continuidade

O modelo de controle de acesso RBAC possui uma estrutura completa e,


juntamente com sua fácil integração a qualquer tipo de sistema, vem se tornando parte
integrante da infraestrutura da informação global e está cada vez mais popular para
banco de dados, gerenciamento empresarial e acadêmico e entre outros projetos que
envolvam a natureza de uma arquitetura baseada em papéis.

O modelo proposto recentemente de RBAC por Ferraiolo serve como uma


representação comum de um modelo de controle de acesso e, utilizando uma extensão
de múltiplos domínios, é capaz de suprir todos requisitos no projeto em
desenvolvimento, em tratando-se de segurança de acesso.
Com um bom controle de acesso implantado e empacotado, o desenvolvimento
de uma plataforma de gerenciamento de recursos contará com a segurança na
permissão de acesso aos recursos protegidos a todos diferentes usuários de diferentes
domínios.

Referências

FERRAIOLO, D.F., KUHN, D. R., Role-Based Access Controls, 15th National Computer
Security Conference (1992). Baltimore, Oct 13-16, 1992, pp. 554-563
BRAGA, R.T.V, FELONI, D., PACINI, K., SCHETTINI FILHO, D., GOTTARDI, T., AIRES: An
Architecture to Improve Software Reuse, 15th International Conference, 2016, pp. 231-
246
SANDHU, R., FERRAIOLO, D.F., KUHN, D. R., The NIST Model for Role-Based Access
Control: Towards A Unified Standard, 200
http://csrc.nist.gov/groups/SNS/rbac/
http://csrc.nist.gov/groups/SNS/rbac/documents/ferraiolo-kuhn-92.pdf

You might also like