Pianificare e implementare configurazioni di sicurezza di rete per un ambiente del servizio app
Un App Service Environment (ASE) è una distribuzione del Servizio App di Azure in una subnet nell'istanza di Rete virtuale di Azure del cliente. Un ambiente del servizio app è costituito da:
- Front-end: dove termina HTTP o HTTPS in un ambiente del servizio app
- Ruoli di lavoro: risorse che ospitano le app
- Database: contiene le informazioni che definiscono l'ambiente
- Memoria: usata per ospitare le app pubblicate dai clienti
È possibile distribuire un Ambiente di Servizio App con un indirizzo IP virtuale (VIP) esterno o interno per l'accesso alle app. Una distribuzione con un indirizzo VIP esterno viene comunemente denominata ambiente del servizio app esterno. Una distribuzione con un VIP interno è chiamata ILB ASE perché utilizza un bilanciamento del carico interno (ILB).
Creare un'app in un ambiente del servizio app (ASE)
Per creare un'app in un ambiente del servizio app, si usa lo stesso processo di quando si crea normalmente un'app, ma con alcune piccole differenze. Quando si crea un nuovo piano di servizio app:
- Invece di selezionare una località geografica per distribuire l'app, scegli un Ambiente del Servizio App (ASE) come posizione.
- Tutti i piani di servizio app creati in un ambiente del servizio app possono risiedere solo in un piano tariffario Isolato.
Se non si dispone di un ambiente del servizio app, è possibile crearne uno seguendo le istruzioni riportate in Creare un ambiente del servizio app.
Per creare un'app in un ambiente del servizio app:
- Selezionare Crea una risorsa, Web e dispositivi mobili, App Web.
- Immetti il nome per l'app. Se hai già selezionato un piano di App Service in un ASE, il nome di dominio per l'app rispecchia il nome di dominio dell'ASE.
- Seleziona un abbonamento.
- Immettere un nome per un nuovo gruppo di risorse, oppure fare clic su Usa esistente e selezionarne uno dall'elenco a discesa.
- Selezionare il sistema operativo.
- Selezionare un piano di App Service esistente nel proprio ASE (Ambiente del Servizio App) o crearne uno nuovo seguendo questi passaggi:
a. Nel menu a sinistra del portale di Azure selezionare Crea una risorsa>App Web.
b. Selezionare la sottoscrizione.
c. Selezionare o creare il gruppo di risorse.
d. Immettere il nome dell'app Web.
e. Selezionare Code o DockerContainer.
f. Selezionare uno stack di runtime.
g. Selezionare Linux o Windows.
h. Seleziona il tuo ASE nell'elenco a discesa Regione.
i. Selezionare o creare un nuovo piano di servizio app. Se si crea un nuovo piano di servizio app, selezionare le dimensioni dello SKU Isolato appropriate.
- Selezionare Rivedi e crea, verificare che le informazioni siano corrette e quindi selezionare Crea.
Come funziona la scalabilità
Ogni app del Servizio app di Azure viene eseguita in un piano di servizio app. Gli ambienti del servizio app contengono piani di servizio app, e i piani di servizio app contengono app. Quando si ridimensiona un'app, si ridimensiona anche il piano di servizio app e tutte le app nello stesso piano.
Quando si ridimensiona un piano di servizio app, l'infrastruttura necessaria viene aggiunta automaticamente. C'è un ritardo nelle operazioni di scalabilità mentre si aggiunge l'infrastruttura. Se si eseguono diverse operazioni di ridimensionamento in sequenza, viene eseguita la prima richiesta di ridimensionamento dell'infrastruttura e le altre vengono inserite in una coda. Al termine della prima operazione di ridimensionamento, tutte le altre richieste dell'infrastruttura operano insieme. E quando viene aggiunta l'infrastruttura, i piani di servizio app vengono assegnati nel modo previsto. La creazione di un nuovo piano di servizio app è un'operazione di ridimensionamento perché richiede hardware aggiuntivo. Il completamento di un'operazione di ridimensionamento richiede in genere 30-60 minuti.
Nel servizio app multi-tenant il ridimensionamento è immediato perché un pool di risorse è immediatamente disponibile per supportarlo. In un ambiente del servizio app non esiste un buffer di questo tipo e le risorse vengono allocate in base alle esigenze.
In un ambiente del servizio app è possibile ridimensionare un piano di servizio app fino a 100 istanze. Un ambiente del servizio app può avere fino a 201 istanze totali in tutti i piani di servizio app in tale ambiente del servizio app.
Indirizzi IP
Il servizio app può allocare un indirizzo IP dedicato a un'app. Questa funzionalità è disponibile dopo aver configurato un'associazione TLS/SSL basata su IP, come descritto in Associare un certificato TLS/SSL personalizzato esistente al servizio app di Azure. In un App Service Environment (ASE) con bilanciamento del carico interno (ILB), non è possibile aggiungere altri indirizzi IP da usare per l'associazione TLS/SSL basata su IP.
Con un ASE esterno, puoi configurare un binding TLS/SSL basato su IP per la tua app, esattamente come per un servizio app multi-tenant. C'è sempre un indirizzo di riserva nell'ASE, fino a 30 indirizzi IP. Ogni volta che se ne usa uno, ne viene aggiunto un altro affinché ce ne sia uno sempre prontamente disponibile. L'allocazione di un altro indirizzo IP richiede un certo tempo. Questo ritardo impedisce l'aggiunta di indirizzi IP in rapida successione.
Scalabilità front-end
Quando si aumenta il numero di istanze dei piani di servizio app, vengono aggiunti automaticamente i ruoli di lavoro per supportarli. Ogni ambiente del servizio app viene creato con due front-end. I front-end aumentano automaticamente il numero di istanze del piano di servizio app alla frequenza di un front-end per ogni set di 15 istanze del piano di servizio app. Se, ad esempio, sono presenti tre piani servizio app con cinque istanze ciascuno, si avrà un totale di 15 istanze e tre front-end. Se si aumenta il numero fino a un totale di 30 istanze, saranno presenti quattro front-end. Questo modello continua man mano che si aumenta il numero di istanze.
Il numero di front-end allocati per impostazione predefinita è ideale per un carico moderato. È possibile ridurre il rapporto fino a un front-end per ogni cinque istanze. È anche possibile modificare le dimensioni dei front-end. Per impostazione predefinita, prevedono un singolo core. Nel portale di Azure è possibile modificare le dimensioni a due o quattro core.
È previsto un addebito per la modifica del rapporto o delle dimensioni dei front-end. Per altre informazioni, vedere Prezzi del Servizio app di Azure. Se vuoi migliorare la capacità di carico del tuo ASE, otterrai un miglioramento maggiore passando ai front-end a due core prima di aggiustare il rapporto di scala. La modifica delle dimensioni dei core dei front-end causerà un aggiornamento dell'ambiente del servizio app e dovrebbe essere eseguita al di fuori dell'orario di ufficio normale.
Le risorse front-end sono l'endpoint HTTP/HTTPS per l'ambiente del servizio app. Con la configurazione front-end predefinita, l'uso della memoria per ogni front-end è di circa il 60%. Il motivo principale per ridimensionare i front-end è l'utilizzo della CPU, che è principalmente basato sul traffico HTTPS.
Accesso all'applicazione
In un ambiente ASE esterno, il suffisso di dominio utilizzato per la creazione dell'app è .<asename>.p.azurewebsites.net. Se l'ambiente del servizio app è denominato external-ase e si ospita un'app denominata contoso in tale ambiente del servizio app, è possibile raggiungerlo a questi URL:
- contoso.external-ase.p.azurewebsites.net
- contoso.scm.external-ase.p.azurewebsites.net
In un ambiente del servizio app con bilanciamento del carico interno il suffisso del dominio usato per la creazione dell'app è .<asename>.appserviceenvironment.net. Se l'ambiente del servizio app è denominato ilb-ase e si ospita un'app denominata contoso in tale ambiente del servizio app, è possibile raggiungerlo a questi URL:
- contoso.ilb-ase.appserviceenvironment.net
- contoso.ilb-ase.appserviceenvironment.net
L'URL di Gestione configurazione software (SCM) viene usato per accedere alla console Kudu o pubblicare l'app tramite Distribuzione Web. La console Kudu offre un'interfaccia utente Web per il debug, il caricamento di file, la modifica di file e altro ancora.
Configurazione del DNS
Quando si usa un ASE esterno, le app create nella tua ASE vengono registrate su DNS di Azure. In un ASE esterno per le app non ci sono passaggi aggiuntivi affinché siano disponibili pubblicamente. Con un ILB ASE, è necessario gestire il proprio DNS. È possibile farlo nel proprio server DNS o nelle zone private di DNS di Azure.
Per configurare DNS nel proprio server DNS con l'ambiente del servizio app con bilanciamento del carico interno:
- Creare una zona per <nome dell'ambiente del servizio app>.appserviceenvironment.net
- Creare un record A in tale zona che punta * all'indirizzo IP di ILB
- Creare un record A in tale zona che punta @ all'indirizzo IP di ILB
- Creare una zona in <nome dell'ambiente del servizio app>.appserviceenvironment.net denominata scm
- Creare un record A nella zona SCM che punta @ all'indirizzo IP di ILB
Per configurare DNS nelle zone private di DNS di Azure:
- Creare una zona privata DNS di Azure denominata <nome ASE>.appserviceenvironment.net
- Creare un record A in tale zona che punta * all'indirizzo IP di ILB
- Creare un record A in tale zona che punta @ all'indirizzo IP di ILB
- Creare un record A in tale zona che punta *.scm all'indirizzo IP di ILB
Le impostazioni DNS per il suffisso di dominio predefinito dell'ASE non limitano l'accesso alle app solo da quei nomi. È possibile impostare un nome di dominio personalizzato senza alcuna convalida sulle tue app in un ILB ASE. Se poi si vuole creare una zona denominata contoso.net, è possibile farlo e puntarla all'indirizzo IP di ILB. Il nome del dominio personalizzato funziona per le richieste di app ma non per il sito scm. Il sito scm è disponibile solo in <appname>.scm.<asename>.appserviceenvironment.net.
La zona denominata .<asename>.appserviceenvironment.net è univoca a livello globale. Prima di maggio 2019, i clienti potevano specificare il suffisso di dominio dell'ILB ASE. Se si avesse voluto usare .contoso.com per il suffisso di dominio, lo si sarebbe potuto fare includendo in tal modo il sito scm. Ci sono state sfide con quel modello, tra cui la gestione del certificato TLS/SSL predefinito, la mancanza dell'accesso Single Sign-On con il sito scm e la necessità di utilizzare un certificato wildcard. Il processo di aggiornamento del certificato predefinito di ILB ASE era anche distruttivo e causava il riavvio dell'applicazione. Per risolvere questi problemi, il comportamento ILB ASE è stato modificato per utilizzare un suffisso di dominio basato sul nome dell'ASE con un suffisso di proprietà di Microsoft. La modifica al comportamento degli ILB ASE influisce solo sugli ILB ASE creati dopo maggio 2019. Gli ILB ASE preesistenti devono comunque gestire il certificato predefinito dell'ASE e la relativa configurazione DNS. Se il tuo ILB ASE V2 è stato creato dopo maggio 2019, non è necessario gestire il certificato predefinito dell'ILB poiché è gestito da Microsoft.
Pubblicazione
In un Ambiente del Servizio App (ASE), come nel servizio di applicazioni multi-tenant, puoi pubblicare tramite i seguenti metodi:
- Implementazione Web
- FTP
- Integrazione continua (CI)
- Trascina e rilascia nella console Kudu
- Un IDE, ad esempio Visual Studio, Eclipse o IntelliJ IDEA
Con un ambiente del servizio app esterno, queste opzioni di pubblicazione funzionano allo stesso modo. Per altre informazioni, vedere Distribuzione nel servizio app di Azure.
Con un ambiente del servizio app con bilanciamento del carico interno, gli endpoint di pubblicazione sono disponibili solo tramite il servizio di bilanciamento del carico interno. Il servizio di bilanciamento del carico interno si trova in un indirizzo IP privato nella subnet dell'ambiente del servizio app nella rete virtuale. Se non è disponibile l'accesso alla rete per il servizio di bilanciamento del carico interno, non è possibile pubblicare app in tale ambiente del servizio app. Come indicato in "Creazione e utilizzo di un ASE ILB", è necessario configurare il DNS per le app nel sistema. Questo requisito include l'endpoint SCM. Se gli endpoint non sono definiti correttamente, non è possibile procedere con la pubblicazione. Anche gli IDE devono disporre dell'accesso alla rete per il servizio di bilanciamento del carico interno per procedere direttamente alla pubblicazione.
Senza modifiche aggiuntive, i sistemi CI basati su Internet come GitHub e Azure DevOps non funzionano con un ILB ASE perché l'endpoint di pubblicazione non è accessibile da Internet. È possibile abilitare la pubblicazione in un ambiente del servizio app con bilanciamento del carico interno da Azure DevOps installando un agente di versione self-hosted nella rete virtuale che contiene l'ambiente del servizio app con bilanciamento del carico interno. In alternativa, è anche possibile usare un sistema di integrazione continua che usa un modello pull, ad esempio Dropbox.
Gli endpoint di pubblicazione per le app in un ILB ASE usano il dominio con cui è stato creato. È disponibile nel profilo di pubblicazione dell'app e nel riquadro del portale dell'app (in Panoramica e Informazioni di base e anche in Proprietà).
Archiviazione
Un ambiente del servizio app dispone di 1 TB di spazio di archiviazione per tutte le app nell'ambiente del servizio app. Un piano servizio app nello SKU Isolato ha un limite di 250 GB. In un ASE, vengono aggiunti 250 GB di spazio di archiviazione per ogni piano App Service fino al limite di 1 TB. È possibile avere più di quattro piani di servizio app, ma non è disponibile più spazio di archiviazione aggiunto oltre il limite di 1 TB.
Monitoraggio
I clienti devono monitorare i piani di servizio app e le singole app in esecuzione e intraprendere le azioni appropriate. Per l'ambiente del servizio app v2, è necessario prestare attenzione anche alle metriche relative all'infrastruttura della piattaforma. Queste metriche forniscono informazioni dettagliate sullo stato dell'infrastruttura della piattaforma e dei server front-end (multiRole) ed è possibile intervenire se presentano un utilizzo eccessivo che impedisce di ottenere la velocità effettiva massima.
Tramite il portale di Azure e l'interfaccia della riga di comando è possibile configurare il rapporto di ridimensionamento dei server front-end tra 5 e 15 (15 è il valore predefinito) istanze del piano di servizio app per ogni server front-end. Un ambiente del servizio app avrà sempre almeno due server front-end. È anche possibile aumentare le dimensioni dei server front-end.
L'ambito delle metriche usato per monitorare l'infrastruttura della piattaforma è denominato Microsoft.Web/hostingEnvironments/multiRolePools.
Verrà visualizzato un ambito denominato Microsoft.Web/hostingEnvironments/workerPools. Le metriche mostrate qui sono applicabili solo all'ambiente del servizio app v1.
Registrazione
È possibile integrare il proprio ASE con Azure Monitor per inviare i log relativi all'ASE ad Archiviazione di Azure, Hub eventi di Azure o Log Analytics. Oggi vengono registrati questi elementi:
| Situazione | Messaggio |
|---|---|
| L'ambiente del servizio app non è integro | L'ambiente del servizio app specificato non è integro a causa di una configurazione di rete virtuale non valida. L'ambiente del servizio app verrà sospeso se perdura lo stato non integro. |
| La subnet di ASE è quasi a corto di spazio. | L'ambiente del servizio app specificato si trova in una subnet prossima all'esaurimento dello spazio. Sono presenti {0} indirizzi rimanenti. Una volta esauriti questi indirizzi, non sarà più possibile ridimensionare l'ambiente del servizio app. |
| L'ambiente del servizio app sta raggiungendo il limite totale di istanze | L'ambiente del servizio app specificato sta raggiungendo il limite totale di istanze dell'ambiente del servizio app. Attualmente contiene {0} istanze del piano di servizio app su un massimo di 201 istanze. |
| L'ambiente del servizio app non riesce a raggiungere una dipendenza | L'ambiente del servizio app specificato non riesce a raggiungere {0}. |
| ASE è sospeso | L'ambiente del servizio app specificato è sospeso. La sospensione dell'ambiente del servizio app può essere dovuta a un deficit di account o a una configurazione di rete virtuale non valida. Risolvere la causa radice e riprendere l'ambiente del servizio app per continuare a gestire il traffico. |
| L'aggiornamento dell'ASE è iniziato | È stato avviato un aggiornamento della piattaforma per l'ambiente del servizio app specificato. Prevedere possibili ritardi nelle operazioni di ridimensionamento. |
| L'aggiornamento di ASE è stato completato | È stato completato un aggiornamento della piattaforma per l'ambiente del servizio app specificato. |
| Le operazioni di ridimensionamento sono state avviate | È iniziato il ridimensionamento di un piano servizio app ({0}). Stato desiderato: ruoli di lavoro {1} I{2}. |
| Le operazioni di ridimensionamento sono state completate | Il ridimensionamento di un piano di servizio app ({0}) è terminato. Stato corrente: ruoli di lavoro {1} I{2}. |
| Operazioni di ridimensionamento non riuscite | Non è stato possibile ridimensionare un piano di servizio app ({0}). Stato corrente: ruoli di lavoro {1} I{2}. |
Per abilitare la registrazione nel tuo ASE:
- Nel portale, passare a Impostazioni di diagnostica.
- Selezionare Aggiungi impostazione di diagnostica.
- Specificare un nome per l'integrazione dei log.
- Selezionare e configurare le destinazioni desiderate per i log.
- Selezionare AppServiceEnvironmentPlatformLogs.
Se si esegue l'integrazione con Log Analytics, per visualizzare i log selezionare Logs dal portale ASE ed eseguire una query su AppServiceEnvironmentPlatformLogs. I log vengono generati solo quando nell'ambiente del servizio app si verifica un evento che li attiva. Se nel tuo Ambiente di Servizio dell'Applicazione non è presente un tale evento, non ci saranno log disponibili. Per visualizzare rapidamente un esempio di log nell'area di lavoro Log Analytics, eseguire un'operazione di ridimensionamento con uno dei piani di servizio app nell'ambiente del servizio app. È quindi possibile eseguire una query su AppServiceEnvironmentPlatformLogs per visualizzare tali log.
Creazione di un avviso
Per creare un avviso per i log, seguire le istruzioni riportate in Creare, visualizzare e gestire gli avvisi dei log tramite Monitoraggio di Azure. In breve:
- Apri la pagina Avvisi nel portale ASE
- Selezionare Nuova regola di avviso
- Seleziona la tua risorsa da impostare come area di lavoro di Log Analytics
- Impostare la condizione con una ricerca log personalizzata per usare una query come "AppServiceEnvironmentPlatformLogs | where ResultDescription contains "ha avviato il ridimensionamento" o ciò che si desidera. Impostare la soglia desiderata.
- Aggiungere o creare un gruppo di azioni in base alle esigenze. Il gruppo di azioni consente di definire la risposta all'avviso, ad esempio l'invio di un messaggio di posta elettronica o un SMS
- Dai un nome al tuo avviso e salvalo.
Preferenza di aggiornamento
Se si dispone di più ASE, si potrebbe voler aggiornare alcuni ASE prima di altri. Questo comportamento può essere abilitato tramite il portale ASE. In Configurazione è possibile impostare la Preferenza di aggiornamento. I tre valori possibili sono:
- None: Azure aggiornerà l'ambiente del servizio app in nessun batch specifico. Si tratta del valore predefinito.
- In anticipo: il tuo ASE verrà aggiornato nella prima metà degli aggiornamenti di App Service.
- In ritardo: l'ambiente del servizio app verrà aggiornato nella seconda metà degli aggiornamenti del servizio app.
Selezionare il valore desiderato e fare clic su Salva. Il valore predefinito per qualsiasi ASE è Nessuno.
La funzionalità upgradePreferences ha più senso quando sono presenti più ambienti del servizio app, in quanto gli ambienti "In anticipo" verranno aggiornati prima degli ambienti "In ritardo". Quando hai più ASE, dovresti impostare gli ASE di sviluppo e test su "Presto" e gli ASE di produzione su "Tardi".
Prezzi
Lo SKU Isolato è destinato all'uso solo con gli ambienti del servizio app. Tutti i piani di servizio app ospitati nell'ambiente del servizio app si trovano nello SKU Isolato. Le tariffe isolate per i piani di servizio App possono variare in base alla regione.
Oltre al prezzo dei piani di servizio app, esiste una tariffa fissa per l'ambiente del servizio app stesso. La tariffa fissa non cambia con le dimensioni dell'ambiente del servizio app. Paga l'infrastruttura dell'ambiente del servizio app a una frequenza di ridimensionamento predefinita di un front-end aggiuntivo per ogni 15 istanze del piano di servizio app.
Se la frequenza di ridimensionamento predefinita di un front-end per ogni 15 istanze del piano di servizio app non è sufficiente, è possibile modificare il rapporto per l'aggiunta dei front-end o per l'aumento delle dimensioni dei front-end. Quando si modifica il rapporto o le dimensioni, si paga per i core front-end che non verranno aggiunti per impostazione predefinita.
Se ad esempio si imposta la proporzione di ridimensionamento su 10, verrà aggiunto un front-end ogni 10 istanze nei piani di servizio app. La tariffa fissa copre un rapporto di un front end ogni 15 istanze. Con un rapporto di scalabilità di 10, è previsto un costo per il terzo front-end aggiunto per le 10 istanze del piano di servizio app. Non è necessario pagare quando si raggiungono 15 istanze, perché è stato aggiunto automaticamente.
Se si modificano le dimensioni dei front-end passando a due core, ma non si modifica il rapporto, si pagherà per i core aggiuntivi. Un ambiente del servizio app viene creato con due front-end, quindi anche al di sotto della soglia di ridimensionamento automatico si paga per due core aggiuntivi se si aumentano le dimensioni ai front-end a due core.
Eliminare un ambiente del servizio app (ASE)
Per eliminare un ASE:
- Selezionare Elimina nella parte superiore del riquadro Ambiente del servizio app. Immettere il nome dell'ambiente del servizio app per confermare l'intenzione di eliminarlo. Quando si elimina un ambiente del servizio app, si eliminano anche tutti gli elementi contenuti al suo interno.
- Seleziona OK.
Interfaccia della riga di comando dell'ambiente del servizio app
Sono disponibili funzionalità della riga di comando per amministrare un ambiente del servizio app. I comandi dell'interfaccia della riga di comando di Azure sono indicati di seguito.
C:\>az appservice ase --help Group az appservice ase : Manage App Service Environments v2. This command group is in preview. It may be changed/removed in a future release. Commands: create : Create app service environment. delete : Delete app service environment. list : List app service environments. list-addresses : List VIPs associated with an app service environment. list-plans : List app service plans associated with an app service environment. show : Show details of an app service environment. update : Update app service environment. For more specific examples, use: az find "az appservice ase"