Sicurezza delle funzioni serverless

Questo articolo descrive i servizi e le attività di Azure che il personale addetto alla sicurezza può implementare per funzioni serverless. Queste linee guida e risorse consentono di sviluppare codice sicuro e distribuire applicazioni sicure nel cloud.

Pianificazione

Gli obiettivi principali di un ambiente applicazioni serverless sicuro Funzioni di Azure sono proteggere le applicazioni in esecuzione, identificare e risolvere rapidamente i problemi di sicurezza e prevenire problemi simili futuri.

La top 10 serverless OWASP descrive le vulnerabilità di sicurezza delle applicazioni serverless più comuni e fornisce tecniche di base per identificare e proteggersi da tali vulnerabilità.

In molti casi, la pianificazione di sviluppo, distribuzione e funzionamento sicuri delle funzioni serverless è molto simile a quella di qualsiasi applicazione ospitata sul Web o nel cloud. Servizio app di Azure rende disponibile l'infrastruttura di hosting per le app per le funzioni. L'articolo Protezione Funzioni di Azure fornisce strategie di sicurezza per l'esecuzione del codice della funzione e come servizio app può aiutare a proteggere le funzioni.

Per altre informazioni su sicurezza, procedure consigliate e responsabilità condivise di Azure, vedere:

Distribuzione

Per preparare le applicazioni di Funzioni serverless per la produzione, il personale di sicurezza deve:

  • Eseguire revisioni regolari del codice per identificare le vulnerabilità del codice e della libreria.
  • Definire le autorizzazioni per le risorse necessarie per l'esecuzione di Funzioni.
  • Configurare le regole di sicurezza di rete per le comunicazioni in ingresso e in uscita.
  • Identificare e classificare l'accesso ai dati sensibili.

L'articolo Baseline di sicurezza di Azure per Funzioni di Azure contiene altre raccomandazioni che consentiranno di migliorare il comportamento di sicurezza della distribuzione.

Mantenere il codice sicuro

Individuare vulnerabilità ed errori di sicurezza nel codice e gestire le vulnerabilità di sicurezza nei progetti e nelle dipendenze.

Per altre informazioni, vedi:

Eseguire la convalida dell'input

Origini eventi diverse, ad esempio l'archiviazione BLOB, i database NoSQL di Azure Cosmos DB, gli hub eventi, le code o gli eventi graph possono attivare funzioni serverless. Gli inserimenti non sono strettamente limitati agli input provenienti direttamente dalle chiamate API. Le funzioni possono utilizzare altri input dalle possibili origini evento.

In generale, non considerare attendibile l'input o fare ipotesi sulla sua validità. Usare sempre API sicure che sanificano o convalidano l'input. Se possibile, usare api che associano o parametrizzano variabili, ad esempio usando istruzioni preparate per le query SQL.

Per altre informazioni, vedi:

Proteggere gli endpoint HTTP per sviluppo, test e produzione

Funzioni di Azure consente di usare le chiavi per rendere più difficile l'accesso agli endpoint di funzione HTTP. Per proteggere completamente gli endpoint di funzione nell'ambiente di produzione, è consigliabile implementare una delle opzioni di sicurezza a livello di app per le funzioni seguenti:

Per altre informazioni, vedere Proteggere un endpoint HTTP nell'ambiente di produzione.

Configurare il controllo degli accessi in base al ruolo di Azure

Il controllo degli accessi in base al ruolo di Azure include diversi ruoli predefiniti di Azure che è possibile assegnare a utenti, gruppi, entità servizio e identità gestite per controllare l'accesso alle risorse di Azure. Se i ruoli predefiniti non soddisfano le esigenze dell'organizzazione, è possibile creare ruoli personalizzati di Azure.

Esaminare ogni app per le funzioni prima della distribuzione per identificare autorizzazioni eccessive. Esaminare attentamente le funzioni per applicare le autorizzazioni "privilegi minimi", assegnando a ogni funzione solo ciò che deve essere eseguito correttamente.

Usare il controllo degli accessi in base al ruolo di Azure per assegnare autorizzazioni a utenti, gruppi e applicazioni in un determinato ambito. L'ambito di un'assegnazione di ruolo può essere una sottoscrizione, un gruppo di risorse o una singola risorsa. Evitare di usare caratteri jolly quando possibile.

Per altre informazioni sul controllo degli accessi in base al ruolo di Azure, vedere:

Usare identità gestite e insiemi di credenziali delle chiavi

Una sfida comune quando si creano applicazioni cloud è come gestire le credenziali per l'autenticazione ai servizi cloud nel codice. Le credenziali non devono mai essere visualizzate nel codice dell'applicazione, nelle workstation per sviluppatori o nel controllo del codice sorgente. Usare invece un insieme di credenziali delle chiavi per archiviare e recuperare chiavi e credenziali. Azure Key Vault consente di archiviare in modo sicuro credenziali, segreti e altre chiavi. Il codice esegue l'autenticazione in Key Vault per recuperare le credenziali.

Per altre informazioni, vedere Usare i riferimenti a Key Vault per servizio app e Funzioni di Azure.

Le identità gestite consentono alle app di Funzioni di accedere a risorse come insiemi di credenziali delle chiavi e account di archiviazione senza richiedere chiavi di accesso o stringa di connessione specifiche. Un audit trail completo nei log visualizza le identità che eseguono le richieste alle risorse. Usare il controllo degli accessi in base al ruolo di Azure e le identità gestite per controllare in modo granulare le risorse a cui possono accedere le risorse Funzioni di Azure applicazioni.

Per altre informazioni, vedi:

Usare token di firma di accesso condiviso (SAS) per limitare l'accesso alle risorse

Una firma di accesso condiviso (SAS) fornisce accesso delegato sicuro alle risorse nell'account di archiviazione, senza compromettere la sicurezza dei dati. Con una firma di accesso condiviso è possibile controllare in modo granulare il modo in cui un client può accedere ai dati. È possibile controllare le risorse a cui il client può accedere, quali autorizzazioni hanno su tali risorse e per quanto tempo la firma di accesso condiviso è valida, tra gli altri parametri.

Per altre informazioni, vedere Concedere l'accesso limitato alle risorse Archiviazione di Azure usando firme di accesso condiviso.For more information, see Grant limited access to Archiviazione di Azure resources using shared access signatures (SAS).

Archiviazione BLOB sicura

Identificare e classificare i dati sensibili e ridurre al minimo l'archiviazione dei dati sensibili solo a ciò che è necessario. Per l'archiviazione dei dati sensibili, aggiungere l'autenticazione a più fattori e la crittografia dei dati in transito e inattivi. Concedere l'accesso limitato alle risorse Archiviazione di Azure usando i token di firma di accesso condiviso.

Per altre informazioni, vedere Raccomandazioni sulla sicurezza per Archiviazione BLOB.

Ottimizzazione

Una volta che un'applicazione è in produzione, il personale di sicurezza può aiutare a ottimizzare il flusso di lavoro e prepararsi per il ridimensionamento.

Usare Microsoft Defender per il cloud e applicare raccomandazioni sulla sicurezza

Microsoft Defender per il cloud è una soluzione di analisi della sicurezza per l'applicazione che identifica potenziali vulnerabilità di sicurezza e crea raccomandazioni. Le raccomandazioni consentono di configurare i controlli necessari per rafforzare e proteggere le risorse.

Per altre informazioni, vedi:

Applicare i criteri di governance delle applicazioni

Applicare misure di sicurezza e imposizione centralizzate e coerenti all'applicazione su larga scala. Per altre informazioni, vedere Definizioni dei criteri predefiniti di Criteri di Azure.

Passaggi successivi