A segurança dos dados é um aspecto importante de toda plataforma de dados moderna. Com as arquiteturas baseadas em microsserviços se tornando cada vez mais um padrão comum em todos os aplicativos de alta escala, os mecanismos de autenticação baseados em senhas existentes para autenticação de usuários são difíceis de gerenciar em escala, sem falar no fato de que as senhas são difíceis de lembrar ou podem ser quebradas. Como solução, o Couchbase Server 5.0 introduziu a autenticação por certificado X.509.
Servidor Couchbase 5.5 acrescenta outros aprimoramentos para oferecer suporte a todos os serviços e interfaces, incluindo N1QL, Indexação, XDCR, Pesquisa e até mesmo a interface do usuário da Web do Couchbase e os pontos de extremidade REST.
O que é autenticação baseada em certificado?
Em poucas palavras, "autenticação" é o processo de verificar se um usuário é quem ele diz ser. No mundo da tecnologia, isso pode ser feito de várias maneiras. A autenticação baseada em certificado permite que os usuários acessem um servidor com segurança trocando um certificado digital em vez de um nome de usuário e uma senha. Isso significa que o cliente não está enviando um nome de usuário ou senha para o servidor, o que ajuda na impedindo ataques de phishing, registro de pressionamento de teclas e ataques man-in-the-middle (MITM), entre outros problemas comuns com a autenticação baseada em senha.
Handshake TLS cliente-servidor ilustrando a autenticação mútua
A autenticação baseada em certificado é criada com o uso do padrão de infraestrutura de chave pública (PKI) X.509. A autenticação por certificado oferece maior segurança ao autenticar mutuamente o cliente, usando uma parte confiável (a autoridade de certificação (CA)) e o servidor durante o handshake do TLS. Como o certificado é assinado, só é possível conectar-se ao servidor real e gerenciar centralmente os certificados usando a CA para rotação ou revogação.
Identificação do usuário em um certificado
Se estiver se perguntando como funciona a autenticação do certificado x509, ele precisa ter vários campos, como data de validade, nome CN, nome san etc. Dependendo da sua organização e das políticas, diferentes campos serão usados para codificar o nome/id do usuário. Por exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Certificado: Dados: Versão: 3 (0x2) Em série Número: 2 (0x2) Assinatura Algoritmo: sha1WithRSAEncryption Emissor: O=www.freelancer.org, OU=freelancer Validade Não Antes de: Abril 27 10:54:40 2012 GMT Não Depois de : Abril 25 10:54:40 2022 GMT Assunto: OU=freelancer, CN=couchbase-bob/emailAddress=bob@freelancer.org Assunto Público Chave Informações: Público Chave Algoritmo: rsaEncryption Público-Chave: (4096 bit) Módulo: ... ... |
Para identificar o usuário, o Couchbase está configurado para analisar um ou mais campos e extrair o usuário. Isso é feito usando um caminho, um prefixo e um delimitador. O caminho descreve em que parte do certificado o nome de usuário deve ser obtido, o prefixo retira o início do nome de usuário e o delimitador termina o nome de usuário. No exemplo acima, para extrair um usuário chamado "bob" que você usaria:
1 2 3 |
"caminho": "subject.CN" "prefixo": "couchbase-" "delimiter" (delimitador): "/" |
Há um limite máximo de 10 expressões de caminho no Couchbase, sem que duas expressões tenham os mesmos campos de caminho e prefixo, e é obrigatório especificar todos os campos na expressão. O Couchbase tenta cada expressão de caminho no certificado, uma a uma, na ordem especificada, e usa a primeira que consegue extrair com êxito uma cadeia de caracteres de nome de usuário não vazia. Se todas as expressões de caminho não conseguirem extrair a cadeia de caracteres do usuário, as tentativas de autenticação com certificados X.509 também falharão.
Configuração do servidor Couchbase
Em Couchbase Server 5.5, a autenticação baseada em certificado é desativada por padrão, dependendo, em vez disso, de métodos de autenticação baseados em usuário/passagem local ou LDAP/PAM.
Quando "Require Client Certificate" (Exigir certificado do cliente) estiver definido como "Enable" (Ativar), o Couchbase Server aceitará o certificado fornecido e tentará se autenticar com base nele. Se isso falhar, o Couchbase Server voltará a usar os métodos de autenticação baseados em usuário/passagem ou LDAP/PAM.
Quando "ReqSe a opção "User Client Certificate" for definida como "Mandatory", um certificado X.509 deverá ser fornecido, caso contrário, a autenticação falhará.
Essas configurações também podem ser fornecidas por meio da CLI ou da API REST.
Autorização do usuário
Depois que um usuário é "autenticado" (ele é quem diz ser), ele ainda precisa ser "autorizado", que é o processo de determinar o que ele tem permissão para fazer.
No Couchbase Server, isso é feito por Atribuição de uma ou mais funções a cada usuário.
Configuração de clientes para autenticação baseada em certificado
O recurso de autenticação baseado em certificado X.509 é compatível com todos os clientes SDK. No entanto, somente as versões mais recentes oferecem suporte a ele, portanto, verifique as notas de versão de suas versões do SDK.
O X.509 é o padrão oficial para certificados de chave pública e o SSL/TLS se baseia nesse padrão. Em seu cliente, você deve usar um certificado x.509 válido que seja gerado e assinado pela mesma autoridade de certificação (CA) raiz que o servidor.
Os navegadores da Web mais comuns oferecem suporte à autenticação do cliente desde os primeiros dias do TLS. Você pode configurar o certificado do cliente no armazenamento de certificados do navegador e estará pronto para começar!
Todas as ferramentas do Couchbase, como couchbase-cli e o shell N1QL, também estão sendo atualizadas para oferecer suporte à autenticação X.509.
Conclusão
Embora seja um pouco trabalhoso configurar esse tipo de autenticação, ele é muito seguro e mais simples de gerenciar em escala. Por favor download do Couchbase Server 5.5 para experimentar. Aguardamos seus comentários!
Informações úteis. O MA-SSL também é compatível com o servidor Couchbase 4.5?
Oi Vidhya, obrigado pelo seu comentário!
O MA-SSL não era compatível antes da versão 5.5, pois não oferecia suporte à _autenticação_ por meio de certificados, apenas à criptografia.
Espero que isso ajude
Perry