Controle de acesso baseado em função em NoSQL
Um dos métodos mais comuns de proteção de dados em NoSQL é atribuir cada registro (ou documento ou gráfico, dependendo do tipo de banco de dados) com um conjunto de permissões associadas a funções. Este é o controle de acesso baseado em função, ou RBAC para breve.
Considere um comunicado à imprensa para um site que está sendo armazenado em um documento de banco de dados (agregados) NoSQL. O papel do editor pode ter permissões de atualização para o documento, enquanto que um papel mais público pode ter apenas permissões de leitura.
Este caso de uso requer a atribuição de Função permissões, não do utilizador permissões. Os usuários podem ser atribuídos a um ou mais papéis. Assim, os usuários herdam as permissões com base na soma de seus papéis.
Ter que criar um papel, a fim de dar ao usuário uma permissão para executar uma função específica pode parecer um trabalho extra, mas esta abordagem é muito útil. Considere um usuário que se desloca para outro departamento ou que deixa inteiramente.
Você não quer ter que olhar manualmente para todos os documentos cujas permissões mencionar este usuário e alterar ou removê-los. Em vez disso basta alterar as atribuições de função desse usuário em uma única operação. Usando o controle de acesso baseado em função (RBAC) é muito mais fácil por muito tempo # manutenção 8208 prazo de permissões de segurança.
Observe como bancos de dados de lidar com as permissões e herança papel. Considere subscritores em uma companhia de seguros, onde pode haver estagiário, júnior, e os subscritores seniores, cada uma com o aumento do acesso a diferentes tipos de informação.
Você pode atribuir os subscritores júnior as permissões os estagiários são atribuídos, além de um pouco mais. Então você pode atribuir permissões de todos os Underwriters 'juniores para seniores subscritores, e mais algumas, novamente. Se você deseja adicionar permissões extras para todos esses papéis, porém, você tem que fazer três alterações idênticas.
Se você tem cinco níveis de papéis, que é cinco cópias. Além disso, cada sistema terá uma infinidade de papéis como estes. Há uma maneira melhor do que executar a mesma tarefa mundana uma e outra vez: herança Papel.
Alguns sistemas incluem herança papel. Neste caso, o papel JuniorUnderwriter herda o papel TraineeUnderwriter, eo papel SeniorUnderwriter herda o papel JuniorUnderwiter. Agora tudo que você precisa fazer para adicionar uma permissão para todas as funções é adicioná-lo apenas para o papel TraineeUnderwriter (o menor nível de herança), e todas as funções herdarão a permissão. herança papel é muito mais fácil de entender e manter.
lógica permissão de função é geralmente implementada com a lógica OR. Isto é, se você atribuir três papéis - RoleA, RoleB e ROLEC - para um registro com uma permissão de leitura, um usuário possui essa permissão se ele tem RoleA OU RoleB, OR ROLEC. Se você não atribuir permissões papel de leitura para um registro, em seguida, nenhum usuário tem permissões de leitura em que o registro (herança de lado, é claro).