Segurança

Autorização e autenticação com RBAC (Parte 2)

A autorização e a autenticação são importantes para o Couchbase. Em março, Escrevi no blog sobre alguns dos novos RBAC (Role Based Access Control, controle de acesso baseado em função) que estamos mostrando nos Developer Builds do Couchbase Server 5.0. Este mês, gostaria de entrar em um pouco mais de detalhes, agora que o O Couchbase Server 5.0 Developer Build de abril está disponível (certifique-se de clicar na guia "Desenvolvedor").

Autenticação e autorização

Na versão anterior do Couchbase, os buckets eram protegidos por uma senha. Na versão 5.0, as senhas de bucket para autorização não existem mais. Você não pode mais criar uma "senha de bucket" para autorização. Em vez disso, é necessário criar um (ou mais) usuários que tenham níveis variados de autorização para esse bucket. Observe que não há mais nenhum campo de "senha" (nem mesmo nas "Advance bucket settings"):

Create a new Couchbase bucket - no password for authorization

Portanto, agora você não precisa mais fornecer uma senha que dê acesso completo a um bucket. Você pode ajustar a autorização do bucket e fornecer vários conjuntos de credenciais com diferentes níveis de acesso. Isso o ajudará a reforçar a segurança e a reduzir sua exposição.

Observação: o usuário administrador ainda existe e tem permissão para fazer tudo. Portanto, ainda posso executar consultas N1QL (por exemplo) nesse bucket enquanto estiver conectado como uma conta de administrador. No entanto, essa não é a conta que você deve usar em seus clientes.

Criação de um usuário autorizado

Para criar um novo usuário, você deve estar conectado como administrador (ou como um usuário que tenha uma função de administrador). Vá para a guia "Security" (Segurança) e você poderá ver uma lista de usuários e adicionar novos.

Crie um novo usuário clicando em "ADD USER". Digite as informações do usuário. Você pode querer criar um usuário para uma pessoa (por exemplo, "Matt") ou criar um usuário para um serviço (por exemplo, "MyAspNetApplication"). Certifique-se de inserir uma senha forte e, em seguida, selecione as funções apropriadas para o usuário que deseja criar.

Por exemplo, vamos criar um usuário "Matt" que só tem acesso para executar SELECIONAR consultas no bucket que acabei de criar. Em "Roles" (Funções), expando "Query Roles" (Funções de consulta), depois "Query Select" (Seleção de consulta), marquei a caixa de "mynewbucket" (meu novo balde) e, em seguida, "Save" (Salvar) para finalizar o usuário.

Create a new user with authorization to run a select query

Autorização em ação

Quando faço logout da conta de administrador e faço login novamente como "Matt", vejo que o nível de autorização que tenho é muito restrito. Somente "Dashboard" (Painel), "Servers" (Servidores), "Settings" (Configurações) e "Query" (Consulta) estão visíveis. Se eu acessar "Query", poderei executar SELEÇÃO 1;

Execute SELECT query logged in with only Query authorization

Se eu tentar algo mais complexo, como SELECT COUNT(1) FROM mynewbucketReceberei uma mensagem de erro do tipo:

Portanto, parece que tenho a autenticação correta para fazer login e tenho a autorização correta para executar um SELECIONARmas não tenho a autorização correta para realmente ler os dados. Voltarei a entrar como administrador e adicionarei a autorização do Data Reader.

User now has authorization for two roles

Nesse momento, quando faço login com "Matt", SELECT COUNT(1) FROM mynewbucket; funcionará. Se estiver acompanhando o processo, tente SELECT * FROM mynewbucket;. Você receberá uma mensagem de erro informando que não há índice disponível. Mas, se você tentar CRIAR ÍNDICE você precisará de outra permissão para fazer isso. Você entendeu a ideia.

Nova funcionalidade N1QL

Há uma nova funcionalidade N1QL para acompanhar os novos recursos de autenticação e autorização.

Conceder e revogar função

Você pode conceder e revogar funções com os comandos N1QL. Você precisa de acesso de administrador para fazer isso.

Aqui está um exemplo rápido de concessão SELECIONAR autorização de consulta para um usuário chamado "Matt" em um bucket chamado "mynewbucket":

GRANT ROLE query_select(mynewbucket) PARA Matt;

Da mesma forma, você pode REVOGAR uma função fazendo algo semelhante:

REVOKE ROLE query_select(mynewbucket) DE Matt;

Criação de usuários com REST

Não há nenhuma maneira (atualmente) de criar usuários com o N1QL, mas você pode usar a API REST para fazer isso. A documentação completa será disponibilizada posteriormente, mas veja como criar um usuário com a API REST:

  • PUT para o /settings/rbac/users/builtin/ ponto final.
  • Use credenciais de administrador para esse endpoint (por exemplo, Administrator:password com autenticação básica)
  • O corpo deve conter:
    • roles=
    • senha=

Veja abaixo um exemplo. Você pode usar o cURL, Carteiro, Violinistaou qualquer que seja sua ferramenta favorita para fazer a solicitação.

Cabeçalhos: Content-Type: application/x-www-form-urlencoded
Autorização: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==

Corpo: roles=query_select[mynewbucket],query_update[mynewbucket]&password=password

O procedimento acima pressupõe que você tenha um usuário/senha de administrador Administrator/password (portanto, o token de autenticação básico QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==).

Depois de executar isso, você verá um novo usuário chamado "restman" com as duas permissões especificadas.

Create a new user with a REST command

Espere, tem mais!

O sistema RBAC é muito rico para ser abordado em uma única postagem de blog, e a documentação completa está a caminho. Enquanto isso, aqui estão alguns detalhes que podem ajudá-lo a começar a usar a visualização:

  • Você deve ter notado o todos nas capturas de tela acima. Você pode atribuir funções a um usuário com base em cada balde ou pode dar permissão para todos (mesmo os que ainda não foram criados).
  • Abordei as permissões do FTS na postagem anterior do blog, mas há permissões que abrangem praticamente tudo: visualizações, administração de buckets, backup, monitoramento, DCP, índices etc.
  • Não é mais possível criar buckets com uma senha. O equivalente é criar um usuário com o mesmo nome do bucket e dar a ele autorização para uma função chamada "Bucket Full Access". Isso será útil para fins de atualização e transição.

Ainda queremos seu feedback!

Fique atento ao Blog do Couchbase para obter informações sobre o que está por vir na próxima versão de desenvolvedor.

Interessado em experimentar alguns desses novos recursos? Faça o download do Couchbase Server 5.0 April 2017 Developer Build hoje!

O lançamento da versão 5.0 está se aproximando rapidamente, mas ainda queremos seu feedback!

Insetos: Se você encontrar um bug (algo que está quebrado ou que não funciona como esperado), registre um problema em nosso Sistema JIRA em issues.couchbase.com ou envie uma pergunta no Fóruns do Couchbase. Ou entre em contato comigo com uma descrição do problema. Ficarei feliz em ajudá-lo ou enviar o bug para você (meus gerentes do Couchbase permitem que eu tire selfies em nosso sofá grande e caricatural quando envio bons bugs).

Feedback: Diga-me o que você acha. Algo de que você não gosta? Algo de que você realmente gosta? Está faltando alguma coisa? Agora você pode dar feedback diretamente do Console da Web do Couchbase. Procure pelo ícone feedback icon no canto inferior direito da tela.

Em alguns casos, pode ser difícil decidir se o seu feedback é um bug ou uma sugestão. Use seu bom senso ou, novamente, sinta-se à vontade para entrar em contato comigo para obter ajuda. Eu quero ouvir de você. A melhor maneira de entrar em contato comigo é Twitter @mgroves ou envie-me um e-mail matthew.groves@couchbase.com.

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

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

5 Comentários

  1. Talvez você possa publicar exemplos de conjuntos de funções para alguns casos de uso frequentes, como a função do Sync Gateway para conectar o Couchbase Server; a função para executar o FTS; a função para executar a instrução preparada.

    1. A documentação está chegando :)

      As funções do FTS que abordei na parte 1: https://www.couchbase.com/authentication-authorization-rbac/

      Não creio que haja uma função específica para a conectividade do Sync Gateway. Provavelmente seria algo como uma função de administrador de cluster ou administrador de bucket ou algo do gênero.

      As instruções preparadas provavelmente seriam cobertas pelas funções query_*.

  2. [...] Veja a introdução de Matthew ao controle de acesso baseado em função: Parte 1 e Parte 2 [...]

  3. Tyler Mitchell maio 4, 2017 em 1:35 pm

    Para usar os novos recursos, você precisará atualizar seus aplicativos clientes. Veja como: https://www.couchbase.com/new-sdk-authentication/

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.