A autenticação e a autorização foram amplamente aprimoradas no Couchbase Server 5.0. Há algum tempo, estamos escrevendo sobre os novos recursos RBAC na visualização para desenvolvedores.

Agora que o Couchbase Server 5.0 Beta foi lançado, estou escrevendo uma postagem mais detalhada no blog sobre como usar o Couchbase .NET SDK junto com esses novos recursos.

Os exemplos de código completo usados nesta postagem do blog são disponível para você no Github.

Criar um balde

Como mencionei nas postagens anteriores, os dias dos compartimentos com senhas acabaram. O futuro pertence aos usuários - usuários que têm permissão(s) específica(s) para baldes específicos.

Vamos começar criando um bucket. Na interface do usuário do Couchbase, faça login como o administrador que você criou quando instalou o Couchbase. Vá para "Buckets" e clique em "ADD BUCKET" (canto superior direito). Você verá a caixa de diálogo "Add Data Bucket". Observe que não há mais um campo "password" (nem mesmo em "Advanced bucket settings").

Add new bucket - no authentication options anymore

Dê um nome ao bucket e uma certa quantidade de memória e clique em "Add Bucket". Agora você tem um bucket. Mas, além de um administrador na interface do usuário, ninguém pode acessar esse bucket ainda.

Criar um usuário

Para obter acesso a esse bucket, é necessário criar um usuário. No Couchbase 5.0, os "usuários" são um recurso totalmente novo, que traz recursos mais avançados de autenticação e autorização para o Couchbase Server.

Enquanto ainda estiver conectado como administrador, vá para "Security" (Segurança) para ver uma lista de usuários. Clique em "ADD USER" (canto superior direito).

Adding a new user for authentication and authorization

Crie um usuário com o nome e a senha que desejar. Você pode escolher quais funções o usuário tem e para quais buckets (quando aplicável). Vamos atribuir a esse usuário funções de Data Writer e Data Reader, para o bucket que acabou de ser criado (por exemplo, "mybucket"), mas NÃO quaisquer funções de Query.

Adding authorization for data read and data write

Depois que o usuário é adicionado, você pode passar o mouse sobre as funções para obter uma descrição do que a função significa.

Authorization tool tip

Autenticação e autorização com o SDK do Couchbase .NET

Agora que temos um bucket e um usuário, vamos ver como usá-los com o SDK do .NET.

Comece criando um Aglomerado objeto.

Você tem um cluster, mas seu programa ainda não foi autenticado. Use um PasswordAuthenticator para especificar as credenciais. Em seguida, use esse objeto com o objeto Autenticar método. No exemplo abaixo, estou usando credenciais incorretas.

Agora, se eu tentar executar uma operação como OpenBucket no cluster, uma exceção é lançada.

Error in authentication

Agora, vamos tentar novamente usando as credenciais corretas. A autenticação funcionará. Mas vamos falar sobre autorização a seguir.

Lembre-se de que só atribuí a esse usuário funções de gravador de dados e leitor de dados (para o mybucket). Portanto, se eu me autenticar e inserir um documento agora, ele funcionará.

Console output when authentication and authorization are valid

Mas se eu tentasse, por exemplo, executar um Consulta N1QL (SQL para JSON)ele falhará. Isso ocorre porque esse usuário não está autorizado a executar consultas.

Estou apenas fazendo uma simples COUNT(1) consulta de agregação. Como esse usuário não está autorizado, eis o que é exibido:

No authorization for running a query

Mais uma coisa

Se você estiver preocupado com o efeito que isso terá na atualização do Couchbase Server 4.x para o Couchbase Server 5.0, aqui vai uma dica. Se você criar um usuário com o mesmo nome do bucket (por exemplo, um bucket chamado "foo" e um usuário chamado "foo"), as APIs antigas do Couchbase .NET que ainda esperam uma senha de bucket funcionarão como antes. Por enquanto, basta atribuir a esse usuário a função "Cluster Admin". Essa é uma boa solução temporária até que você possa reprojetar seu sistema para usar uma abordagem regimentada para a função.

Resumo

O Couchbase Server 5.0 já está disponível em versão beta! Esses recursos de autenticação baseada em função (RBAC) fazem do Couchbase um líder em segurança de banco de dados de documentos, e estou pessoalmente muito satisfeito que o Couchbase esteja indo nessa direção. A segurança é importante, mas muitas vezes é negligenciada pelos desenvolvedores.

Se você tiver alguma dúvida, por favor Faça suas perguntas nos fóruns do Couchbasedeixe um comentário abaixo, ou me envie uma mensagem no Twitter @mgroves.

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.

Deixar uma resposta