Segurança

Apresentando a segurança de controle de acesso com base em função (RBAC) para coleções no Couchbase 7.0

Seus dados no Couchbase acabaram de ficar mais seguros.

O Couchbase Server 7.0 introduziu Scopes e Collections para mapear melhor os modelos de dados relacionais e NoSQL. Mas a versão 7.0 também inclui alguns aprimoramentos adicionais para reforçar a segurança do a plataforma de dados. Mais especificamente, a segurança de controle de acesso baseado em função (RBAC) agora é suportada no nível de escopos e coleções individuais.

O que tudo isso significa para suas implementações do Couchbase? Vamos nos aprofundar.

Funções de segurança RBAC existentes no Couchbase

O Couchbase Server permitiu controles refinados do acesso do usuário à plataforma com segurança de controle de acesso baseado em função (RBAC) para administradores desde a versão 4.5 e para todos os usuários desde a versão 5.0. As Couchbase Collections foram introduzidas como um recurso de visualização para desenvolvedores no Couchbase Server 6.5 e são agora com suporte total no Couchbase Server 7.0.

Couchbase Funções de segurança RBAC foram divididos anteriormente em duas categorias:

    • Administração e global: Essas funções estão associadas a privilégios em todo o cluster. Algumas dessas funções são para administradores que podem gerenciar as configurações do cluster, ler estatísticas ou reforçar a segurança. Outras são para usuários e aplicativos definidos pelo usuário que exigem acesso a recursos específicos de todo o cluster.
    • Por balde: Essas funções estão associadas a um ou mais Buckets e suportam a leitura e a gravação das configurações do Bucket, o acesso aos dados e o gerenciamento de serviços, índices e procedimentos de replicação.

Um exemplo de RBAC usando escopos e coleções

Por exemplo, você pode ter concedido acesso de leitura a um Bucket chamado Viagens para um mecanismo de busca de hotéis confiável chamado Acme Co. com um usuário chamado acme usando um comando como este na interface de linha de comando de um cluster baseado em Linux. (Talvez seja necessário ajustar os caminhos se estiver usando outra plataforma).

Isso permitiria que seu parceiro de pesquisa de hotéis, a Acme Co., acessasse todos os dados que sua empresa está armazenando no Viagens Bucket do Couchbase. Isso pode incluir pedidos, inventário e outros dados não apenas de hotéis, mas também de companhias aéreas e outros produtos de viagem. Seguindo o princípio do menor privilégio, e se quiséssemos limitar os dados aos quais a Acme Co. tem acesso, em vez de permitir o acesso a todos dados de viagem em nossa empresa?

As coleções permitem que os documentos JSON em um Bucket do Couchbase sejam organizados, primeiro em Escopos, em que um Escopo é semelhante a um esquema em um banco de dados relacional (RDBMS). Em seguida, o escopo é subdividido em coleções individuais, de forma semelhante à estruturação de uma tabela em um banco de dados relacional tradicional.

O espaço de nomes em cada escopo é independente dos outros, portanto, você pode ter os mesmos nomes de coleção em escopos diferentes. Da mesma forma, as chaves de documentos precisam ser exclusivas apenas em uma coleção e, portanto, documentos com a mesma chave podem existir em diferentes coleções.

Antes da introdução de escopos e coleções, era comum organizar os documentos do Couchbase com base em prefixos-chave, como Orders::Europe::Customer1. As coleções oferecem muito mais flexibilidade nas chaves de documentos do que as disponíveis anteriormente.

Abaixo está um diagrama visual da relação entre Buckets, Scopes e Collections para um exemplo de conjunto de dados de viagens.

Buckets, Scopes and Collections within Couchbase

Para atualizações contínuas e para compatibilidade com versões anteriores, cada Bucket agora tem um Padrão Escopo e o Padrão O escopo tem um Padrão Coleção. A Padrão A coleção oferece compatibilidade com versões anteriores e uma referência direta ao Bucket mapeia automaticamente para a coleção Padrão Coleção. Além disso, na atualização, todos os dados existentes são automaticamente adicionados à Padrão Coleção.

