Comment empêcher la fuite de données sensibles dans une passerelle API

Wei Liu

March 3, 2023

Technology

Pourquoi avons-nous besoin de protéger les données sensibles

Les données sensibles, également appelées données confidentielles, font principalement référence aux données qui peuvent causer d'énormes complications aux entreprises, aux gouvernements et aux individus en cas de fuite, y compris mais sans s'y limiter, les données d'exploitation des entreprises, les informations d'identité personnelle, etc.

Pour les entreprises, les données sensibles sont directement liées à la sécurité de l'information des entreprises. Par exemple, la fuite d'informations sensibles telles que les clés et les certificats peut avoir un effet dévastateur sur la réputation d'une organisation, entraîner des pertes financières et même engager la responsabilité légale.

Pour les individus, les fuites de données sensibles peuvent révéler tout, des numéros de sécurité sociale aux informations bancaires. Le vol de votre identité peut vous harceler avec des publicités, ruiner votre crédit, vous impliquer dans des problèmes juridiques et engager toutes sortes de fraudes en votre nom.

Quel type de données sensibles se trouve dans la passerelle API

En tant qu'entrée du trafic commercial, la passerelle API contient souvent une grande quantité de données sensibles, telles que les clés API, les jetons utilisés pour l'authentification, etc. Par conséquent, améliorer la sécurité et empêcher la fuite de données sensibles est également un aspect critique de la passerelle API, en plus des fonctionnalités de base d'équilibrage de charge et de routage du trafic.

Données sensibles

Comment la passerelle API protège-t-elle les données sensibles

L'idée générale est la suivante :

  1. Placer les données sensibles dans une zone protégée et contrôler strictement les droits d'accès

  2. Améliorer le système de contrôle des risques pour gérer le risque de comportement anormal et la conformité commerciale

  3. Désensibiliser ou crypter les données sensibles

Ensuite, nous prendrons Apache APISIX comme exemple pour montrer comment protéger les données sensibles dans une passerelle API.

Pratique d'Apache APISIX dans la protection des données privées

Apache APISIX est un projet open source de la Fondation Apache Software et est actuellement le projet de passerelle open source le plus actif. En tant que passerelle API open source entièrement dynamique, en temps réel et haute performance, Apache APISIX fournit des fonctionnalités riches de gestion du trafic comme l'équilibrage de charge, l'amont dynamique, la publication canari, la rupture de circuit, l'authentification, l'observabilité, etc.

De plus, les utilisateurs peuvent personnaliser les fonctionnalités d'Apache APISIX en écrivant leurs propres plugins. Grâce à la communauté active et au nombre croissant de développeurs, le nombre de plugins Apache APISIX augmente chaque jour, certains contenant des informations sensibles, comme les configurations secret et private_key du plugin jwt-auth. Nous devons utiliser un stockage crypté pour empêcher ces données d'être obtenues illégalement.

Afin d'améliorer la sécurité d'APISIX et de mieux protéger la vie privée des utilisateurs, APISIX a introduit la fonction Global Data Encryption dans la version 3.1.0. Lorsque les développeurs développent de nouveaux plugins avec cette fonction, ils n'ont qu'à spécifier les données à crypter dans le schéma, puis APISIX les crypte et les stocke automatiquement lors de l'écriture dans le plan de contrôle, et les décrypte automatiquement lors de la lecture par le plan de données.

Cryptage global des données

Regardons un exemple concret.

Lorsque le cryptage des données n'est pas activé

  1. Envoyer la configuration
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. L'état des données sensibles dans etcd
etcdctl get /apisix/consumers/foo
{"username":"foo","update_time":1675414313,"create_time":1674009211,"plugins":{"basic-auth":{"username":"foo","password":"bar"}} }

Nous pouvons voir que le champ password est stocké en texte clair, et il peut être compromis facilement

Lorsque le cryptage des données est activé

  1. Activer data_encryption dans config.yaml :
apisix:
     data_encryption:
     enable: true
     keyring:
         -edd1c9f0985e76a2
  1. Activer les plugins qui prennent en charge le cryptage des données, ici nous utilisons basic-auth comme exemple
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. Tester le 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
         }
     }
}'

Accès réussi

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

Accès échoué, mot de passe incorrect

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

Le plugin fonctionne correctement

  1. L'état des données sensibles dans etcd
etcdctl get /apisix/consumers/foo
{"create_time":1674009211,"update_time":1674009211,"plugins":{"basic-auth":{"password":"+kOEVUuRc5rC5ZwvvAMLwg=","username":"foo"}},"username": "foo"}

Nous pouvons voir que le champ password a été crypté avec succès, même si les données sont divulguées, les pirates ne peuvent pas les utiliser.

Résumé

La passerelle API contient beaucoup de données sensibles, il est donc nécessaire de prendre des mesures efficaces pour protéger ces données. Cet article utilise APISIX comme exemple pour présenter comment protéger les données sensibles avec la fonction Global Data Encryption afin de s'assurer qu'aucune donnée sensible ne soit stockée en texte clair, de sorte que même si toutes les données stockées dans etcd sont compromises, cela ne causera pas de fuite de données sensibles, améliorant ainsi efficacement la sécurité d'APISIX.

En même temps, en plus de crypter les données sensibles, APISIX prend également en charge la mise des informations sensibles directement dans des services tiers, à savoir Secret Manager, ce qui améliore encore la sécurité.

J'espère que cet article vous aidera à en apprendre davantage sur la manière de protéger les données sensibles dans la passerelle API et d'assurer la sécurité de l'information dans les entreprises.

Tags: