Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le chiavi di accesso di Funzioni di Azure agiscono come segreti condivisi che autorizzano l'accesso agli endpoint delle funzioni. Questo articolo descrive i tipi di chiavi di accesso supportate da Funzioni e come usare le chiavi di accesso.
Sebbene le chiavi di accesso offrano una certa protezione contro accessi indesiderati, considera altre opzioni per proteggere gli endpoint HTTP in produzione. Ad esempio, non distribuire segreti condivisi in un'app pubblica. Se un client pubblico chiama la tua funzione, considera di implementare questi o altri meccanismi di sicurezza:
- Abilitare l'autenticazione/autorizzazione del servizio app
- Usare Gestione API di Azure (APIM) per autenticare le richieste
- Distribuire l'app per le funzioni in una rete virtuale
- Distribuire l'app per le funzioni in isolamento
Le chiavi di accesso forniscono la base per l'autorizzazione HTTP nelle funzioni attivate da HTTP. Per altre informazioni, vedere Livello di autorizzazione.
Tipi di chiave di accesso
L'ambito di una chiave di accesso e le azioni supportate dipendono dal tipo di chiave di accesso.
| Tipo di chiave | Nome della chiave | Livello di autenticazione HTTP | Descrizione |
|---|---|---|---|
| Funzione |
default o definito dall'utente |
function |
Consente l'accesso a un solo endpoint di funzione specifico. |
| Host |
default o definito dall'utente |
function |
Consente l'accesso a tutti gli endpoint di funzione in un'app per le funzioni. |
| Master | _master |
admin |
Chiave host speciale che fornisce anche l'accesso amministrativo alle API REST di runtime in un'app per le funzioni. Poiché la chiave master concede permessi elevati nella tua app di funzione, non condividere questa chiave con terze parti né distribuirla nelle applicazioni client native. |
| Sistema | Dipende dall'estensione | n/d | Le estensioni specifiche potrebbero richiedere una chiave gestita dal sistema per accedere agli endpoint del webhook. Le chiavi di sistema sono progettate per endpoint funzionali specifici per estensione che i componenti interni chiamano. Ad esempio, per il trigger della Griglia di eventi è necessario che la sottoscrizione usi una chiave di sistema durante la chiamata all'endpoint del trigger. Durable Functions usa anche chiavi di sistema per chiamare le API dell'estensione Durable Task. Solo estensioni specifiche possono creare chiavi di sistema. Non è possibile impostare in modo esplicito i valori. Analogamente ad altre chiavi, è possibile generare un nuovo valore per la chiave nel portale o usando le API della chiave. |
Ogni tasto ha un nome di riferimento. L'app e i livelli di funzione hanno ciascuno un tasto predefinito chiamato default. Le chiavi di funzione hanno la precedenza sulle chiavi host. Quando due tasti hanno lo stesso nome, il tasto funzione viene sempre utilizzato.
La tabella seguente confronta gli utilizzi per diversi tipi di chiavi di accesso:
| Azione | Scope | Tipo di chiave |
|---|---|---|
| Eseguire una funzione | Funzione specifica | Funzione |
| Eseguire una funzione | Qualsiasi funzione | Funzione o host |
Chiamare un endpoint admin |
App per le funzioni | Maestro |
| Chiamare le API dell'estensione Durable Task | App per le funzioni* | Sistema |
| Chiama un webhook specifico per un'estensione (interno) | App per le funzioni* | Sistema |
*Ambito determinato dall'estensione.
Requisiti per la chiave di accesso
In Funzioni, le chiavi di accesso sono matrici a 32 byte generate in modo casuale e codificate come stringhe base-64 sicure per gli URL. Anche se puoi generare le tue chiavi di accesso e usarle con le Funzioni, usa invece il processo predefinito di generazione delle chiavi di accesso.
Le chiavi di accesso generate da Funzioni includono valori di firma e checksum speciali che indicano il tipo di chiave di accesso e che Funzioni di Azure l'ha generata. Questi componenti aggiuntivi nella chiave rendono più facile determinare la fonte di questi segreti durante la scansione di sicurezza e altri processi automatizzati.
Per permettere a Functions di generare le tue chiavi, non fornire la chiave value a nessuna delle API che puoi usare per generare chiavi.
Memoria per le chiavi di accesso
La tua app di funzione in Azure memorizza le chiavi e le cripta a riposo. Di default, l'impostazione AzureWebJobsStorage memorizza le chiavi in un container di archiviazione Blob all'interno dell'account fornito. Usa l'impostazione AzureWebJobsSecretStorageType per sovrascrivere questo comportamento predefinito e memorizzare le chiavi in una di queste posizioni alternative:
| Location | valore | Descrizione |
|---|---|---|
| Un secondo account di archiviazione | blob |
Memorizza le chiavi nello storage Blob in un account di archiviazione diverso da quello usato dal runtime delle funzioni. L'account e il contenitore specifici usati sono definiti da un URL di firma di accesso condiviso impostato nell'impostazione AzureWebJobsSecretStorageSas . Quando l'URL SAS cambia, è necessario mantenere l'impostazione AzureWebJobsSecretStorageSas. |
| Azure Key Vault | keyvault |
Memorizza le chiavi nel caveau delle chiavi impostato in AzureWebJobsSecretStorageKeyVaultUri. |
| Sistema di file | files |
Le chiavi vengono salvate in modo permanente nel file system locale, ovvero l'impostazione predefinita in Funzioni v1.x. L'archiviazione del file system non è consigliata. |
| Segreti di Kubernetes | kubernetes |
Memorizza le chiavi nell'insieme di risorse in AzureWebJobsKubernetesSecretName. Supportato solo quando l'app per le funzioni viene distribuita in Kubernetes.
Funzioni di Azure Core Tools genera automaticamente i valori quando lo si usa per implementare l'app in un cluster Kubernetes.
I segreti non modificabili non sono supportati. |
| Segreti di App Azure Container | containerapps |
Le chiavi vengono archiviate nell'archivio dei segreti App contenitore di Azure, ovvero il sistema di gestione dei segreti interno per le app contenitore. Supportato soltanto quando la tua app per le funzioni viene distribuita in App contenitore di Azure. Per informazioni, consulta Configura lo storage segreto delle Container Apps. |
Quando usi Key Vault per l'archiviazione delle chiavi, le impostazioni dell'app di cui hai bisogno dipendono da come l'app si autentica su Key Vault: un'identità gestita assegnata dal sistema, un'identità gestita assegnata dall'utente o una registrazione dell'app.
| Nome impostazione | Assegnata dal sistema | Assegnata dall'utente | Registrazione delle app |
|---|---|---|---|
AzureWebJobsSecretStorageKeyVaultUri |
Yes | Yes | Yes |
AzureWebJobsSecretStorageKeyVaultClientId |
No | Yes | Yes |
AzureWebJobsSecretStorageKeyVaultClientSecret |
No | No | Yes |
AzureWebJobsSecretStorageKeyVaultTenantId |
No | No | Yes |
Importante
I segreti non hanno come ambito singole app per le funzioni tramite l'impostazione AzureWebJobsSecretStorageKeyVaultUri. Se più applicazioni di funzioni sono configurate per utilizzare lo stesso Key Vault, condividono gli stessi segreti, causando potenzialmente collisioni di chiavi o sovrascrizioni. Per evitare comportamenti imprevisti, è consigliabile usare un'istanza separata di Key Vault per ogni app per le funzioni.
Chiamate endpoint con chiavi di accesso
Puoi chiamare funzioni attivate da HTTP usando un URL che include il nome della funzione. Quando imposti il livello di autorizzazione di una funzione a un valore diverso da anonymous, devi anche fornire una chiave di accesso nella tua richiesta. Puoi includere la chiave di accesso nell'URL usando la ?code= stringa di query o nell'intestazione della richiesta (x-functions-key). Per altre informazioni, vedere Autorizzazione della chiave di accesso.
Per accedere alle API REST di runtime (in /admin/), è necessario specificare la chiave master (_master) nell'intestazione della richiesta x-functions-key. Puoi disabilitare gli endpoint amministrativi impostando la functionsRuntimeAdminIsolationEnabled proprietà del sito.
Ottenere le chiavi di accesso alle funzioni
È possibile ottenere chiavi di funzione e host a livello di codice usando queste API di Azure Resource Manager:
- Elencare le chiavi di funzione
- Elencare le chiavi host
- Elencare lo slot delle chiavi di funzione
- Elenca gli slot delle chiavi host
Per informazioni su come chiamare le API di Azure Resource Manager, vedere informazioni di riferimento sull'API REST di Azure.
Annotazioni
Quando distribuisci la tua function app su App contenitore di Azure e usi AzureWebJobsSecretStorageType=ContainerApps, devi utilizzare metodi specifici di Container Apps per recuperare i tasti di funzione. Per ulteriori informazioni, consulta Gestisce le chiavi di accesso nella documentazione delle Container Apps.
Usa questi metodi per ottenere le chiavi di accesso senza usare le API REST.
Accedi al portale Azure, poi cerca e seleziona Function App.
Selezionare l'app per le funzioni che si desidera usare.
Nel menu a sinistra espandere Funzioni e quindi selezionare Chiavi dell'app.
Viene visualizzata la pagina Chiavi dell'app. In questa pagina sono visualizzate le tasti host, che puoi usare per accedere a qualsiasi funzione dell'app. Viene visualizzata anche la chiave di sistema, che consente a chiunque l'accesso a livello di amministratore a tutte le API dell'app per le funzioni.
È inoltre possibile avvalersi di privilegi minimi usando la chiave per una funzione specifica. È possibile ottenere chiavi specifiche della funzione dalla scheda Chiavi funzione di una specifica funzione attivata da HTTP.
Suggerimento
Puoi anche ottenere le chiavi di accesso per le tue funzioni usando il comando func azure functionapp list-functions Funzioni di Azure Core Tools con l'opzione--show-keys. Per altre informazioni, vedere il riferimento degli Strumenti Core di Funzioni di Azure.
Rinnovare o creare chiavi di accesso
Quando si rinnovano o si creano i valori della chiave di accesso, è necessario ridistribuire manualmente i valori della chiave aggiornati a tutti i client che chiamano la funzione.
È possibile rinnovare le chiavi di funzione e host a livello di codice, o crearne di nuove usando queste API di Azure Resource Manager:
- Creare o aggiornare un segreto per le funzioni
- Creare o aggiornare lo slot segreti per le funzioni
- Creare o aggiornare un segreto host
- Creare o aggiornare lo slot segreto host
Per informazioni su come chiamare le API di Azure Resource Manager, vedere informazioni di riferimento sull'API REST di Azure.
È possibile usare questi metodi per ottenere le chiavi di accesso senza dover creare manualmente le chiamate alle API REST.
Accedi al portale Azure, poi cerca e seleziona Function App.
Selezionare l'app per le funzioni che si desidera usare.
Nel menu a sinistra espandere Funzioni e quindi selezionare Chiavi dell'app.
Viene visualizzata la pagina Chiavi dell'app. In questa pagina sono visualizzate le tasti host, che puoi usare per accedere a qualsiasi funzione dell'app. Viene visualizzata anche la chiave di sistema, che consente a chiunque l'accesso a livello di amministratore a tutte le API dell'app per le funzioni.
Seleziona Rinnova valore chiave accanto alla chiave che vuoi rinnovare, poi seleziona Rinnova e salva.
È inoltre possibile rinnovare una chiave di funzione nella scheda Chiavi funzione di una specifica funzione attivata da HTTP.
Eliminare le chiavi di accesso
È possibile eliminare le chiavi funzione e host a livello di codice usando queste API di Azure Resource Manager:
- Elimina segreto funzione
- Elimina slot segreto funzione
- Elimina segreto host
- Elimina slot segreto host
Per informazioni su come chiamare le API di Azure Resource Manager, vedere informazioni di riferimento sull'API REST di Azure.