Condividi tramite


Gestire i database nel database SQL di Azure usando Automazione di Azure

Questo articolo descrive la procedura per connettere e gestire i database nel database SQL di Azure usando l'identità gestita assegnata dal sistema di Automazione di Azure. Con Automazione di Azure è possibile gestire i database in database SQL di Azure usando i cmdlet az di PowerShell più recenti disponibili in Azure Az PowerShell.

Automazione di Azure include questi cmdlet di Azure Az PowerShell predefiniti, in modo da poter eseguire tutte le attività di gestione del database SQL all'interno del servizio. È anche possibile associare questi cmdlet in Automazione di Azure con i cmdlet di altri servizi di Azure per automatizzare attività complesse nei servizi di Azure e in sistemi di terze parti.

Automazione di Azure può anche eseguire comandi T-SQL (Transact SQL) sui server SQL usando PowerShell.

Per eseguire i comandi sul database, è necessario eseguire le operazioni seguenti:

  • Assicurarsi che l'account di Automazione abbia un'identità gestita assegnata dal sistema.
  • Fornire le autorizzazioni appropriate per l'identità gestita di Automazione.
  • Configurare SQL Server per l'utilizzo dell'autenticazione Di Microsoft Entra.
  • Creare un utente nel server SQL mappato all'identità gestita dell'account di Automazione.
  • Creare un runbook per connettersi ed eseguire i comandi.
  • (Facoltativo) Se il server SQL è protetto da un firewall, creare un ruolo di lavoro ibrido per runbook (HRW), installare i moduli SQL in tale server e aggiungere l'indirizzo IP HRW all'elenco elementi consentiti nel firewall.

Connessione al database SQL di Azure usando l'identità gestita assegnata dal sistema

Per consentire l'accesso dall'identità gestita del sistema di Automazione al database SQL di Azure, seguire questa procedura:

  1. Se l'identità gestita del sistema di automazione è OFF, eseguire le operazioni seguenti:

    1. Accedere al portale di Azure.

    2. Passare all'account di Automazione.

    3. Nella pagina Account di Automazione, in Account Impostazioni, selezionare Identità.

    4. Nella scheda Assegnata dal sistema selezionare Lo stato come ON.

      Screenshot of setting the status to ON for System assigned managed identity.

  2. Dopo aver attivato l'identità gestita di sistema, è necessario specificare l'account per l'accesso necessario attenendosi alla procedura seguente:

    1. Nell'account di Automazione | Pagina Identità , scheda Assegnata dal sistema, in Autorizzazioni selezionare Assegnazioni di ruolo di Azure.
    2. Nella pagina Assegnazioni di ruolo di Azure selezionare +Aggiungi assegnazione di ruolo (anteprima).
    3. Nell'elenco a discesa Aggiungi assegnazione di ruolo (anteprima) selezionare Ambitocome SQL, selezionare la sottoscrizione, la risorsa nell'elenco a discesa e Il ruolo in base alle autorizzazioni minime necessarie e quindi selezionare Salva.

    Screenshot of adding role assignment when the system assigned managed identity's status is set to ON.

  3. Configurare SQL Server per l'autenticazione di Active Directory attenendosi alla procedura seguente:

    1. Passare a portale di Azure home page e selezionare SQL Server.
    2. Nella pagina SQL Server, in Impostazioni, selezionare Microsoft Entra ID.
    3. Selezionare Imposta amministratore per configurare SQL Server per l'autenticazione di Active Directory.
  4. Aggiungere l'autenticazione sul lato SQL attenendosi alla procedura seguente:

    1. Passare a portale di Azure home page e selezionare SQL Server.
    2. Nella pagina SQL Server, in Impostazioni, selezionare database SQL s.
    3. Selezionare il database per passare alla pagina Database SQL e selezionare Editor di query (anteprima) ed eseguire le due query seguenti:
      • CREATE U edizione Standard R "AutomationAccount" FROM EXTERNAL PROVIDER WITH OBJECT_ID=ObjectID
      • EXEC sp_addrolemember db_owner, "AutomationAccount"
        • Account di Automazione: sostituire con il nome dell'account di Automazione
        • ID oggetto: sostituire con l'ID oggetto (entità) per l'entità identità gestita dal sistema del passaggio 1.

Codice di esempio

Connessione ion ad Azure SQL Server

if ($($env:computerName) -eq "Client") {"Runbook running on Azure Client sandbox"} else {"Runbook running on " + $env:computerName}
Disable-AzContextAutosave -Scope Process
Connect-AzAccount -Identity
$Token = (Get-AZAccessToken -ResourceUrl https://database.windows.net).Token
Invoke-Sqlcmd -ServerInstance azuresqlserverxyz.database.windows.net -Database MyDBxyz -AccessToken $token -query 'select * from TableXYZ' 

Controllare le autorizzazioni dell'account sul lato SQL

SELECT roles.[name] as role_name, members.name as [user_name] 
from sys.database_role_members 
Join sys.database_principals roles on database_role_members.role_principal_id= roles.principal_id 
join sys.database_principals members on database_role_members.member_principal_id=members.principal_id 
Order By 
roles.[name], members.[name] 

Nota

Quando un server SQL è in esecuzione dietro un firewall, è necessario eseguire il runbook Automazione di Azure in un computer nella propria rete. Assicurarsi di configurare questo computer come ruolo di lavoro ibrido per runbook in modo che l'indirizzo IP o la rete non sia bloccato dal firewall. Per altre informazioni su come configurare un computer come ruolo di lavoro ibrido, vedere Creare un ruolo di lavoro ibrido.

Usare un ruolo di lavoro ibrido

Quando si usa un ruolo di lavoro ibrido, i moduli usati dal runbook devono essere installati localmente da un prompt di PowerShell con privilegi elevati. Ad esempio: - Install-module Az.Accounts and Install-module SqlServer. Per trovare i nomi dei moduli necessari, eseguire un comando in ogni cmdlet e quindi controllare l'origine. Ad esempio, per controllare il nome del modulo per il cmdlet Connect-AzAccounts che fa parte del modulo Az.Account, eseguire il comando : get-command Connect-AzAccount

Nota

È consigliabile aggiungere il codice seguente nella parte superiore di qualsiasi runbook che deve essere eseguito in un ruolo di lavoro ibrido: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}. Il codice consente di visualizzare il nodo in cui è in esecuzione e, nel caso in cui venga eseguito accidentalmente nel cloud di Azure invece del ruolo di lavoro ibrido, consente di determinare il motivo per cui un runbook non funzionava.

Passaggi successivi