Azure-sdk-for-java: [ERROR] El método KeyVaultPropertySource Class / getPropertyNames cargará todos los secretos (incluidos los secretos inhabilitados) en el almacén de claves

Creado en 13 ago. 2020  ·  10Comentarios  ·  Fuente: Azure/azure-sdk-for-java

Describe el error
Actualmente, el almacén de claves habilita la función de eliminación temporal de forma predeterminada. Si se crea / elimina el certificado, la aplicación de Jave se bloqueará porque cargó el secreto desactivado.
La clase KeyVaultPropertySource carga todos los secretos en KeyVault. No debería cargar secretos deshabilitados en el método getPropertyNames
Por cierto, la solución alternativa es purgar el certificado. Pero aún puede mejorarlo mejor en la parte del SDK porque no hay una solicitud para cargar el secreto eliminado temporalmente

Excepción o seguimiento de pila
Agregue el registro de excepciones y el seguimiento de la pila si está disponible

Reproducir
Pasos para reproducir el comportamiento:
A. Creó Certificados KeyVault (no secretos) y eliminó los Certificados después de que la aplicación Java fallara.
C. los certificados crean automáticamente un identificador secreto al crear nuevos certificados
D. Y después de eliminar el certificado, el sistema Azure DESACTIVA el identificador secreto
E. En ese caso, la aplicación Java intenta leer el secreto DISABLED en tiempo de ejecución.
I. Y luego la aplicación Java se bloqueó.
La biblioteca es com.microsoft. azure: azure-keyvault : 1.2.2
Fragmento de código
Agregue el fragmento de código que causa el problema.

@Value ("$ {cluster-app-sb-connection-string}")
String connectionString;
@Value ("$ {cluster-app.sb.topic-name}")
String topicName;
Comportamiento esperado
Una descripción clara y concisa de lo que esperaba que sucediera.

Capturas de pantalla
Si corresponde, agregue capturas de pantalla para ayudar a explicar su problema.

Configuración (complete la siguiente información):

  • SO: [p. Ej., IOS]
  • IDE: [p. Ej., IntelliJ]
  • Versión de la biblioteca utilizada

Contexto adicional
Agregue aquí cualquier otro contexto sobre el problema.

Lista de verificación de información
Por favor, asegúrese de haber agregado toda la siguiente información arriba y marque los campos obligatorios; de lo contrario, trataremos al emisor como un informe incompleto.

  • [x] Descripción del error agregada
  • [] Pasos de reproducción agregados
  • [] Información de configuración agregada
Client azure-spring azure-spring-keyvault customer-reported question

Comentario más útil

El problema se debe al funcionamiento del iniciador Spring Boot para Key Vault Secrets. no filtramos secretos deshabilitados. ahora creo un PR para solucionar el problema

Todos 10 comentarios

@ TonySh127-ms ¿está utilizando el iniciador de bóveda de claves o el sdk directamente?

Discutió con @ TonySh127-ms fuera de línea y el cliente usó Spring-boot-starter para keyvault. Necesita confirmación del lado del SDK para saber si el nuevo SDK resuelve este tipo de problema.

@AlexGhiondea @ vcolin7 , ¿puedes hacer un seguimiento?

gracias @joshfree y @saragluna. Esperando actualización de @AlexGhiondea y @ vcolin7 . Por favor, avíseme si no se puede solucionar a corto plazo. Puedo explicárselo al cliente. ¡Muchas gracias de nuevo por tu tiempo!

Hola @ TonySh127-ms,

Pasé un tiempo investigando este problema y encontré lo siguiente: el comportamiento que ve el cliente se debe a cómo funciona el iniciador Spring Boot para Key Vault Secrets. Básicamente, cada vez que se ejecuta una aplicación Spring que usa este iniciador, obtendrá los nombres de todos los secretos existentes en una bóveda determinada llamando al punto final / secrets, que carga todos los secretos habilitados y deshabilitados (no los eliminados), la aplicación entonces recuperar detalles de secretos específicos si es necesario. No es un problema con el servicio Key Vault o SDK, sino solo una consecuencia de cómo se codifica el arrancador Spring Boot.

Una solución a corto plazo no es utilizar el iniciador Spring Boot, sino el SDK de Key Vault directamente. De esta manera, el cliente tendrá más control sobre qué secretos se cargan y cuándo durante el ciclo de vida de las aplicaciones.

Además, no pude reproducir un caso en el que mi aplicación fallara por cargar demasiados secretos con solo crear y eliminar un certificado en una bóveda. Para hacer algo como esto, necesitaría más información del cliente: qué dependencias usan en su proyecto, incluidas las versiones y el código de muestra donde se puede reproducir.

@ vcolin7, ¿tenemos una opción para pasar al SDK que solo cargue secretos habilitados? Parece que no deberíamos cargar los secretos deshabilitados en nuestra integración de Spring.

@saragluna Desafortunadamente, no hay ningún parámetro que podamos pasar al servicio para que nos brinde solo secretos habilitados: /

El problema se debe al funcionamiento del iniciador Spring Boot para Key Vault Secrets. no filtramos secretos deshabilitados. ahora creo un PR para solucionar el problema

@ TonySh127-ms
Creamos un paquete de desarrollo , puedes probarlo.
Siga esta página para descargar el paquete de desarrollo

Hola equipo, se ha confirmado que el problema se solucionó. Podemos cerrar este hilo ahora. Muchas gracias a todos mucho esfuerzo y tiempo !!!

¿Fue útil esta página
0 / 5 - 0 calificaciones