Servidor Couchbase

Requisitos de privacidade sem dor de cabeça

Qualquer aplicativo da Web moderno que interaja com usuários em diferentes localidades deve lidar com diferentes requisitos de privacidade e diretrizes de consentimento de dados do usuário. Isso pode ser um desafio para qualquer equipe de engenharia, independentemente de a equipe ser apenas você ou cinquenta pessoas.

Como você simplifica o processo para eliminar o incômodo e diminuir a probabilidade de não conformidade?

Neste guia, apresentaremos uma implementação que utiliza os serviços do AWS trabalhando em conjunto com o Couchbase para higienizar os dados antes que eles cheguem a um armazenamento de dados. Essa implementação simplificada pode ser utilizada em qualquer contexto e pode ser expandida para se adequar ao caso de uso que você está criando.

tl;dr Interessado em ver apenas o código junto com um README contendo instruções de implantação? Encontre tudo o que você precisa em GitHub.

Visão geral

Cenário de exemplo

Imagine uma pequena plataforma de comércio eletrônico que vende artesanatos exclusivos e feitos à mão. Esse site opera em um modelo de compra única, o que significa que os usuários não precisam criar contas ou fazer login. Os compradores simplesmente navegam pelo catálogo, selecionam os itens que desejam comprar e prosseguem para o checkout. Durante o processo de finalização da compra, eles fornecem informações essenciais, como nome completo, endereço para correspondência, endereço de cobrança, informações de pagamento, número de telefone e endereço de e-mail. Essas informações de identificação pessoal (PII) são necessárias para concluir a compra e garantir que o item seja enviado para o endereço correto.

Depois que o pedido é feito, os dados trafegam por vários microsserviços. O serviço de processamento de pedidos valida os detalhes e verifica o estoque, o serviço de pagamento trata com segurança as informações de faturamento para processar as transações e o serviço de remessa usa o endereço de correspondência fornecido para providenciar a entrega.

O site foi projetado para oferecer aos usuários uma experiência de compra fácil e contínua. Não há contas. Não há necessidade de passar por um longo processo de registro. Basta escolher o item a ser comprado, fazer o pagamento com as informações de envio e pronto. No entanto, embora o cliente tenha tido uma experiência de compra sem atritos, os dados pessoais dele não podem ter a mesma experiência sem atritos em seu aplicativo. Para manter a privacidade e estar em conformidade com as normas, esses dados de identificação pessoal devem ser higienizados antes de serem armazenados no banco de dados do histórico de compras de longo prazo.

Embora esse cenário possa parecer único, na verdade é uma situação que pode ocorrer em nossos aplicativos o tempo todo. Todo aplicativo que coleta qualquer aspecto das informações de um usuário deve garantir um consentimento rigoroso e estar em conformidade com as leis e os regulamentos de cada localidade em que opera em todo o mundo. Isso pode ser um desafio enorme, que acarreta graves ramificações se não for feito corretamente.

Fluxo de trabalho da solução

Para lidar efetivamente com os requisitos de privacidade para dados em tempo real, precisaremos aproveitar os recursos de dados em tempo real do AWS e do Couchbase para transformar os dados assim que forem criados. É legalmente desafiador armazenar dados privados, mesmo que por um momento, em um banco de dados, de acordo com as normas do GDPR. Dessa forma, não só é uma boa prática de dados adicionar os dados somente depois de terem sido higienizados, como também pode ser um requisito legal.

A solução que estamos criando aproveitará o AWS Simple Queue Service (SQS), o Elastic Container Registry (ECR) e uma função Lambda trabalhando em parceria com o Couchbase Capella, o banco de dados como serviço (DBaaS) totalmente gerenciado. Esse fluxo de trabalho pode ser implementado com qualquer remetente de mensagem para o serviço de fila, que iniciará o processo de sanitização de dados. Em outras palavras, ele é compatível com plug and play.

O fluxo de trabalho a seguir demonstra visualmente como a solução funciona.

Primeiro, qualquer remetente de mensagem envia dados para o serviço de fila. Isso aciona a função Lambda com a mensagem. A função Lambda processa e transforma os dados removendo todas as PII da mensagem. Por fim, os dados higienizados são enviados ao Couchbase para serem adicionados com segurança ao armazenamento de dados.

Agora que entendemos o fluxo de trabalho, vamos criá-lo!