Enquanto o Padrão A coleção é fornecida como um mecanismo de compatibilidade com versões anteriores; novos aplicativos devem ser escritos usando coleções nomeadas. Como você pode ver, as coleções permitem opções adicionais para organizar os dados em um Servidor Couchbase agrupamento.

Voltando ao exemplo acima, e se quiséssemos permitir que a Acme Co. visse apenas os dados do hotel, em vez de todos os dados de viagem da empresa? Com o Collections, agora você pode limitar os limites de acesso da Acme apenas ao escopo de sua escolha.

Por exemplo, se a Acme Co. precisasse verificar o inventário de quartos de hotel disponíveis, poderíamos restringir sua função RBAC para Hotel Coleção dentro do Inventário Escopo dentro do Viagens Balde.

Explicação da segurança de controle de acesso baseado em função (RBAC)

Como os escopos e as coleções funcionam com o controle de acesso baseado em função no banco de dados?

Um usuário que tem acesso a um Bucket herda o acesso aos Escopos e Coleções filhos desse Bucket. Da mesma forma, um usuário que tem acesso a um escopo herda o acesso às coleções filhas, mas não ao bucket pai.

Veja a seguir um detalhamento de como a nova segurança baseada em função funciona com o Collections:

Função Descrição
leitor_de_dados[*] Pode ler dados em cada Bucket, incluindo cada Escopo e Coleção, em todo o cluster.
leitor_de_dados[foo] Pode ler dados em todos os escopos e coleções somente dentro do Bucket foo.
leitor_de_dados[foo:bar] Pode ler dados em todas as coleções dentro do escopo bar da caçamba foo.
leitor_de_dados[foo:bar:baz] Pode ler dados somente na coleção baz que está localizado no escopo bar da caçamba foo.
Role-based access control on Couchbase Scopes and Collections Example An example of RBAC security on Scopes and Collections in Couchbase

Para a Acme Co, o comando CLI é semelhante ao exemplo anterior, mas, em vez de definir o RBAC para um Bucket, você precisa ajustá-lo para permitir apenas um único Escopo e/ou Coleção.

Em nosso exemplo acima, queremos permitir que o acme acesso do usuário ao Hotel Coleção dentro do Inventário Escopo, portanto, nesse caso, a função seria data_reader[Travel:Inventory:Hotel].

