Lar Finanças Pessoais Controle de acesso baseado em atributo (ABAC) em NoSQL - dummies

Controle de acesso baseado em atributo (ABAC) em NoSQL - dummies

Vídeo: Curso de Excel Avançado - Botões de Opção - Aula 2 2024

Vídeo: Curso de Excel Avançado - Botões de Opção - Aula 2 2024
Anonim

Um padrão útil para a segurança é aplicar permissões com base em dados dentro de um registro, em vez de atribuir permissões separadamente para a gravação. Isso pode basear-se em valores de metadados, coluna individual (clones Bigtable) ou elemento (bancos de dados agregados NoSQL).

Um bom exemplo é o nome de um cliente que está sendo mencionado em um documento. Você pode querer restringir o acesso a todos os documentos que mencionam isso - acesse apenas as pessoas com acesso às informações deste cliente. Você pode restringir o acesso a esses documentos processando os dados dentro do documento e aplicando as permissões de segurança relevantes com base no valor desses dados.

Nenhum banco de dados NoSQL fornece esta capacidade diretamente fora da caixa. Isso ocorre porque as permissões devem ser atribuídas à gravação depois que os dados são salvos pelo aplicativo, mas antes que ele esteja disponível para recuperação por outros aplicativos ou usuários. Portanto, essa permissão de atribuição deve ocorrer dentro do limite da transação.

Além disso, muito poucos bancos de dados NoSQL suportam transações compatíveis com ACID (MarkLogic, FoundationDB e Neo4j, por exemplo). Se um banco de dados não suportar a atribuição de permissões out-of-the-box com base em dados em um documento, mas suporta transações ACID e gatilhos de pré-confirmação, então uma solução fácil é possível.

Geralmente, é fácil escrever um gatilho que verifique a presença de um valor dentro de um registro e para modificar permissões com base em seu valor. Enquanto um banco de dados suportar isso durante o processo de confirmação, e não após o commit, você sabe que seus dados são protegidos usando um simples gatilho de pré-confirmação.

Como exemplo, o MarkLogic Server suporta transações de ACID totalmente serializáveis ​​e disparadores de pré-confirmação. O seguinte é um documento XML simples que eu quero apoiar para o controle de acesso baseado em atributo:

jbloggs ACME Lorem Ipsum Dolar Sit Amet …

Os disparadores do MarkLogic Server usam a linguagem W3C XQuery. O seguinte exemplo XQuery é um simples gatilho que, quando instalado no MarkLogic, atribui permissões de leitura e gravação:

versão xquery "1. 0-ml"; import module namespace trgr = ' // marklogic. com / xdmp / triggers 'em' / MarkLogic / triggers. xqy '; declarar variável $ trgr: uri como xs: string externo; declarar variável $ trgr: trigger as node () external; se ("ACME" = fn: doc ($ trgr: uri) / MeetingReport / Customer), em seguida, xdmp: document-set-permissions ($ trgr-uri, (xdmp: permission ("seniorsales", "update"), xdmp: permissão ("vendas", "leitura"))) else ()

Uma vez que o gatilho está instalado nos setperms do arquivo.xqy em um banco de dados de módulos do servidor MarkLogic, execute o seguinte código no aplicativo de codificação web para MarkLogic - Query Console para habilitar o gatilho. Em uma instalação padrão do MarkLogic Server, você pode encontrar o Query Console no URL: // localhost: 8000 / qconsole.

Aqui está o código que mostra como instalar o gatilho usando Query Console:

xquery version "1. 0-ml"; Importar espaço de nome do módulo trgr = " // marklogic. com / xdmp / triggers" em '/ MarkLogic / triggers. xqy '; trgr: create-trigger ("setperms", "Set Sales Doc Permissions", trgr: trigger-data-event (trgr: collection-scope ("reportes de reunião"), trgr: document-content ("modify"), trgr: pre -commit ()), trgr: trigger-module (xdmp: banco de dados ("Módulos"), "/ triggers /", "setperms. xqy"), fn: true (), xdmp: default-permissions (), fn: false ())
Controle de acesso baseado em atributo (ABAC) em NoSQL - dummies