Implementação

Configuração do Couchbase Capella

É gratuito se inscrever e experimentar o Couchbase Capella e, se você ainda não o fez, pode fazê-lo navegando até cloud.couchbase.com e criando uma conta usando suas credenciais do GitHub ou do Google, ou criando uma nova conta com uma combinação de endereço de e-mail e senha.

Depois de fazer isso, no painel do Capella, você criará seu primeiro banco de dados. Para fins deste passo a passo, vamos chamá-lo de anonymize_data_example (exemplo de dados anônimos).

O resumo de seu novo banco de dados será apresentado no lado esquerdo do painel. O Capella é multinuvem e pode funcionar com AWS, Google Cloud ou Azure. Para este exemplo, você fará a implementação no AWS.

Depois de criar o banco de dados, você precisa criar um arquivo balde. A balde no Couchbase é o contêiner onde os dados são armazenados. Cada item de dados, conhecido como documentoé mantido em JSON, o que torna sua sintaxe familiar para a maioria dos desenvolvedores. Você pode dar o nome que quiser ao seu bucket. No entanto, para fins deste passo a passo, vamos nomear esse bucket como exemplo de dados anônimos.

Agora que você criou o banco de dados e o bucket, está pronto para criar as credenciais de acesso ao banco de dados e obter o URL de conexão que será usado na função Lambda.

Navegue até a seção Conectar no painel do Capella e observe a seção Cadeia de conexão.

Em seguida, clique no botão Acesso ao banco de dados na seção dois. Nessa seção, você criará credenciais - um nome de usuário e uma senha - que a função Lambda usará para se autenticar no banco de dados. É possível definir o escopo das credenciais para o bucket específico que você criou ou conceder permissão para todos os buckets e bancos de dados da sua conta. De qualquer forma, você precisa garantir que ela tenha acesso de leitura e gravação.

Nesse ponto, você está pronto para criar a função Lambda que será chamada sempre que uma mensagem for recebida pelo serviço de fila.

Criação da função Lambda

Cada aplicativo terá diferentes PII que poderá coletar e, dependendo das localidades em que o aplicativo estiver operando, também poderá ter diferentes requisitos sobre o que deve ser removido antes de salvar os dados. Neste exemplo, removeremos o endereço IP e o sobrenome de cada mensagem antes de enviá-la ao Couchbase.

A função para higienizar os dados é bastante simples:

Essa função, anonymizeData (dados anônimos)será invocado no manipulador do código. Se você não estiver familiarizado com um manipulador é usada pelo AWS Lambda para processar as mensagens recebidas da fila SQS, transformar os dados e armazená-los no Couchbase. Seu código executável principal deve começar com um exports.handler.

O manipulador obtém as credenciais do Couchbase e a string de conexão das variáveis de ambiente definidas na configuração da função Lambda. Instruções detalhadas sobre a configuração de variáveis de ambiente para uma função Lambda podem ser encontradas na seção Documentação da AWS. Em seguida, a função analisa a mensagem recebida do SQS e chama a função anonymizeData (dados anônimos) nele. Por fim, ele inserções superiores os dados no bucket do Couchbase.

Para configurar a função Lambda usando a CLI do AWS, você precisa criar uma nova função Lambda e especificar a função IAM e o manipulador necessários. Veja como você pode fazer isso:

Certifique-se de substituir <your-account-id>, <your-region>e <your-lambda-execution-role> com o ID da sua conta AWS real, a região e o ARN da função IAM que você criou para a função Lambda. Esse comando configura a função Lambda para usar a imagem do Docker que você publicará no AWS ECR.

A função Lambda agora está pronta para ser empacotada em uma imagem do Docker e publicada no serviço AWS ECR.

Implementação da imagem do Docker no ECR

Para implantar a imagem do Docker no AWS ECR, começamos criando a imagem do Docker para a plataforma linux/amd64. Isso garante a compatibilidade com a arquitetura x86_64 da nossa função Lambda. Usamos um Dockerfile que instala as ferramentas e dependências necessárias, define o diretório de trabalho, copia os arquivos necessários, instala as dependências e copia o código da função Lambda. A função Dockerfile também especifica o comando para executar a função Lambda.

Aqui está o Dockerfile:

Quando o Dockerfile estiver pronto, criamos a imagem do Docker com a plataforma especificada:

