Almacenar secretos de nivel de aplicación para Azure Functions en Azure Container Apps

Los secretos de nivel de aplicación son valores de configuración que el código de función y los enlaces consumen en tiempo de ejecución. A diferencia de las claves de acceso de Functions, que protegen los puntos de conexión HTTP, los secretos de nivel de aplicación son las credenciales que la aplicación necesita para conectarse a otros servicios.

Algunos ejemplos habituales:

  • Conexiones de infraestructura - AzureWebJobsStorage cadenas de conexión, activadores y enlaces para Event Hubs, Service Bus, Cosmos DB y SQL.
  • Credenciales empresariales : claves de API de terceros, contraseñas de base de datos, tokens de plataforma SaaS.
  • Configuración personalizada – cualquier valor confidencial que lea el código de las variables de entorno.

Elección de una opción de almacenamiento

Azure Container Apps ofrece dos maneras de almacenar secretos de nivel de aplicación:

Option Más adecuado para Administración centralizada Rotación automática Registro de auditoría
Secretos de Container Apps Desarrollo y pruebas, cargas de trabajo sencillas de aplicación única No: limitado a una sola aplicación No Solo registros de actividad
Referencias de Key Vault Producción, multiaplicación, cumplimiento Sí: en todas las aplicaciones Sí (URI sin versión) Diagnóstico completo de Key Vault

Tip

Comience con los secretos de Container Apps para simplificar. Utilice referencias de Key Vault cuando necesite la administración centralizada, la rotación automática o la auditoría de nivel de cumplimiento.

Prerequisites

Uso de secretos de Container Apps

Container Apps almacena secretos en la matriz de configuration.secrets la aplicación y cifra los valores en reposo. Puede hacer referencia a secretos en variables de entorno, reglas de escalado, montajes de volúmenes y componentes de Dapr.

Almacenar un secreto

  1. Vaya a la aplicación contenedora de Functions en el portal Azure.

  2. En Configuración, seleccione Secretos.

  3. Seleccione Agregar y escriba los valores siguientes:

    Propiedad Value
    Nombre Un nombre secreto como database-password. Utilice solo letras minúsculas, números y guiones.
    Type Secretos de Container Apps
    Valor Su valor secreto.
  4. Selecciona Agregar.

Hacer referencia al secreto en una variable de entorno

Después de almacenar un secreto, haga referencia a él en una variable de entorno para que el código de función pueda leerlo.

  1. En la aplicación contenedora de Functions, en Aplicación, seleccione Revisiones y réplicas.

  2. Seleccione Crear nueva revisión.

  3. En la pestaña Contenedor , seleccione el contenedor y, a continuación, seleccione Editar.

  4. Seleccione la pestaña Variables de entorno y, a continuación, seleccione Agregar.

  5. Escriba los siguientes valores:

    Propiedad Value
    Nombre DATABASE_PASSWORD
    Fuente Hacer referencia a un secreto
    Valor database-password
  6. Seleccione Guardar y, a continuación, seleccione Crear para implementar la nueva revisión.

Comprobación del secreto

Confirme que la función puede leer el valor del secreto invocando la función y comprobando que se ejecuta sin errores relacionados con la configuración que falta.

curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"

Importante

Container Apps inserta el valor secreto en la variable de entorno en tiempo de ejecución. El código lee la variable de entorno y no accede directamente al almacén de secretos.

Limitaciones

Los secretos de Container Apps tienen las siguientes limitaciones:

  • Sin centralización : cada aplicación de contenedor almacena sus propios secretos por separado.
  • Sin rotación automática : debe actualizar los valores de secreto manualmente.
  • Sin expiración : los secretos no expiran automáticamente.
  • Auditoría limitada : solo registros de actividad básicos; no se ha detallado la auditoría de acceso a secretos.
  • Sin control de versiones : ningún historial de versiones secreto integrado.
  • Comportamiento de actualización : cambiar un secreto no desencadena una nueva revisión. Debe crear una nueva revisión o reiniciar las revisiones existentes para recoger los cambios.

Uso de referencias de Key Vault

Key Vault referencias permiten que la aplicación contenedora extraiga secretos directamente de Azure Key Vault mediante una identidad administrada. Este enfoque proporciona administración centralizada, rotación automática y auditoría de nivel de cumplimiento.

Paso 1: Configuración de la identidad administrada

La aplicación contenedora necesita una identidad administrada para autenticarse en Key Vault sin credenciales.

  1. Vaya a la aplicación contenedora de Functions en el portal Azure.

  2. En Configuración, seleccione Identidad.

  3. En la pestaña Asignado por el sistema , establezca Estado en Activado.

  4. Seleccione Guardar y, a continuación, seleccione para confirmar.

Paso 2: Concesión de acceso Key Vault

Asigne el rol Key Vault Secrets User a la identidad administrada para que pueda leer secretos.

  1. Vaya al Key Vault en el portal Azure.

  2. En Configuración, seleccione Control de acceso (IAM).

  3. Seleccione Agregar>Agregar asignación de rol.

  4. En la pestaña Role, seleccione Usuario de secretos de Key Vault.

  5. Seleccione Siguiente.

  6. En la pestaña Miembros, seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.

  7. En el panel Seleccionar identidades administradas , seleccione la suscripción, elija Aplicación contenedora para el tipo de identidad administrada, seleccione la aplicación contenedora de Functions y, a continuación, seleccione Seleccionar.

  8. Seleccione Revisar y asignar.

Paso 3: Almacenar un secreto en Key Vault

  1. En el Key Vault, en Objects, seleccione Secrets.

  2. Seleccione Generar/Importar.

  3. Escriba los siguientes valores:

    Propiedad Value
    Opciones de carga Manual
    Nombre Un nombre de secreto, por ejemplo DatabasePassword, .
    Valor Su valor secreto.
  4. Selecciona Crear.

  5. Seleccione el secreto recién creado y, a continuación, seleccione la versión actual.

  6. Copie el URI del Secret Identifier. Use el URI sin versión (sin el segmento de versión final) para habilitar la rotación automática.

Paso 4: Hacer referencia al secreto de Key Vault en Container Apps

Cree un secreto de Container Apps que haga referencia al secreto de Key Vault y, a continuación, vincule a una variable de entorno.

  1. Vaya a la aplicación contenedora de Functions. En Configuración, seleccione Secretos.

  2. Selecciona Agregar.

  3. En Agregar secreto, escriba los valores siguientes:

    Propiedad Value
    Nombre database-password
    Type Referencia de Key Vault
    URL de secreto de Key Vault URI del identificador secreto que copió.
    Identidad Identidad asignada por el sistema (o la identidad asignada por el usuario).
  4. Selecciona Agregar.

  5. En Aplicación, seleccione Revisiones y réplicas. Cree una nueva revisión con la variable DATABASE_PASSWORD de entorno que hace referencia al database-password secreto.

Paso 5: Comprobar la referencia de Key Vault

Invoque la función y confirme que se ejecuta sin errores relacionados con la configuración que falta.

curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>"

Rotación automática de secretos

Al hacer referencia a un secreto de Key Vault con un URI sin versión, Container Apps recupera automáticamente la versión más reciente:

  • URI sin versión fija: https://myvault.vault.azure.net/secrets/mysecret siempre utiliza la versión más reciente.
  • URI versionado: https://myvault.vault.azure.net/secrets/mysecret/ec96f020... - anclado a una versión específica.

Con los URI sin versión, Container Apps comprueba si hay nuevas versiones en un plazo de 30 minutos y reinicia automáticamente las revisiones activas para seleccionar el nuevo valor.