Compartir vía


Usar claves de acceso en Azure Functions

Azure Functions le permite usar claves secretas para que sea más difícil acceder a los puntos de conexión de función. En este artículo se describen los distintos tipos de claves de acceso compatibles con Functions y cómo trabajar con claves de acceso.

Aunque las claves de acceso proporcionan cierta mitigación contra el acceso no deseado, debe tener en cuenta otras opciones para proteger los puntos de conexión HTTP en producción. Por ejemplo, no es recomendable distribuir secretos compartidos en una aplicación pública. Si se llama a la función desde un cliente público, debe considerar la posibilidad de implementar estos u otros mecanismos de seguridad:

Las claves de acceso proporcionan la base para la autorización HTTP en funciones desencadenadas por HTTP. Para más información, consulte Nivel de autorización.

Comprender las claves

El ámbito de una clave de acceso y las acciones que admite dependen del tipo de clave de acceso.

Tipo de clave Nombre de clave Nivel de autenticación HTTP Descripción
Function default o definido por el usuario function Permite el acceso solo a un punto de conexión de función específico.
Host default o definido por el usuario function Permite el acceso a todos los puntos de conexión de función de una aplicación de funciones.
Embarque maestro _master admin Clave de host especial que también proporciona acceso administrativo a las API de REST del runtime en una aplicación de funciones. No se puede revocar esta clave. Dado que la clave maestra concede permisos elevados en la aplicación de funciones, no debe compartir esta clave con terceros ni distribuirla en aplicaciones cliente nativas.
Sistema Depende de la extensión N/D Las extensiones específicas pueden requerir una clave administrada por el sistema para acceder a los puntos de conexión de webhook. Las claves del sistema están diseñadas para puntos de conexión de función específicos de la extensión a los que llaman los componentes internos. Por ejemplo, el desencadenador Event Grid requiere que la suscripción use una clave del sistema cuando se llama al punto de conexión del desencadenador. Durable Functions también usa claves del sistema para llamar a las API de extensión de Durable Task.
Las claves del sistema solo se pueden crear mediante extensiones específicas y sus valores no se pueden establecer de forma explícita. Como sucede con otras claves, puede generar un valor nuevo para la clave desde el portal o mediante las API de clave.

Para cada clave se usa un nombre fácilmente referenciable y hay una clave predeterminada (denominada "default") en el nivel de función y host. Las claves de función tienen prioridad sobre las claves de host. Si se definen dos claves con el mismo nombre, siempre se usa la clave de función.

En la tabla siguiente se comparan los usos de los distintos tipos de claves de acceso:

Acción Ámbito Tipo de clave
Ejecutar una función Función específica Función
Ejecutar una función Cualquier función Función o host
Llamada a un punto de conexión admin Aplicación de función Solo maestro
Llamada a las API de extensión de Durable Task Aplicación de funciones* Sistema
Llamada a un webhook específico de la extensión (interna) Aplicación de funciones* sistema

*Ámbito determinado por la extensión.

Requisitos principales

En Functions, las claves de acceso se generan aleatoriamente matrices de 32 bytes codificadas como cadenas base-64 seguras para direcciones URL. Aunque puede generar sus propias claves de acceso y usarlas con Functions, se recomienda permitir que Functions genere todas las claves de acceso por usted.

Las claves de acceso generadas por Functions incluyen valores especiales de firma y suma de comprobación que indican el tipo de clave de acceso y que la generó Azure Functions. Tener estos componentes adicionales en la propia clave facilita mucho la determinación del origen de estos tipos de secretos ubicados durante el examen de seguridad y otros procesos automatizados.

Para permitir que Functions genere las claves automáticamente, no proporcione la clave value a ninguna de las API que puede usar para generar claves.

Administrar almacenamiento de clave

Las claves se almacenan como parte de la aplicación de función en Azure y se cifran en reposo. De forma predeterminada, las claves se almacenan en un contenedor de Blob Storage en la cuenta proporcionada por el valor AzureWebJobsStorage. Puede usar la configuración AzureWebJobsSecretStorageType para invalidar este comportamiento predeterminado y, en su lugar, almacenar claves en una de estas ubicaciones alternativas:

