Tema representativo de entrevista

Entrevista de diseño de sistemas: ¿Cómo diseñarías un plano de control de rotación de secretos multiinquilino?

Diseño de sistemasDifícil
Equipo editorial de Offer.ccPublicado Actualizado

Pregunta

Una plataforma SaaS gestiona contraseñas de bases de datos, claves de API de terceros y claves de firma para miles de inquilinos. ¿Cómo diseñarías un plano de control de rotación automatizado que verifique a los consumidores, despliegue los cambios gradualmente, admita reversiones y revoque credenciales filtradas sin exponer los valores de los secretos?

Planteamiento y contexto adecuado

Esta es una pregunta de diseño de sistemas de seguridad. El enfoque radica en cómo un plano de control coordina las versiones de los secretos, la política del inquilino, la confirmación de los consumidores y las ventanas de despliegue, mientras que el plano de datos solo lee una versión actual autorizada. AWS demuestra el uso de usuarios alternados para reducir la interrupción en el cambio de base de datos, mientras que Google Secret Manager utiliza versiones inmutables y alias para la vinculación y el despliegue gradual. Abstrae esos patrones en un flujo de trabajo multiinquilino auditable en lugar de copiar una API de nube específica.

Qué evalúa el entrevistador

  • Si modelas inquilinos, secretos, versiones, consumidores y políticas mientras previenes el acceso entre inquilinos.
  • Si diseñas versiones superpuestas, verificación de estado, reintentos idempotentes y promociones reversibles.
  • Si distingues entre rotación programada, revocación de emergencia tras una exposición y destrucción.
  • Si puedes explicar las compensaciones entre la disponibilidad del plano de control, el almacenamiento en caché, la auditoría y las operaciones.

Aclaraciones para preguntar primero

Confirma los tipos de secretos, las formas de los consumidores, la cantidad de inquilinos, la frecuencia de rotación, la superposición máxima y la interrupción tolerada. Pregunta si la plataforma genera valores, si se deben actualizar las API de terceros, si los consumidores admiten recarga en caliente (hot-reload) y si se requiere aislamiento regional, retención, aprobación humana o revocación de emergencia. Establece suposiciones cuando falten datos de escala y separa los valores de los secretos del almacenamiento de metadatos.

Marco de respuesta de 30 segundos

Cubriría el registro de políticas, la generación de nuevas versiones, la distribución por etapas, la promoción verificada y, luego, la revocación y auditoría. Cada inquilino obtiene un espacio de nombres de secretos y una política de autorización aislados; los valores residen únicamente en un KMS o administrador de secretos dedicado. El plano de control crea una versión pending, solicita a los consumidores que la carguen y reporten su estado, y luego mueve un alias a current. La versión anterior permanece durante una ventana de superposición controlada. Las fallas pausan el trabajo y restauran el alias; la exposición utiliza una ruta de emergencia más rápida. Cada paso cuenta con idempotencia, aprobación y registros de auditoría.

Respuesta detallada paso a paso

1. Modelar los límites de inquilinos, secretos y políticas

Los metadatos almacenan el inquilino, el propósito, el algoritmo, la versión, el consumidor, la programación, la región, el propietario y el estado. El KMS o un administrador de secretos dedicado conserva los valores; la base de datos de la aplicación almacena solo referencias y hashes. La autorización está delimitada por el inquilino, el propósito y la identidad del consumidor, y los operadores no pueden leer el texto plano de forma predeterminada. La política declara el período de rotación, la superposición mínima, los sondeos de verificación, el límite de reintentos y los requisitos de aprobación.

2. Generar y aislar una versión pendiente

El programador crea un trabajo de rotación idempotente, genera una versión pending y registra su motivo, la versión principal y la expiración. Los generadores y los distribuidores están separados, y los registros nunca contienen valores. Las actualizaciones de terceros utilizan el mínimo privilegio y credenciales de corta duración. La estrategia de usuarios alternados de AWS ilustra la preparación de una credencial de respaldo y su validación antes del cambio definitivo, pero cada dependencia necesita su propio adaptador.

3. Distribuir gradualmente y verificar a los consumidores

Los consumidores obtienen referencias de versiones a través de autorización de corta duración, nunca a través de registros o variables de entorno que contengan texto plano. Comienza con una cohorte pequeña de inquilinos o instancias y luego expándela. La verificación comprueba la autenticación, los sondeos de negocio, la tasa de errores y la latencia. Google advierte que usar directamente un alias latest en producción puede propagar de inmediato un valor erróneo, por lo que el plano de control debe admitir alias fijados, despliegue particionado y promoción explícita.

4. Cambiar de forma atómica, superponer y revertir

