RbacRls
Esta biblioteca tem por finalidade prover a funcionalidade de controle de acesso granular aos dados, contribuindo para a segurança através de verificações de acesso a informação. Este modelo tem como base os conceitos do recurso de controle de acesso RBAC(Role-Based Access Control ) aplicados juntamente aos métodos de RLS(Row-Level Security).
O framework proposto tem por objetivo facilitar a implantação da funcionalidade de segurança, auxiliando o programador na implementação das políticas de restrições no banco de dados.
RLS:
A segurança em nível de linha permite que você use um contexto de execução para controlar o acesso a
linhas em uma tabela de banco de dados, simplificando o design e a codificação de
segurança da sua aplicação.
RBAC:
O controle de acesso baseado em função (RBAC) é um modelo de restrição de que tem como base as funções de usuários
individuais em um contexto hierárquico. O RBAC garante que os usuários acessem apenas as informações de que precisam
para realizar suas rotina e os impede de acessar informações que não pertencem a eles.
Como utilizar esta Gem ?.
Caso queira Apenas Testar há essa aplicação principal com um Scaffold básico "produtos" de exemplo: https://gitlab.com/FilipeBeserraMaia/example_to_test
Instalação:
Adicione esta linha no arquivo da sua aplicação Gemfile
gem "rbac_rls"
E então execute o seguinte comando:
$ bundle
Ou Instale você mesmo manualmente com o comando abaixo :
$ gem install rbac_rls
Adicione no seu arquivo manifest.js:
//= link rbac_rls/application.css
//= link rbac_rls/application.js
Adicione no seu arquivo application_record.rb:
#Em application_record.rb
include ConnectionRlsConcern
Adicione no seu arquivo application_controller.rb:
#Em application_controller.rb"
include ConnectionRlsUserConcern
Para fazer o uso desta biblioteca é necessário que a aplicação principal, acesse o banco de dados apartir de um
usuário que não é o dono do banco de dados pois, as regras de Segurança em nivél de linha não podem ser aplicadas a
este tipo de usuário do banco de dados.
Então: apenas para casos onde seja necessario rodar migrates como administrador utilize um novo Environment ou um método
diferente de conexão com o banco que não seja como da aplicação principal
Por exemplo:
a aplicação por padrão utilizará um usuário "app_user" para suas consultas.
para rodar as migrates da aplicação o usuário padrão será "data_base_admin"
logo no environment "development" o usuário do banco de dados será :app_user
e no environment "migrations" o usuário do banco de dados será :data_base_admin
Passos para criar um environment :
1º duplique um arquivo de app/config/environments
2º configure o deu database.yml como no exemplo abaixo:
exemplo:
-----------
migrations:
<<: *default
database: main_app_development
username: username
password: password
-----------
3º para rodar as migrates usando este environment use um comando análogo a "rake db:migrate RAILS_ENV=migrations"
Logo após estes passos, na linha de comando execute:
rake rbac_rls:install:migrations
Adicione na sua aplicação em config/routes.rb
# Em config/routes.rb adicione
mount RbacRls::Engine => :rbac_rls
Execute na linha de comando:
rake db:migrate
yarn install
após isso a bibilioteca está instalada, e pode ser acessada em /rbac_rls
License
The gem is available as open source under the terms of the MIT License.