Depois de criar a imagem, nós a marcamos adequadamente para o repositório AWS ECR:

Para enviar a imagem do Docker para o ECR, primeiro fazemos login no registro do ECR usando a CLI do AWS para obter as credenciais de login:

Com as credenciais instaladas, enviamos a imagem do Docker para o repositório ECR:

Por fim, atualizamos a função Lambda chamada AnonymizeDataExampleFunction (Função de exemplo de dados anônimos) para usar a nova imagem do Docker do ECR. Isso envolve especificar o URI da imagem e garantir que a função Lambda esteja configurada para executar o código da nova imagem do Docker enviada:

Ao seguir essas etapas, a imagem do Docker é implantada com êxito no AWS ECR e a função Lambda é atualizada para usar a nova imagem, permitindo que o aplicativo higienize as PII antes de armazená-las no Couchbase. Essa configuração garante que o processamento de dados esteja em conformidade com os requisitos de privacidade e, ao mesmo tempo, aproveite o poder do AWS e do Couchbase.

Configuração do serviço SQS

Para facilitar o fluxo de dados entre o remetente da mensagem e a função Lambda, precisamos configurar uma fila do Amazon SQS. A fila do SQS funcionará como um buffer que recebe e armazena mensagens até que sejam processadas pela função Lambda. Veja como você pode configurar uma fila SQS e torná-la um acionador para a função Lambda usando a CLI do AWS.

Primeiro, crie uma nova fila SQS. Essa fila receberá mensagens contendo dados do usuário do remetente da mensagem, que é o aplicativo.

Depois de criar a fila, você receberá um URL para a fila. Esse URL é necessário para enviar mensagens para a fila e configurá-la como um acionador para a função Lambda.

Em seguida, precisamos obter o ARN da fila do SQS, que é necessário para configurar permissões e acionadores. Use o comando a seguir para recuperar o ARN:

Substituir <your-region> e <your-account-id> com sua região real da AWS e ID da conta.

A saída incluirá o FilaArnque é mais ou menos assim:

Agora, precisamos conceder permissão à função Lambda para ler mensagens da fila do SQS. Crie um arquivo de política chamado lambda-sqs-policy.json com o seguinte conteúdo:

Aplique essa política à função de execução do Lambda:

Em seguida, adicione a fila SQS como um acionador para a função Lambda:

Esse comando configura a função Lambda para ser acionada por mensagens que chegam à fila do SQS.

Agora, sua função Lambda está configurada para receber todas as mensagens enviadas para o serviço de fila. O fluxo de trabalho está completo! Essa configuração garante o manuseio eficiente dos dados do usuário e, ao mesmo tempo, mantém a conformidade com os requisitos de privacidade.

Teste a implementação localmente

Para garantir que tudo funcione conforme o esperado, você mesmo pode testar o fluxo de trabalho enviando uma mensagem diretamente para a fila. Na linha de comando, execute o seguinte:

A mensagem acionará a função Lambda, que, por sua vez, adicionará os dados ao seu bucket do Couchbase depois de higienizá-los. Você pode visualizar os dados de amostra enviados na mensagem fazendo login no painel do Capella ou em seu VSCode ou Jetbrains IDE diretamente, usando suas respectivas extensões do Couchbase.

Concluindo

O trabalho de criar, implantar e manter qualquer aplicativo moderno atualmente é uma tarefa enorme. Na medida do possível, as partes dessa tarefa que não estão diretamente relacionadas ao negócio principal do aplicativo devem ser simplificadas e abstraídas para reduzir a carga cognitiva dos engenheiros, dos SREs e de todos os envolvidos. As normas de privacidade são um item importante que deve ser rigorosamente cumprido e também não deve causar grandes dores de cabeça nem aumentar a carga de trabalho.

A criação de um fluxo de trabalho automatizado do tipo plug and play que possa ser facilmente instalado entre qualquer aplicativo que interaja com informações de identificação pessoal e o banco de dados no qual os dados estão armazenados aliviará significativamente a carga cognitiva, reduzirá a carga e simplificará o processo de desenvolvimento. Com o aproveitamento conjunto do AWS e do Couchbase, você pode tornar isso possível para as suas necessidades de sanitização de dados em tempo real, garantindo assim a integridade do usuário e a produtividade da engenharia.

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

Autor

Postado por Ben Greenberg, desenvolvedor sênior evangelista

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.