Tema 12

12. Service discovery, configuración centralizada y riesgos de exposición

En microservicios no basta con que los componentes existan: también deben encontrarse, configurarse y adaptarse en tiempo de ejecución. Ese proceso mejora escalabilidad y flexibilidad, pero introduce nuevas superficies de ataque si el descubrimiento de servicios o la configuración se diseñan sin controles claros.

Objetivo Gestionar descubrimiento y configuración sin ampliar exposición
Enfoque Registro, metadatos y control de cambios
Resultado Reducir riesgo operacional y de confianza implícita

12.1 Introducción

En un sistema monolítico la ubicación de los componentes suele ser relativamente fija. En microservicios eso cambia. Los servicios se escalan, se recrean, se distribuyen entre nodos, cambian de instancia y se despliegan en entornos dinámicos. Para que la plataforma funcione, los componentes necesitan mecanismos para descubrir a otros servicios y obtener su configuración de manera consistente.

Esto aporta elasticidad y simplifica operación, pero también crea puntos sensibles. Un registro de servicios alterado, una configuración mal distribuida o un endpoint interno accidentalmente expuesto pueden afectar disponibilidad, integridad o confidencialidad del sistema completo.

Por eso el descubrimiento de servicios y la configuración centralizada deben considerarse parte del diseño de seguridad, no simples detalles de infraestructura.

12.2 Qué es service discovery

Service discovery es el mecanismo por el cual un componente puede localizar a otro sin depender de direcciones estáticas preconfiguradas. En lugar de codificar IPs o rutas rígidas, los servicios consultan un registro, una capa de plataforma o un sistema de resolución que les indica dónde está disponible el destino.

Esto es esencial en entornos con escalado dinámico y despliegues frecuentes, pero introduce una dependencia de confianza: si el mecanismo de descubrimiento falla o es manipulado, el tráfico puede desviarse, interrumpirse o dirigirse hacia destinos no esperados.

12.3 Qué entendemos por configuración centralizada

La configuración centralizada busca evitar que cada servicio tenga parámetros dispersos, manuales o inconsistentes en cada instancia. En su forma madura, permite distribuir parámetros operativos de manera controlada, versionada y observable.

Esa configuración puede incluir:

  • Endpoints y nombres lógicos de servicios.
  • Feature flags y toggles operativos.
  • Parámetros de timeouts, retries o límites.
  • Configuración específica por entorno o dominio.
  • Políticas y comportamientos activables sin redeploy.
Configuración no es lo mismo que secretos. Mezclar ambos conceptos suele degradar seguridad y gobernanza.

12.4 Beneficios reales

Capacidad Qué mejora Riesgo si se gestiona mal
Discovery dinámico Escalado y reemplazo transparente de instancias Desvío de tráfico o dependencia ciega del registro
Config centralizada Consistencia entre instancias y entornos Propagación rápida de errores o configuraciones inseguras
Feature flags Control gradual de comportamiento Exposición accidental de funciones o bypass de controles

12.5 Riesgos de exposición en service discovery

Un sistema de discovery mal protegido puede convertirse en una fuente crítica de riesgo. Si cualquier actor puede registrar servicios, modificar metadatos o consultar todo el mapa interno, la arquitectura pierde control sobre su topología y su confianza interna.

  • Registro fraudulento de instancias o servicios falsos.
  • Poisoning del discovery para desviar tráfico legítimo.
  • Exposición de nombres internos, rutas o metadatos sensibles.
  • Consultas demasiado amplias sobre la topología del sistema.

12.6 Confianza implícita en metadatos

Muchos sistemas distribuidos utilizan etiquetas, metadatos o atributos de servicio para routing, políticas o decisiones operativas. Eso puede ser útil, pero también peligroso si esos metadatos se consumen sin validar su origen o sin controlar quién puede modificarlos.

Un metadato aparentemente inocente puede terminar influyendo en:

  • Selección de destino.
  • Políticas de tráfico.
  • Activación de capacidades.
  • Exposición o aislamiento de instancias.

12.7 Separar configuración de secretos