Escolha dos editores

Origem e Design de Hadoop - dummies

Origem e Design de Hadoop - dummies

Então, o que é exatamente isso com o nome engraçado - Hadoop? No seu núcleo, o Hadoop é uma estrutura para armazenar dados em grandes clusters de hardware de commodities - hardware de computador todos os dias acessível e facilmente disponível - e executando aplicativos contra esses dados. Um cluster é um grupo de computadores interligados (conhecido como ...

A arquitetura do porco em Hadoop - dummies

A arquitetura do porco em Hadoop - dummies

"Simples" geralmente significa "elegante" quando se trata de desenhos arquitetônicos para Essa nova mansão do Vale do Silício que você planejou quando o dinheiro começa a rolar depois de implementar o Hadoop. O mesmo princípio se aplica à arquitetura de software. O porco é composto por dois componentes (count 'em, two): O próprio idioma: como prova de que os programadores ...

MapReduce Application Flow em Hadoop - dummies

MapReduce Application Flow em Hadoop - dummies

No seu núcleo, MapReduce é um modelo de programação para o processamento de conjuntos de dados que são armazenados de forma distribuída nos nós de escravo de um cluster Hadoop. O conceito-chave aqui é dividir e conquistar. Especificamente, você deseja quebrar um grande conjunto de dados em muitas peças menores e processá-las em paralelo com o mesmo algoritmo. ...

Escolha dos editores

Apoiando a sua campanha PPC com análise de palavras-chave - manequins

Apoiando a sua campanha PPC com análise de palavras-chave - manequins

A base de todo o trabalho do mecanismo de pesquisa é uma análise de palavras-chave. Fazer uma análise de palavras-chave realmente não é tão complicado e pode significar a diferença entre sucesso e falha em sua campanha PPC. Comece digitando as palavras-chave óbvias em um editor de texto ou processador de texto - aqueles que você já pensou ou, se você ...

Envie seu site para Yahoo! Search Directory - dummies

Envie seu site para Yahoo! Search Directory - dummies

Envios para o Yahoo! O diretório costumava ser muito difícil. Pesquisas mostraram que as pessoas que conseguiram obter seus sites listados no diretório tiveram que tentar várias vezes em questão de meses. Era grátis, mas era um aborrecimento. A boa notícia: você pode obter seu site listado em Yahoo! Diretório ...

Dicas para criar e otimizar conteúdo para objetos e indústrias difíceis - manequins

Dicas para criar e otimizar conteúdo para objetos e indústrias difíceis - manequins

Em A superfície, a criação de conteúdo não soa tão difícil até você se sentar e tentar escrever. Sua estratégia de SEO depende desse conteúdo. É ainda pior se você estiver escrevendo conteúdo para o que muitas pessoas podem considerar uma indústria chata. A boa notícia é que é possível transformar indivíduos potencialmente chatos em bons ...

Escolha dos editores

Componentes eletrônicos: transistores como um potenciômetro mágico - manequins

Componentes eletrônicos: transistores como um potenciômetro mágico - manequins

Um transistor dentro de um O circuito eletrônico funciona como uma combinação de um diodo e um resistor variável, também chamado de potenciômetro ou pote. Mas isso não é apenas um pote comum; é um pote mágico cujo botão é misteriosamente conectado ao diodo por raios invisíveis, tipo desse tipo: quando a tensão direta é aplicada em ...

Componentes eletrônicos: Resistores - manequins

Componentes eletrônicos: Resistores - manequins

Um resistor é um pequeno componente projetado para fornecer um específico quantidade de resistência em um circuito eletrônico. Como a resistência é um elemento essencial de quase todos os circuitos eletrônicos, você usará resistores em quase todos os circuitos que você constrói. Embora os resistores venham em uma variedade de tamanhos e formas, o tipo mais comum ...