Location Value Descripción
Una segunda cuenta de almacenamiento blob Almacena claves en Blob Storage en una cuenta de almacenamiento diferente a la usada por el runtime de Functions. La cuenta y el contenedor específicos usados se definen mediante una dirección URL de firma de acceso compartido (SAS) establecida en la configuración AzureWebJobsSecretStorageSas. Debe mantener la configuración AzureWebJobsSecretStorageSas cuando cambie la dirección URL de SAS.
Azure Key Vault keyvault El almacén de claves establecido en AzureWebJobsSecretStorageKeyVaultUri se usa para almacenar claves.
Sistema de archivos files Las claves se conservan en el sistema de archivos local, que es el valor predeterminado en Functions v1.x. No se recomienda el almacenamiento del sistema de archivos.
Secretos de Kubernetes kubernetes El recurso establecido en AzureWebJobsKubernetesSecretName se usa para almacenar claves. Solo se admite cuando la aplicación de funciones se implementa en Kubernetes. Azure Functions Core Tools genera automáticamente los valores cuando se usa para implementar la aplicación en un clúster de Kubernetes.

Al usar Key Vault para el almacenamiento de claves, la configuración de la aplicación que necesita depende del tipo de identidad administrada, ya sea asignada por el sistema o asignada por el usuario.

Nombre del valor Asignada por el sistema Asignada por el usuario Registro de aplicación
AzureWebJobsSecretStorageKeyVaultUri
AzureWebJobsSecretStorageKeyVaultClientId X
AzureWebJobsSecretStorageKeyVaultClientSecret X X
AzureWebJobsSecretStorageKeyVaultTenantId X X

Uso de claves de acceso

Por lo general, se puede llamar a las funciones desencadenadas por HTTP mediante una dirección URL con el formato : https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>. Cuando el nivel de autorización de una función determinada se establece en un valor distinto de anonymous, también debe proporcionar una clave de acceso en la solicitud. La clave de acceso se puede proporcionar en la dirección URL mediante la cadena de consulta ?code= o en el encabezado de solicitud (x-functions-key). Para obtener más información, consulte Autorización de clave de acceso.

Para acceder a las API REST del runtime (en /admin/), debe proporcionar la clave maestra (_master) en el encabezado de solicitud x-functions-key. Puede quitar los puntos de conexión de administrador mediante la propiedad de sitiofunctionsRuntimeAdminIsolationEnabled.

Obtención de las claves de acceso de la función

Puede obtener claves de función y de host mediante programación con estas API de Azure Resource Manager:

Para obtener información sobre cómo llamar a las API de Azure Resource Manager, consulte la referencia de la API de REST de Azure.

Puede usar estos métodos para obtener claves de acceso sin tener que usar las API de REST.

  1. Inicie sesión en Azure Portal, busque y seleccione Aplicación de funciones.

  2. Seleccione la aplicación de funciones con la que desea trabajar.

  3. En el panel izquierdo, expanda Funciones y, a continuación, seleccione Claves de aplicación.

    Aparece la página Claves de aplicación. En esta página se muestran las claves de host, que se pueden usar para acceder a cualquier función de la aplicación. También se muestra la clave del sistema, que proporciona a cualquier usuario acceso de nivel de administrador a todas las API de la aplicación de funciones.

También puede poner en práctica el principio de privilegio mínimo mediante la clave para una función específica. Puede obtener claves específicas de función en la pestaña Claves de función de una función desencadenada por HTTP específica.

Renovar o crear claves de acceso

Al renovar o crear los valores de la clave de acceso, debe redistribuir manualmente los valores de clave actualizados a todos los clientes que llaman a la función.

Puede renovar las claves de función y host mediante programación o crear nuevas mediante estas API de Azure Resource Manager:

Para obtener información sobre cómo llamar a las API de Azure Resource Manager, consulte la referencia de la API de REST de Azure.

Puede usar estos métodos para obtener claves de acceso sin tener que crear manualmente llamadas a las API de REST.

  1. Inicie sesión en Azure Portal, busque y seleccione Aplicación de funciones.

  2. Seleccione la aplicación de funciones con la que desea trabajar.

  3. En el panel izquierdo, expanda Funciones y, a continuación, seleccione Claves de aplicación.

    Aparece la página Claves de aplicación. En esta página se muestran las claves de host, que se pueden usar para acceder a cualquier función de la aplicación. También se muestra la clave del sistema, que proporciona a cualquier usuario acceso de nivel de administrador a todas las API de la aplicación de funciones.

  4. Seleccione Renovar valor de clave junto a la clave que desea renovar y, a continuación, seleccione Renovar y guardar.

También puede renovar una clave de función en la pestaña Claves de función de una función específica desencadenada por HTTP.

Eliminar claves de acceso

Puede eliminar claves de función y de host mediante programación con estas API de Azure Resource Manager:

Para obtener información sobre cómo llamar a las API de Azure Resource Manager, consulte la referencia de la API de REST de Azure.