Home > News > Breaking News > Automazione delle attività di manutenzione in Azure SQL Database (3 Parte)

Automazione delle attività di manutenzione in Azure SQL Database (3 Parte)

Nel precedente articolo Automazione delle attività di manutenzione in Azure SQL Database (2 Parte) abbiamo descritto la prima implementazione (preview) di Azure Elastic Job Agents, attraverso cui è possibile creare e pianificare processi su uno o più database Azure SQL per eseguire query o attività di manutenzione.

Lo scorso novembre, Microsoft ha annunciato un refresh di questa tecnologia con importanti implementazioni in ambito sicurezza, portale di gestione, scalabilità e molto altro; ecco elencate le principali novità:

  • Supporto per Microsoft Entra ID (ex Azure Active Directory)
  • Private Link gestiti dal servizio per connettersi in modo sicuro ai database di destinazione
  • Integrazione con Azure Alerts per le informazioni sullo stato di esecuzione dei job
  • Potenziamento della scalabilità per connetterti a più target contemporaneamente

In questo articolo ci concentreremo nel descrivere le principali variazioni (rispetto al precedente post) in termini di configurazione e sicurezza delle connessioni verso i database di destinazione. La prima implementazione della tecnologia Elastic Job consentiva l’autenticazione soltanto con database-scoped credentials, mentre ora il metodo di autenticazione consigliato è quello basato su Microsoft Entra.

Autenticazione con Microsoft Entra ID

Con il supporto per Microsoft Entra, una user-assigned-managed-identity (UMI) può ora essere assegnata al Job Agent durante la creazione di un Elastic Job o successivamente tramite il portale Azure o le web API esposte per questo scopo. Nonostante il metodo esistente di autenticazione SQL basato su database-scoped credentials continui a essere supportato, Microsoft Entra ID è il meccanismo consigliato e sicuro per consentire ai Job Agent di connettersi ai database di destinazione.L’agente Elastic Job deve essere in grado di eseguire l’autenticazione in ogni server logico o database di destinazione; quindi, prima di creare (può essere fatto anche successivamente ma il mio consiglio è di farlo prima) un Elastic Job è consigliato creare una nuova user-assigned-managed-identity (UMI), che potrà essere selezionata durante la creazione dell’Elastic Job. Per usare l’autenticazione Microsoft Entra con una user-assigned-managed-identity (UMI) è necessario eseguire i seguenti passi:

  1. Abilitare l’autenticazione di Microsoft Entra in tutti i server/database di destinazione, nell’istanza Azure SQL che ospita il database job e in quella che ospita il database di output dei processi. Per questo passaggio è possibile seguire il tutorial Enable Microsoft Entra-only authentication with Azure SQL lasciando attiva, se lo si desidera, anche la SQL Authentication (default)
  2. Creare una user-assigned-managed-identity (UMI) seguendo i passi descritti nell’articolo Manage user-assigned managed identities
  3. Assegnare la user-assigned-managed-identity (UMI) creata all’agente Elastic Job seguendo i passi descritti nella sezione Create and configure the elastic job agent
  4. Creare un gruppo con server e database di destinazione e aggiungere i job con i comandi da eseguire nei database di destinazione. Rispetto agli script contenuti nel post precedente, l’utilizzo di Microsoft Entra non richiede venga specificata la credenziale di accesso di tipo database-scoped credentials
  5. In ciascuno dei server/database di destinazione, creare un contained user mappato all’UMI utilizzando il codice T-SQL riportato di seguito oppure consultare gli esempi contenuti nella sezione Create the job authentication
-- Connect to the master database of the Azure SQL logical instance of job agent
-- Use universal with MFA authentication type

-- Create a login on the master database mapped to a user-assigned managed identity (UMI)
CREATE LOGIN [umi-for-elastic-job] FROM EXTERNAL PROVIDER;
GO

È necessario creare anche un utente sul database master mappato sul login precedentemente creata, l’assenza di questo utente causerà l’errore:

Failed to determine members of SqlServerTarget (server name 'azure…', server location 'azure…'): The server principal "926e2a2b...@1f36c249..." is not able to access the database "master" under the current security context. Cannot open database "master" requested by the login. The login failed. Login failed for user '926e2a2b...@1f36c249...'.
CREATE USER [umi-for-elastic-job] FROM EXTERNAL PROVIDER;
GO

Ora è necessario connettersi al database di destinazione dell’istanza logica SQL di Azure su cui si desidera vengano eseguiti i job per creare gli opportuni utenti e fornire loro le GRANT necessarie per l’accesso agli oggetti (nell’esempio [dbo].[IndexOptimize] e [dbo].[CommandExecute]).

-- Connect to the target database of the Azure SQL logical instance
-- Create a user on a user database mapped to a login
CREATE USER [umi-for-elastic-job] FROM EXTERNAL PROVIDER;
GO
-- Grant permissions as necessary to execute your jobs. For example, ALTER and CREATE TABLE:
GRANT EXECUTE ON OBJECT::[dbo].[IndexOptimize] TO [umi-for-elastic-job];
GRANT EXECUTE ON OBJECT::[dbo].[CommandExecute] TO [umi-for-elastic-job];
GO
  1. Schedulare il job impostando una pianificazione

Rispetto alla prima implementazione di questa tecnologia, il refresh dello scorso novembre richiede che il database job sia di livello S1 e non S0 come avveniva in passato.

Prezzi e rilascio (GA) di Azure SQL Elastic Jobs

Elasic Jobs rimarrà gratuito durante il periodo di preview e fino a quando non verrà rilasciato in modo generale (GA). Al rilascio in GA, gli Elastic Job verranno fatturati in base al livello di capacità selezionato nel Job Agent.

Il rilascio in GA è previsto nel primo trimestre del 2024. La data esatta verrà annunciata prossimamente.

Buon divertimento con Azure SQL Elastic Job.

Chi è Sergio Govoni

Sergio Govoni è laureato in Scienze e Tecnologie Informatiche. Da oltre 16 anni lavora presso una software house che produce un noto sistema ERP, distribuito a livello nazionale ed internazionale, multi azienda client/server su piattaforma Win32. Attualmente si occupa di progettazione e analisi funzionale, coordina un team di sviluppo ed è responsabile tecnico di prodotto. Lavora con SQL Server dalla versione 7.0 e si è occupato d'implementazione e manutenzione di database relazionali in ambito gestionale, ottimizzazione delle prestazioni e problem solving. Nello staff di UGISS si dedica alla formazione e alla divulgazione in ambito SQL Server e tecnologie a esso collegate, scrivendo articoli e partecipando come speaker ai workshop e alle iniziative del primo e più importante User Group Italiano sulla tecnologia SQL Server. Ha conseguito la certificazione MCP, MCTS SQL Server. Per il suo contributo nelle comunità tecniche e per la condivisione della propria esperienza con altri, dal 2010 riceve il riconoscimento SQL Server MVP (Microsoft Most Valuable Professional). Nel corso dell'anno 2011 ha contribuito alla scrittura del libro SQL Server MVP Deep Dives Volume 2 (http://www.manning.com/delaney/).

Leggi Anche

Governo delle istanze\database SQL Server!

Introduzione L’obiettivo del presente articolo è quello di esporre una nuova metodologia di monitoraggio che …