Uno de los errores más frecuentes es usar el sistema de configuración para almacenar secretos sensibles como contraseñas, claves o tokens. Aunque técnicamente sea cómodo, desde el punto de vista de seguridad suele ser una mala decisión.

La configuración operativa y los secretos tienen necesidades distintas:

  • La configuración suele requerir difusión más amplia.
  • Los secretos requieren acceso mínimo, auditoría y rotación más estricta.
  • La configuración puede tolerar mayor visibilidad interna; los secretos no.

12.8 Configuración centralizada y blast radius

Centralizar configuración mejora consistencia, pero también aumenta el impacto de un error. Una mala política, un valor mal tipeado o una bandera activada incorrectamente puede afectar simultáneamente a muchos servicios o instancias.

Por eso conviene diseñar con estas preguntas:

  • Quién puede cambiar qué parámetros.
  • Cómo se valida una configuración antes de aplicarla.
  • Si el cambio puede desplegarse gradualmente o por dominio.
  • Cómo se revierte si genera incidentes.

12.9 Feature flags y seguridad

Las feature flags son valiosas para habilitar funciones de forma gradual, pero también pueden introducir riesgo si controlan capacidades sensibles. Una mala bandera puede abrir endpoints no listos, alterar flujos de autorización o dejar visible una funcionalidad administrativa.

Cuando una flag impacta seguridad o exposición, conviene tratarla con el mismo cuidado que una política operativa crítica.

12.10 Gobernanza y versionado

La configuración y el discovery no deberían operar como cajas negras de cambios manuales. Necesitan trazabilidad, revisión y gobierno. Si no se puede responder quién cambió una ruta, cuándo se modificó un parámetro sensible o qué versión de configuración estaba activa durante un incidente, la operación se vuelve opaca.

  • Versionar cambios relevantes.
  • Revisar configuraciones sensibles antes de aplicarlas.
  • Registrar eventos de publicación, lectura y rollback.
  • Separar responsabilidades operativas y administrativas.

12.11 Resiliencia del sistema de configuración

Si el sistema de configuración central o el mecanismo de discovery caen, muchos servicios pueden quedar degradados o imposibilitados de arrancar. Por eso la seguridad también debe contemplar disponibilidad de estas piezas.

Una arquitectura madura evalúa:

  • Qué configuración debe estar disponible al inicio.
  • Qué puede cachearse localmente de forma segura.
  • Cómo se comportan los servicios ante ausencia temporal del registro.
  • Qué defaults son seguros y cuáles no.

12.12 Patrones de mala práctica

  • Guardar secretos en el mismo canal que parámetros operativos comunes.
  • Permitir que demasiados servicios o personas modifiquen el registro o la configuración.
  • Consumir cualquier metadato del discovery como si fuera confiable.
  • Exponer interfaces administrativas del config server o del registro sin aislamiento suficiente.
  • Aplicar cambios globales sin validación ni rollback preparado.
El descubrimiento dinámico no debe transformarse en confianza dinámica sin control.

12.13 Qué debes recordar de este tema

  • Service discovery y configuración centralizada son piezas de arquitectura con impacto directo en seguridad.
  • El registro de servicios y sus metadatos deben protegerse como una fuente de confianza crítica.
  • La configuración no debería mezclarse con secretos sensibles.
  • Los cambios centralizados necesitan validación, trazabilidad y rollback.
  • La comodidad operativa no justifica ampliar innecesariamente la visibilidad del mapa interno del sistema.

12.14 Conclusión

En microservicios, encontrar servicios y distribuir configuración de forma dinámica es casi inevitable. La cuestión no es evitarlo, sino hacerlo con límites claros, fuentes de verdad confiables y controles de acceso apropiados. Cuando discovery y configuración se diseñan bien, aumentan resiliencia y velocidad; cuando se diseñan mal, se convierten en multiplicadores silenciosos del riesgo.

En el próximo tema estudiaremos comunicación síncrona y asíncrona, resiliencia, timeouts y circuit breakers para analizar cómo las decisiones de interacción influyen en seguridad y estabilidad del sistema.