Cómo evitar la filtración de datos sensibles en API Gateway
Wei Liu
March 3, 2023
¿Por qué necesitamos proteger los datos sensibles?
Los datos sensibles, también conocidos como datos confidenciales, se refieren principalmente a información que, si se filtra, puede causar grandes complicaciones a empresas, gobiernos e individuos. Esto incluye, pero no se limita a, datos de operaciones comerciales, información de identificación personal, entre otros.
Para las empresas, los datos sensibles están directamente vinculados a la seguridad de la información. Por ejemplo, la filtración de información sensible como claves y certificados puede tener un efecto devastador en la reputación de una organización, causar pérdidas financieras e incluso resultar en responsabilidad legal.
Para los individuos, las filtraciones de datos sensibles pueden revelar desde números de seguridad social hasta información bancaria. El robo de identidad puede acosarte con publicidad, arruinar tu crédito, implicarte en problemas legales y permitir que se cometan todo tipo de fraudes bajo tu nombre.
¿Qué tipo de datos sensibles hay en la API Gateway?
Como puerta de entrada del tráfico comercial, la API gateway suele contener una gran cantidad de datos sensibles, como claves de API, tokens utilizados para autenticación, etc. Por lo tanto, mejorar la seguridad y prevenir la filtración de datos sensibles es un aspecto crítico de la API gateway, además de las funciones básicas de balanceo de carga y enrutamiento de tráfico.
¿Cómo protege la API Gateway los datos sensibles?
La idea general es la siguiente:
-
Colocar los datos sensibles en un área protegida y controlar estrictamente los permisos de acceso.
-
Mejorar el sistema de control de riesgos para gestionar el riesgo de comportamientos anómalos y el cumplimiento comercial.
-
Desensibilizar o encriptar los datos sensibles.
A continuación, tomaremos Apache APISIX como ejemplo para mostrar cómo proteger los datos sensibles en la API Gateway.
Práctica de Apache APISIX en la protección de datos privados
Apache APISIX es un proyecto de código abierto de la Apache Software Foundation y actualmente es el proyecto de gateway de código abierto más activo. Como un API gateway de código abierto completamente dinámico, en tiempo real y de alto rendimiento, Apache APISIX ofrece funciones avanzadas de gestión de tráfico como balanceo de carga, upstream dinámico, lanzamiento canario, corte de circuito, autenticación, observabilidad, etc.
Además, los usuarios pueden personalizar las funciones de Apache APISIX escribiendo sus propios plugins. Gracias a la comunidad activa y al creciente número de desarrolladores, la cantidad de plugins de Apache APISIX aumenta cada día, algunos de los cuales contienen información sensible, como las configuraciones secret
y private_key
del plugin jwt-auth. Necesitamos utilizar almacenamiento encriptado para evitar que estos datos sean obtenidos ilegalmente.
Para mejorar la seguridad de APISIX y proteger mejor la privacidad de los usuarios, APISIX introdujo la función Global Data Encryption
en la versión 3.1.0. Cuando los desarrolladores crean nuevos plugins con esta función, solo necesitan especificar los datos que deben encriptarse en el esquema. Luego, APISIX los encriptará y almacenará automáticamente cuando se escriban en el plano de control, y los desencriptará automáticamente cuando el plano de datos los lea.
Veamos un ejemplo concreto.
Cuando la encriptación de datos no está habilitada
- Enviar configuración
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"
}
}
}'
- Estado de los datos sensibles en etcd
etcdctl get /apisix/consumers/foo
{"username":"foo","update_time":1675414313,"create_time":1674009211,"plugins":{"basic-auth":{"username":"foo","password":"bar"}} }
Podemos ver que el campo password
se almacena en texto plano y puede ser comprometido fácilmente.
Cuando la encriptación de datos está habilitada
- Habilitar
data_encryption
enconfig.yaml
:
apisix:
data_encryption:
enable: true
keyring:
-edd1c9f0985e76a2
- Habilitar plugins que soportan encriptación de datos, aquí usamos
basic-auth
como ejemplo
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"
}
}
}'
- Probar el 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
}
}
}'
Acceso exitoso
curl -i -ufoo:bar http://127.0.0.1:9080/get
HTTP/1.1 200 OK
...
Acceso fallido, error de contraseña
curl -i -ufoo:test http://127.0.0.1:9080/get
HTTP/1.1 401 Unauthorized
...
{"message":"Invalid user authorization"}
El plugin funciona correctamente
- Estado de los datos sensibles en etcd
etcdctl get /apisix/consumers/foo
{"create_time":1674009211,"update_time":1674009211,"plugins":{"basic-auth":{"password":"+kOEVUuRc5rC5ZwvvAMLwg=","username":"foo"}},"username": "foo"}
Podemos ver que el campo password
ha sido encriptado con éxito, incluso si los datos se filtran, los hackers no podrán utilizarlos.
Resumen
La API gateway contiene muchos datos sensibles, por lo que es necesario tomar medidas efectivas para protegerlos. Este artículo utiliza APISIX como ejemplo para mostrar cómo proteger los datos sensibles con la función Global Data Encryption
, asegurando que no se almacene ningún dato sensible en texto plano. De esta manera, incluso si todos los datos almacenados en etcd se ven comprometidos, no se producirá una filtración de datos sensibles, mejorando así la seguridad de APISIX.
Además de encriptar datos sensibles, APISIX también permite almacenar información sensible directamente en servicios de terceros, es decir, Secret Manager, lo que mejora aún más la seguridad.
Esperamos que este artículo te haya ayudado a aprender más sobre cómo proteger los datos sensibles en la API gateway y garantizar la seguridad de la información en los negocios.