Armazenar informações confidenciais em um banco de dados sem criptografia não é bom, mas você já fez isso por acidente devido a erros no código do aplicativo ou a uma configuração incorreta no banco de dados? E se houvesse uma maneira de receber notificações sempre que algo sensível fosse detectado, para que uma ação imediata pudesse ser tomada?

Veremos como aproveitar o Eventos do Couchbase para escrever funções JavaScript que detectarão alterações em documentos à medida que elas ocorrerem. Em particular, veremos se os números de previdência social estão aparecendo nos documentos, quando não deveriam estar.

No futuro, é importante observar que esse é apenas um dos muitos casos de uso possíveis quando se trata de eventos em Couchbase. O serviço Eventing está disponível a partir de Servidor Couchbase 5.5 que acaba de ser lançado.

Observe que a construção N1QL ainda está em desenvolvimento. Esse recurso destina-se apenas a fins de desenvolvimento e não deve ser usado em ambientes de produção.

Criação de uma API RESTful com Node.js e Express Framework

Neste exemplo, não enviaremos notificações de fato. Essa é uma nova lata de vermes. Em vez disso, criaremos uma API de amostra para que o banco de dados faça ping sempre que uma função for acionada. Essa API imprimirá uma mensagem, mas, na realidade, você faria com que ela enviasse uma notificação push ou um e-mail.

Crie um novo diretório em algum lugar em seu computador e execute o seguinte a partir desse diretório:

O comando acima criará um novo projeto Node.js, mais especificamente um projeto package.json arquivo. Nossa API não precisará usar o Couchbase para este exemplo, mas precisaremos de uma estrutura para receber solicitações HTTP.

No projeto, execute o seguinte comando:

O comando acima instalará o Express, bem como um middleware para aceitar corpos de solicitação no formato JSON.

Agora crie um app.js em seu projeto e inclua o seguinte código JavaScript:

A ênfase deste tutorial não é criar uma API com o Node.js, portanto, não vou me aprofundar muito nisso. Basicamente, estamos configurando um único endpoint de API, analisando os dados que chegam e imprimindo-os no console. Isso pode ser feito com qualquer tecnologia, não é específico do Node.js e, na realidade, você provavelmente enviaria algum tipo de mensagem quando o endpoint fosse acionado.

Agora podemos nos concentrar no que importa, as funções do Couchbase Server.

Criação de uma função para ouvir alterações em documentos NoSQL

Como eu disse anteriormente, o serviço Eventing está disponível a partir do Couchbase 5.5, que acaba de ser lançado.

Para ter sucesso com o serviço Eventing, no momento, você precisará de dois Buckets.

Couchbase Eventing Buckets

Em meu exemplo, tenho um exemplo Balde e um exemplo de evento Bucket. Ambos são Buckets padrão, mas um será usado para armazenar metadados.

Como faremos solicitações do Couchbase Server para nossa API de notificação, precisamos configurar uma lista de permissões porque, por padrão, nenhuma solicitação pode sair do Couchbase Server por motivos de segurança.

Couchbase N1QL Whitelist for cURL

No Configurações do painel do Couchbase, procure a tag Configurações avançadas do N1QL seção. Estou executando o Couchbase e a API localmente, portanto, só preciso adicionar o host e a porta. Suas configurações podem ser ligeiramente diferentes.

Agora podemos criar a função que ficará atenta aos dados confidenciais.

Couchbase Function

Ao adicionar uma nova função, preencha as informações para que correspondam aos detalhes do Bucket. A lógica para conduzir a função virá em seguida.

Com a função disponível, queremos editar o JavaScript. Por padrão, você deve ver algo semelhante ao seguinte:

Nosso objetivo é acionar uma função quando um documento for atualizado, em vez de excluído. Várias coisas precisarão acontecer.

  1. Verificar se criamos ou alteramos um pessoa documento.
  2. Veja o ssn do documento e verifique se uma expressão regular pode validá-la como um número de previdência social.
  3. Enviar uma solicitação cURL para uma API.

O código que explica as etapas acima pode ser visto abaixo:

Observe que estamos usando uma consulta N1QL para emitir a solicitação cURL. Essa não é a única maneira, mas é uma opção que pode ser lida na seção Documentação do N1QL.

Em nosso exemplo, em vez de enviar o próprio documento à nossa API e expor ainda mais o número do seguro social, enviamos as meta informações que incluem a chave do documento. Assim, o destinatário pode simplesmente procurar o documento com base na chave.

Conclusão

Você acabou de ver como usar o serviço Eventing do Couchbase para criar funções e detectar informações confidenciais, como números de previdência social. Você pode criar funções para alterar dados no banco de dados ou para enviar notificações, como demonstrado neste exemplo.

Se você tiver interesse em saber mais sobre o serviço Eventing, consulte a documentação por meio da página Portal do desenvolvedor do Couchbase ou leia o novo anúncio de serviço aqui. Saiba mais sobre outros recursos disponíveis no Lançamento do Couchbase Server 5.5.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixar uma resposta