Você deve estar se perguntando: quais funções de acesso de usuário podem ter um escopo e uma coleção definidos? Aqui está a lista completa:

  • Acesso a aplicativos
  • Leitor de dados
  • Gravador de dados
  • Leitor de dados DCP
  • Monitoramento de dados
  • Leitor de pesquisa de texto completo (FTS)
  • Seleção de consulta
  • Atualização da consulta
  • Inserção de consulta
  • Consulta Excluir
  • Consulta Gerenciar índice
  • Seleção de análise
  • Também adicionamos uma função Manage Collections in Scope (Gerenciar coleções no escopo) para permitir que um usuário adicione e remova coleções em um escopo específico em um Bucket.
  • Um exemplo prático de segurança RBAC com o Couchbase Server 7.0

    Agora, vamos a mais alguns exemplos práticos que você pode experimente você mesmo no Couchbase Server 7.0. Como antes, estou usando um cluster baseado em Linux, portanto, talvez seja necessário ajustar os caminhos se estiver usando outra plataforma. Você precisará executar os serviços de dados, consulta e índice do Couchbase para este exemplo.

    Primeiro, carregue o amostra de viagem Bucket em seu cluster.

    Em seguida, crie algumas coleções adicionais no Bucket. Usaremos o Padrão Escopo. Você precisará usar um usuário administrador do Bucket (ou privilégios superiores) para criar as novas coleções.

    Você também pode ver essas coleções na interface do usuário da Web do Couchbase Server, conforme mostrado abaixo.

    Screenshot of Couchbase Server 7.0 Buckets

    A visualização do Bucket no Couchbase Server 7.0

    Couchbase Server 7.0 Scopes and Collections Screenshot

    A visualização Escopos e coleções no Couchbase Server 7.0

    Em seguida, carregaremos dados em cada uma das coleções com base em um campo que já existe nos documentos, chamado tipo. O documento tipo corresponde às novas coleções que acabamos de criar. Os dados são copiados para a coleção usando a linguagem de consulta N1QL na linha de comando. Observação: Precisamos ter o cuidado de escapar dos caracteres que o shell tentaria executar, como os backticks.

    Se você tiver algum problema com a formatação ou com a execução do comando, aqui está uma imagem de exemplo de como o comando deve ser.

    Screenshot of N1QL query for Hotel Collection Populate

    Vamos criar um índice primário no hotel Coleção como administrador:

    Agora, vamos obter uma lista de todos os usuários e funções:

    Como você pode ver acima, no momento temos apenas o administrador interno e nenhum usuário adicional. Portanto, a saída do comando está vazia, como esperado.

    Em seguida, vamos criar um usuário, John Doe. Daremos a John uma função de leitor de dados e uma função de seleção de consulta na tabela hotel Coleção, que está localizada no Padrão Escopo.

    Novamente, você também pode fazer isso na interface do usuário da Web.

    Couchbase Server 7.0 screenshot of user roles

    Funções de usuário RBAC no Couchbase Server 7.0

    Em seguida, verificamos se John Doe tem as permissões específicas para o hotel Coleção. Quando John tenta ler todo o Bucket de amostras de viagem, ele recebe um erro de permissão negada.

    Desta vez, como John, vamos selecionar cinco hotéis apenas da hotel Coleção do amostra de viagem Bucket, que John faz ter acesso a.

    Como mostrado nos exemplos acima, você pode qualificar uma função Data Reader e Query Select com um confinamento Scope e Collection.

    Divirta-se e proteja suas coleções com nossa nova funcionalidade de controle de acesso baseado em funções!

    Mais recursos sobre a versão 7.0 do Couchbase

    Deseja experimentar você mesmo a segurança RBAC no Couchbase?
    Dê uma olhada no Couchbase hoje mesmo

     
     
     

    Compartilhe este artigo
    Receba atualizações do blog do Couchbase em sua caixa de entrada
    Esse campo é obrigatório.

    Autor

    Postado por Ian McCloy, diretor de gerenciamento de produtos

    Ian McCloy é diretor do grupo de gerenciamento de produtos de plataforma e segurança da Couchbase e mora no Reino Unido. Sua equipe dedicada é responsável pela arquitetura de confiabilidade, disponibilidade, capacidade de serviço e segurança do Couchbase Server e do banco de dados SaaS, Capella. Essa equipe também é proprietária de plataformas nativas da nuvem, como o Operador Autônomo Kubernetes do Couchbase. Ian tem uma vasta experiência como engenheiro de software, engenheiro de suporte técnico, engenheiro de garantia de qualidade e administrador de sistemas. Ian liderou equipes técnicas globais durante a maior parte de sua carreira profissional de 20 anos e detém várias patentes nas áreas de segurança da informação, virtualização e design de hardware. https://www.linkedin.com/in/ianmccloy/

    3 Comentários

    1. Oi~ Obrigado por sua postagem.
      Acho que há um erro de digitação aqui, por isso estou deixando um comentário.
      //
      Vamos criar um usuário, John Doe, que tem uma função de leitor de dados e de seleção de consulta na coleção de hotéis, que está localizada na coleção _default.
      //

      Acho que _default Collection >>> _default Scope

      Está certo?

      Mais uma vez, obrigado por sua postagem útil.

    2. Ian McCloy, gerente principal de produtos da Couchbase novembro 20, 2020 em 5:25 am

      Olá ckdgur. Fico feliz em saber que a postagem do blog é útil. Boa observação, é de fato um erro de digitação. Já o corrigi. Além disso, muito obrigado por dar uma olhada no Couchbase 7 Beta!

    3. Hi

      Você pode confirmar que o "Acesso ao aplicativo" pode ter um escopo e uma coleção definidos?

      De acordo com a documentação, o Application Access é traduzido como full_bucket_access e está obsoleto e, quando tentei, apenas o nome do bucket era suportado.

      Não é possível atribuir funções ao usuário porque as seguintes funções são desconhecidas, malformadas ou os parâmetros de função são indefinidos: [bucket_full_access[travel-sample:inventory]]"

    Deixe um comentário

    Pronto para começar a usar o Couchbase Capella?

    Iniciar a construção

    Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

    Use o Capella gratuitamente

    Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

    Entre em contato

    Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.