Azure Active Directory
Azure Active Directory è un sistema concepito per semplificare le procedure di autenticazione per gli sviluppatori tramite la fornitura di identità come servizio; per questo scopo viene offerto il supporto per protocolli standard ormai largamente utilizzati quali OAuth 2.0 e OpenID a cui si aggiungono librerie disponibili sotto licenza Open Source, compatibili con varie piattaforme, che consentono di creare velocemente il codice dei propri progetti.
Per comprendere il funzionamento di AD si ipotizzi che un utilizzatore voglia autenticarsi ad una Web application, operazione che tipicamente avviene tramite browser. Nel caso specifico AD funzionerà da provider di identità e si farà carico di verificare l'identità di utenti e App presenti in una directory; fatto questo, in caso di esito positivo del tentativo di autenticazione, il servizio rilascerà i necessari token di sicurezza.
Successivamente alla fase appena descritta, sarà compito dell'applicazione convalidare il token di sicurezza associato a quest'ultimo. La piattaforma offrirà delle librerie per la gestione della convalida dei token tra cui anche i token Web per i formati di interscambio JSON (JWT) o SAML 2.0, si potrà quindi scegliere di utilizzare ADAL (Active Directory Authentication Library) per .NET, JavaScript, Objective-C, NodeJS o Java a seconda della natura del proprio progetto o della della piattaforma di riferimento (Windows, iOS o Android).
AD adotta una soluzione per la cifratura a chiave pubblica con cui firmare i token e stabilirne la validità; inoltre, per garantire un elevato livello di sicurezza, nel caso in cui si lavori con applicazioni per le quali sia prevista l'autenticazione AD in outsourcing, queste dovranno essere registrate sul servizio che avrà l'onere di identificare univocamente l'App all'interno della directory. Registrazione e verifica prevedono la comunicazione ad AD dei dati riguardanti l'applicazione tra cui l'URL relativo alla sua posizione, l'URL per l'invio delle risposte successive all'autenticazione e l'URI identificativo.
Nel complesso AD supporta i cinque diverse modalità di accesso per App e API protette da AD:
- Da browser ad applicazione Web: cioè quando un'utente deve accedere ad una Web App.
- Applicazione a pagina singola: quando un'utente deve accedere a un'App single page.
- Da applicazione nativa a Web API: un'applicazione nativa in esecuzione su dispositivi mobili dovrà autenticare un utente per accedere alle risorse di un'API.
- Da applicazione Web a Web API: nel caso in cui una Web App debba accedere a risorse da API.
- Da daemon o applicazione server a Web API: quando un'App daemon, o server, priva di UI richieda risorse da API.
AD è stato concepito per lo sviluppo e l'integrazione di App con single tenant o multi-tenant. Il primo caso è tipicamente quello in cui un'organizzazione impiega applicazioni create da uno sviluppatore interno al proprio organigramma, un'App con un single tenant dovrà essere accessibile per i soli utenti di una directory e il provisioning verrà effettuato soltanto in essa. Nel secondo caso invece, un'App multi-tenant viene adottata in più organizzazioni, tipicamente si tratta di soluzioni SaaS (Software-as-a-Service) di fornitori esterni e, per il provisioning delle App nelle diverse directory, sarà richiesto il consenso dell'utente o dell'admin per la registrazione.
Azure RemoteApp
Azure RemoteApp nasce per semplificare la distribuzione delle App, il servizio permette di offrire un accesso remoto sicuro da dispositivi diversi ospitando nel Cloud le sessioni da condividere con gli utenti, allo sviluppatore spetterà il solo compito di caricare le applicazioni. Il funzionamento di RemoteApp si basa sul principio delle "raccolte", per cui si avranno:
- raccolte nel Cloud con App ospitate insieme ai dati alle quali accedere tramite Microsoft account o credenziali aziendali sincronizzate via AD;
- raccolte ibride nel Cloud con i dati ma che consentono l'accesso anche a dati in locale attraverso credenziali aziendali sincronizzate via AD.
La prima tipologia di raccolte è preferibile quando l'App da distribuire non richiede connessione a risorse in rete privata, come nel caso delle VPN, o se l'App necessita di risorse Web, su OneDrive o Azure. Le raccolte ibride sono invece più indicate in ambiti aziendali particolarmente articolati con connessione in rete privata e accesso a file server su intranet o Database dietro firewall.
Per creare una raccolta si acceda al portale di gestione di Azure e ci si sposti nella sezione "RemoteApp", fatto questo sarà necessario:
- clickare su "Crea una raccolta RemoteApp";
- recarsi su "Creazione rapida" e scegliere un nome per la raccolta;
- selezionare l'area per la raccolta avendo cura di scegliere quella più vicina alla località in cui gli utenti accederanno all'App;
- selezionare il piano di fatturazione;
- selezionare l'immagine modello da utilizzare, le immagini conterranno le App da condividere, nel caso in cui si voglia pubblicare un'App personalizzata bisognerà creare un'immagine personalizzata.
Una volta creata la raccolta inizierà la sua fase di provisioning e per poter passare alla pubblicazione si dovrà attendere la conclusione di quest'ultima; fatto questo la raccolta diventerà operativa e selezionabile.
Clickando sulla voce "Pubblica programmi RemoteApp".
Si aprirà una nuova schermata che permetterà di selezionare i programmi RemoteApp.
Dopo aver effettuato e confermato la selezione delle applicazioni desiderate, queste entreranno a far parte della raccolta RemoteApp e si potrà quindi passare alla scheda "Accesso utente" per aggiungere gli utenti con accesso all'App immettendo l'indirizzo di posta elettronica di ciascuno di essi per poi clickare su "Salva".
La medesima procedura potrà essere seguita per la pubblicazione in RemoteApp di qualsiasi altra applicazione.
Il Resource Manager di Azure
Il Resource Manager permette di gestire le risorse incluse come un insieme, come per esempio la VM, le Web App, i database e servizi esterni. Si potranno quindi distribuire, aggiornare o rimuovere tutte le risorse tramite una singola operazione. Gli sviluppatori potranno descrivere le risorse con un modello JSON e usarlo per diversi ambienti (test, debugging, produzione).
Il Manager consentirà di distribuire, gestire e monitorare le risorse come un gruppo invece che singolarmente, esse potranno essere condividere più volte nel corso del ciclo di sviluppo e si potranno sfruttare dei modelli dichiarativi per definirne la distribuzione. Vi sarà la possibilità di definire le dipendenze in modo che vengono distribuite nell'ordine previsto, inoltre, si disporrà di un controllo di accesso basato sui ruoli integrato nativamente.
L'utilizzatore potrà applicare tag alle risorse per la loro organizzazione logica e reperire informazioni di fatturazione monitorando i costi per un intero gruppo o per gruppi della medesima categoria.
Un gruppo rappresenta un contenitore di risorse correlate per un'App, esso potrebbe includere tutte le risorse o solo quelle raggruppate logicamente. Tutte le risorse di un gruppo dovranno condividere lo stesso ciclo di vita, esse infatti verranno distribuite, aggiornate e cancellate insieme. Ogni risorsa dovrà far capo ad un unico gruppo, ma sarà possibile aggiungere o rimuovere in qualsiasi momento una risorsa presente in un gruppo.
Si potrà ricollocare una risorsa in un gruppo diverso da quello di origine e un gruppo potrà contenere le risorse che risiedono in aree diverse. Nello stesso modo una risorsa potrà essere collegata a una risorsa in un altro gruppo se le due dovessero interagire tra loro non condividono il ciclo di vita, più applicazioni potrebbero per esempio connettersi ad un database.
Azure Automation
Azure offre soluzioni avanzate per l'eliminazione delle attività ripetitive, ciò permetterà di risparmiare tempo e denaro, limitare la necessità di interventi manuali, evitare errori affidandosi a procedure affidabili programmate e di non dover partecipare direttamente a procedure di esecuzione prolungate.
L'Azure Automation si basa sul concetto di Runbook, un set di attività che eseguono automaticamente un processo, come per esempio l'avvio di una macchina virtuale. Per aggiungere un runbook si potrà crearne uno nuovo o importarlo quando già esistente da un file o da una raccolta di runbook. Per creare un nuovo runbook nel portale di Azure si dovrà:
- clickare su "Nuovo > Servizi app > Automazione > Runbook > Creazione rapida";
- Inserire i dati richiesti e fare click su "Crea". Si presti attenzione al fatto che il nome di un runbook deve iniziare con una lettera ma può includere lettere, numeri, caratteri di sottolineatura e trattini.
- Fare click su "OK" oppure, volendo modificare il runbook da subito, clickare su "Modifica runbook" e quindi clickare su OK.
Fatto ciò il nuovo runbook verrà visualizzato nel tab "Runbook". Nello specifico esistono:
- runbook grafici creati e modificati con l'editor grafico del portale di Azure; li si può esportare in un file e importarli in altro account, non è invece possibile crearli o modificarli con altri strumento. Generano codice di flusso di lavoro PowerShell, ma il codice non è visualizzabile o modificabile direttamente, inoltre, non possono essere convertiti in formato testo.
- runbook del flusso di lavoro PowerShell, cioè runbook di testo basati sul flusso di lavoro Windows PowerShell; i codici si possono modificare direttamente con l'editor di testo di Azure ed è possibile usare un editor offline per poi importare il runbook in Azure.
- runbook di PowerShell basati su Windows PowerShell, è possibile modificarne direttamente il codice con l'editor di Azure o usare un editor offline e importare il runbook.
Si tenga comunque conto che non sarà possibile convertire in nessun caso i runbook da un tipo a un altro e che sono presenti delle limitazioni nell'uso dei runbook di tipi diversi come runbook secondari ("runbook figli").