Mueve el alias current de la versión antigua a la verificada y mantén previous para reversiones. La promoción debe ser condicional para que las rotaciones concurrentes no se sobrescriban entre sí. La ventana de superposición permite que las credenciales antiguas funcionen brevemente, pero necesita una acción explícita de expiración y revocación. Las fallas de los consumidores, las regresiones en los sondeos o el éxito parcial con terceros pausan el trabajo, restauran el alias y escalan el problema.

5. Revocar con urgencia, recuperar y observar

Tras una exposición o sospecha de abuso, omite la programación normal: congela la versión anterior, genera un reemplazo, actualiza las dependencias y amplía la verificación. Eliminar una versión en el administrador es insuficiente si un servicio externo aún acepta la credencial antigua. Rastrea el éxito de la rotación, el tiempo de verificación, la duración de la superposición, las reversiones, las versiones expiradas, las denegaciones entre inquilinos, las alertas de acceso a texto plano y el tiempo de respuesta ante exposiciones. Las copias de seguridad retienen únicamente material cifrado y metadatos de recuperación; los simulacros verifican el aislamiento de inquilinos y la consistencia de los alias.

Ejemplo de respuesta de alta calidad

Aclararía los tipos de secretos, la capacidad de recarga en caliente de los consumidores, la escala de inquilinos, la ventana de superposición y los objetivos de revocación de emergencia. El inquilino, el propósito y el consumidor forman un dominio de autorización aislado; los valores permanecen en el KMS o en un administrador de secretos y la base de datos de la aplicación almacena referencias. Un programador crea una versión pending idempotente. Los distribuidores permiten que una cohorte pequeña la cargue y reporte los resultados de autenticación, sondeos de negocio y latencia. Tras la aprobación, una actualización condicional mueve current, mientras que previous permanece durante una ventana de reversión delimitada. Las fallas o el éxito parcial pausan y restauran el alias. La exposición utiliza revocación inmediata. La generación, el acceso, la promoción, la reversión y las aprobaciones humanas se envían a registros de auditoría a prueba de manipulaciones, con métricas segmentadas por inquilino y propósito del secreto.

Errores comunes

  • Almacenar todos los valores en una sola base de datos o registro e ignorar el aislamiento por inquilino y propósito.
  • Sobrescribir el valor antiguo inmediatamente en lugar de modelar pending, current y previous.
  • Probar solo la escritura en el administrador de secretos en lugar de probar con consumidores reales y sondeos de negocio.
  • Confiar en la propagación de latest sin partición, pausa ni reversión.
  • Tratar la rotación programada y la revocación de emergencia como si fueran el mismo flujo de trabajo lento.
  • Eliminar el registro en la plataforma sin revocar la credencial antigua en los servicios externos o cachés.

Preguntas de seguimiento y respuestas

¿Qué pasa si un consumidor no admite recarga en caliente?

Vincula la promoción a un reinicio o despliegue reversible, valida una cohorte pequeña de instancias y luego expándela. Registra la versión de la instancia y la confirmación; "notificado" no significa "efectivo".

¿Qué ocurre si dos trabajos de rotación se ejecutan simultáneamente?

Utiliza un lease (concesión) por inquilino y secreto o un número de generación condicional; solo la generación actual puede promover un alias. Las claves de idempotencia absorben solicitudes duplicadas, mientras que los trabajos expirados se pausan para confirmación humana.

¿Qué sucede si una actualización de terceros tiene éxito pero la persistencia local falla?

Trata la actualización externa como reintentable pero no como algo que se pueda reproducir a ciegas. Guarda la prueba de la solicitud y un marcador de idempotencia, consulta el estado externo antes de compensar y congela la promoción cuando el estado sea incierto para que un operador pueda reconciliarlo.

¿Cómo se elige la ventana de superposición?

Mide el tiempo de caché del consumidor, la propagación del despliegue y la duración máxima de las solicitudes en lugar de adivinar. Una superposición más prolongada incrementa la exposición; una superposición más corta aumenta el riesgo de interrupciones, por lo que se debe clasificar según el propósito del secreto.

¿Cómo opera el plano de datos durante una falla del plano de control?

Almacena en caché la última referencia de versión aprobada y la política de expiración. Durante una interrupción, rechaza nuevas promociones pero continúa con la última configuración segura. Tras la recuperación, reconcilia el estado faltante utilizando números de generación y eventos de auditoría.

Fuentes públicas

Preguntas relacionadas

Herramienta de entrevista relacionada

Usa Resolver para una respuesta de diseño de sistemas

Aclara primero los requisitos y luego avanza a través de la escala, la arquitectura, la elección de componentes y las compensaciones (trade-offs).

Ver la herramienta