Como Evitar o Vazamento de Dados Sensíveis no API Gateway

Wei Liu

March 3, 2023

Technology

Por que Precisamos Proteger Dados Sensíveis

Dados sensíveis, também conhecidos como dados confidenciais, referem-se principalmente a dados que podem causar grandes complicações para empresas, governos e indivíduos quando vazados, incluindo, mas não se limitando a, dados de operações comerciais, informações de identidade pessoal, etc.

Para as empresas, os dados sensíveis estão diretamente ligados à segurança da informação. Por exemplo, o vazamento de informações sensíveis, como chaves e certificados, pode ter um efeito devastador na reputação de uma organização, causar perdas financeiras e até resultar em responsabilidade legal.

Para os indivíduos, o vazamento de dados sensíveis pode revelar desde números de previdência social até informações bancárias. O roubo de sua identidade pode resultar em assédio com anúncios, arruinar seu crédito, causar problemas legais e permitir que fraudes sejam cometidas em seu nome.

Que Tipo de Dados Sensíveis Está no Gateway de API

Como a entrada do tráfego de negócios, o gateway de API frequentemente contém uma grande quantidade de dados sensíveis, como chaves de API, tokens usados para autenticação, etc. Portanto, melhorar a segurança e evitar o vazamento de dados sensíveis também é um aspecto crítico do gateway de API, além das funcionalidades básicas de balanceamento de carga e roteamento de tráfego.

Dados Sensíveis

Como o Gateway de API Protege Dados Sensíveis

A ideia geral é a seguinte:

  1. Colocar os dados sensíveis em uma área protegida e controlar estritamente as permissões de acesso.

  2. Melhorar o sistema de controle de riscos para gerenciar o risco de comportamento anormal e conformidade comercial.

  3. Dessensibilizar ou criptografar os dados sensíveis.

A seguir, usaremos o Apache APISIX como exemplo para mostrar como proteger dados sensíveis no gateway de API.

Prática do Apache APISIX na Proteção de Dados Privados

Apache APISIX é um projeto de código aberto da Apache Software Foundation e atualmente é o projeto de gateway de código aberto mais ativo. Como um gateway de API totalmente dinâmico, em tempo real e de alto desempenho, o Apache APISIX oferece recursos avançados de gerenciamento de tráfego, como balanceamento de carga, upstream dinâmico, lançamento canário, circuit breaker, autenticação, observabilidade, etc.

Além disso, os usuários podem personalizar as funcionalidades do Apache APISIX escrevendo seus próprios plugins. Graças à comunidade ativa e ao crescente número de desenvolvedores, o número de plugins do Apache APISIX aumenta diariamente, alguns dos quais contêm informações sensíveis, como as configurações secret e private_key do plugin jwt-auth. Precisamos usar armazenamento criptografado para evitar que esses dados sejam obtidos ilegalmente.

Para aumentar a segurança do APISIX e proteger melhor a privacidade dos usuários, o APISIX introduziu a função Global Data Encryption na versão 3.1.0. Quando os desenvolvedores criam novos plugins com essa função, eles só precisam especificar os dados a serem criptografados no schema. O APISIX criptografa e armazena automaticamente esses dados ao escrever no plano de controle e os descriptografa automaticamente quando o plano de dados os lê.

Criptografia Global de Dados

Vamos ver um exemplo concreto.

Quando a Criptografia de Dados Não Está Ativada

  1. Enviar configuração
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
     "username": "foo",
     "plugins": {
         "basic-auth": {
             "username": "foo",
             "password": "bar"
         }
     }
}'
  1. O estado dos dados sensíveis no etcd
etcdctl get /apisix/consumers/foo
{"username":"foo","update_time":1675414313,"create_time":1674009211,"plugins":{"basic-auth":{"username":"foo","password":"bar"}} }

Podemos ver que o campo password está armazenado em texto claro e pode ser comprometido facilmente.

Quando a Criptografia de Dados Está Ativada

  1. Ativar data_encryption no config.yaml:
apisix:
     data_encryption:
     enable: true
     keyring:
         -edd1c9f0985e76a2
  1. Ativar plugins que suportam criptografia de dados, aqui usamos basic-auth como exemplo
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
     "username": "foo",
     "plugins": {
         "basic-auth": {
             "username": "foo",
             "password": "bar"
         }
     }
}'
  1. Testar o plugin
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
     "methods": ["GET"],
     "uri": "/get",
     "plugins": {
         "basic-auth": {}
     },
     "upstream": {
         "type": "roundrobin",
         "nodes": {
             "httpbin.org": 1
         }
     }
}'

Acesso bem-sucedido

curl -i -ufoo:bar http://127.0.0.1:9080/get
HTTP/1.1 200 OK
...

Acesso falhou, senha incorreta

curl -i -ufoo:test http://127.0.0.1:9080/get
HTTP/1.1 401 Unauthorized
...
{"message":"Invalid user authorization"}

O plugin está funcionando corretamente.

  1. O estado dos dados sensíveis no etcd
etcdctl get /apisix/consumers/foo
{"create_time":1674009211,"update_time":1674009211,"plugins":{"basic-auth":{"password":"+kOEVUuRc5rC5ZwvvAMLwg=","username":"foo"}},"username": "foo"}

Podemos ver que o campo password foi criptografado com sucesso, mesmo que os dados sejam vazados, hackers não poderão usá-los.

Resumo

O gateway de API contém muitos dados sensíveis, por isso é necessário tomar medidas eficazes para proteger esses dados. Este artigo usa o APISIX como exemplo para mostrar como proteger dados sensíveis com a função Global Data Encryption, garantindo que nenhum dado sensível seja armazenado em texto claro. Assim, mesmo que todos os dados armazenados no etcd sejam comprometidos, não haverá vazamento de dados sensíveis, melhorando efetivamente a segurança do APISIX.

Além disso, além de criptografar dados sensíveis, o APISIX também suporta colocar informações sensíveis diretamente em serviços de terceiros, ou seja, Secret Manager, o que aumenta ainda mais a segurança.

Espero que este artigo ajude você a aprender mais sobre como proteger dados sensíveis no gateway de API e garantir a segurança da informação nos negócios.

Tags: