Configurare l'autenticazione di Microsoft Entra per Azure Database per MySQL - Server Flessibile

Questa esercitazione illustra come configurare l'autenticazione di Microsoft Entra per Database di Azure per MySQL Flexible Server.

In questa esercitazione apprenderai a:

  • Configurare l'amministratore Microsoft Entra.
  • Connettersi a Database di Azure per MySQL - Server flessibile tramite Microsoft Entra ID.

Prerequisiti

Configurare l'amministratore Microsoft Entra

Per creare un utente amministratore di Microsoft Entra, seguire questa procedura:

  • Nel portale di Azure selezionare l'istanza del server flessibile di Database di Azure per MySQL che si vuole abilitare per Microsoft Entra ID.

  • Nel riquadro Sicurezza selezionare Autenticazione: Diagramma di come configurare l'autenticazione di Microsoft Entra.

  • Scegliere tra tre tipi di autenticazione:

    • Solo autenticazione mySQL : per impostazione predefinita, MySQL usa il plug-in mysql_native_password di autenticazione predefinito, che esegue l'autenticazione usando il metodo di hash delle password nativo.
    • Solo autenticazione Microsoft Entra - Consente l'autenticazione solo tramite un account Microsoft Entra. mysql_native_password Disabilita l'autenticazione e attiva il parametro aad_auth_onlydel server .
    • Autenticazione di MySQL e Microsoft Entra: consente l'autenticazione usando una password MySQL nativa o un account Microsoft Entra. Disattiva il parametro aad_auth_onlydel server .
  • Selezionare Identità : selezionare o aggiungere un'identità gestita assegnata dall'utente. Per consentire all'UAMI di leggere da Microsoft Graph come identità del server, sono necessarie le autorizzazioni seguenti. In alternativa, assegnare all'identità gestita assegnata dall'utente, il ruolo Directory Readers.

    • User.Read.All: consente l'accesso alle informazioni utente Microsoft Entra.
    • GroupMember.Read.All: consente l'accesso alle informazioni del gruppo Microsoft Entra.
    • Application.Read.ALL: consente l'accesso alle informazioni dell'entità servizio (applicazione) di Microsoft Entra.

Importante

Solo un utente con almeno il ruolo di Amministratore di Ruolo con Privilegi può concedere queste autorizzazioni.

  • Selezionare un utente Microsoft Entra valido o un gruppo Microsoft Entra nel tenant per essere amministratore di Microsoft Entra per il server di database.

    Note

    È possibile creare un solo amministratore Microsoft Entra per ogni server MySQL. Selezionando un altro amministratore viene sovrascritto l'amministratore Microsoft Entra esistente configurato per il server.

Concedere le autorizzazioni all'identità gestita assegnata dall'utente

Lo script di PowerShell di esempio seguente concede le autorizzazioni necessarie per un'identità gestita assegnata dall'utente. In questo esempio vengono assegnate autorizzazioni a UMI umiservertest.

Per eseguire lo script, accedi come utente con il ruolo di Amministratore ruolo con privilegi.

Lo script concede le autorizzazioni User.Read.All, GroupMember.Read.All e Application.Read.ALL a un UMI per accedere a Microsoft Graph.

# Script to assign permissions to the UMI "umiservertest"

import-module Az.Resources
import-module Microsoft.Entra
$tenantId = '<tenantId>' # Your Azure AD tenant ID

Connect-Entra -TenantID $tenantId
# Log in as a user with a "Privileged Role Administrator" role
# Script to assign permissions to an existing UMI
# The following Microsoft Graph permissions are required:
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.ALL

# Search for Microsoft Graph
$AAD_SP = Get-AzADServicePrincipal -DisplayNameStartsWith "Microsoft Graph"
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]

#Output

#ObjectId                             AppId                                DisplayName
#--------                             -----                                -----------
#44444444-4444-4444-4444-444444444444 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44444444-4444-4444-4444-444444444444 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change

$MSIName = "<managedIdentity>";  # Name of your user-assigned
$MSI = Get-AzADServicePrincipal -DisplayNameStartsWith $MSIName
if($MSI.Count -gt 1)
{
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"

# Choose the right UMI

Exit
}

# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number

# Assign the app roles

$AAD_AppRole = $AAD_SP.AppRole | Where-Object {$_.Value -eq "User.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRole | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRole | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id

Nei passaggi finali dello script, se sono presenti più UMI con nomi simili, è necessario usare il numero corretto $MSI[ ]array . Un esempio è $AAD_SP.ObjectId[0].

Controllare le autorizzazioni per l'identità gestita assegnata dall'utente

Per controllare le autorizzazioni per un UMI, vai al portale Azure. Nella risorsa Microsoft Entra ID, selezionare Applicazioni aziendali. Selezionare Tutte le applicazioni per Tipo di Applicazione e cercare l'UMI che avete creato.

Selezionare l'identità gestita assegnata dall'utente e andare alle impostazioni Autorizzazioni in Sicurezza.

Quando concedi le autorizzazioni all'UMI, queste si applicano a tutti i server che crei con l'UMI assegnata come identità del server.

Connettersi al server flessibile di Database di Azure per MySQL usando Microsoft Entra ID

1 - Eseguire l'autenticazione con Microsoft Entra ID

Per iniziare, eseguire l'autenticazione con Microsoft Entra ID usando lo strumento interfaccia della riga di comando di Azure. Questo passaggio non è obbligatorio in Azure Cloud Shell.

  • Accedere all'account Azure usando il comando az login . Si noti la proprietà ID, che fa riferimento all'ID della sottoscrizione per l'account Azure.

    az login
    

Il comando avvia una finestra del browser nella pagina di autenticazione di Microsoft Entra. Richiede di specificare l'ID utente e la password di Microsoft Entra.

  • Se si hanno più sottoscrizioni, scegliere la sottoscrizione appropriata usando il az account set comando :

    az account set --subscription \<subscription id\>
    

2 - Recuperare il token di accesso di Microsoft Entra

Richiama lo strumento interfaccia della riga di comando di Azure per ottenere un token di accesso per l'utente autenticato con Microsoft Entra del passaggio 1. Usa questo token per accedere ad Database di Azure per MySQL Flexible Server.

  • interfaccia della riga di comando di Azure esempio per ottenere il token di accesso:

    az account get-access-token --resource-type oss-rdbms
    
  • Azure PowerShell esempio per ottenere il token di accesso:

    $accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net
    $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
    

Usare quanto segue ResourceUrl in PowerShell nel caso in cui il cloud di destinazione sia diverso.

  • Governo USA: https://ossrdbms-aad.database.usgovcloudapi.net
  • Cina: https://ossrdbms-aad.database.chinacloudapi.cn

Microsoft Entra restituisce un token di accesso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Il token è una stringa base 64 che codifica tutte le informazioni sull'utente autenticato ed è destinata al servizio Database di Azure per MySQL.

Il token di accesso è valido da 5 a 60 minuti. Ottieni il token di accesso prima di accedere ad Database di Azure per MySQL Server flessibile.

  • Usare il comando di PowerShell seguente per visualizzare la validità del token.
    $accessToken.ExpiresOn.DateTime

3 - Usare un token come password per accedere con MySQL

Usare il token di accesso come password utente MySQL durante la connessione.

Connettersi al server flessibile Database di Azure per MySQL tramite l'interfaccia della riga di comando di MySQL

Quando usi la CLI, usa questa forma abbreviata per connetterti:

Esempio (Linux/macOS):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`

Esempio (PowerShell):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$((Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net).Token)

Connettersi ad Database di Azure per MySQL Flexible Server usando MySQL Workbench

  • Avviare MySQL Workbench e selezionare l'opzione Database e quindi selezionare Connetti al database.
  • Nel campo nome host immettere il nome di dominio completo MySQL, ad esempio mysql.database.azure.com.
  • Nel campo nome utente immettere il nome amministratore di Microsoft Entra di MySQL. Ad esempio: user@tenant.onmicrosoft.com.
  • Nel campo della password, seleziona Salva nel vault e incolla il token di accesso dal file, ad esempio C:\temp\MySQLAccessToken.txt.
  • Selezionare la scheda Avanzate e assicurarsi di spuntare Abilita il plug-in Autenticazione Cleartext.
  • Selezionare OK per connettersi al database.

Considerazioni importanti per la connessione

  • user@tenant.onmicrosoft.com è il nome dell'utente o del gruppo Microsoft Entra con cui ci si connette.
  • Usare l'ortografia esatta per il nome dell'utente o del gruppo Microsoft Entra.
  • I nomi di utenti e gruppi in Microsoft Entra fanno distinzione tra maiuscole e minuscole.
  • Quando ci si connette come gruppo, usare solo il nome del gruppo , ad esempio GroupName.
  • Se il nome contiene spazi, usare \ prima di ogni spazio per eseguire l'escape.

Note

Per l'impostazione enable-cleartext-plugin , usare una configurazione simile con altri client per assicurarsi che il token venga inviato al server senza che venga eseguito l'hashing.

A questo momento si è autenticati nel server flessibile MySQL usando l'autenticazione Microsoft Entra.

Altri comandi di amministrazione di Microsoft Entra

  • Gestire l'amministratore di Active Directory del server

    az mysql flexible-server ad-admin
    
  • Creare un amministratore di Active Directory

    az mysql flexible-server ad-admin create
    

    Esempio: Creare un amministratore di Active Directory con l'utente john@contoso.com, l'ID dell'amministratore 00000000-0000-0000-0000-000000000000 e l'identità test-identity

    az mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identity
    
  • Eliminare un amministratore di Active Directory

    az mysql flexible-server ad-admin delete
    

    Esempio: Eliminare l'amministratore di Active Directory

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Elencare tutti gli amministratori di Active Directory

    az mysql flexible-server ad-admin list
    

    Esempio: Elencare gli amministratori di Active Directory

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Ottenere un amministratore di Active Directory

    az mysql flexible-server ad-admin show
    

    Esempio: Ottenere l'amministratore di Active Directory

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Attendere che l'amministratore di Active Directory soddisfi determinate condizioni

    az mysql flexible-server ad-admin wait
    

    Esempi:

    • Attendere che l'amministratore di Active Directory esista

      az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
      
    • Attendere l'eliminazione dell'amministratore di Active Directory

      az mysql flexible-server ad-admin wait -g testgroup -s testsvr -deleted
      

Creare utenti di Microsoft Entra in Database di Azure per MySQL

Per aggiungere un utente Microsoft Entra al database Database di Azure per MySQL, completare i passaggi seguenti dopo la connessione:

  1. Assicurarsi che l'utente Microsoft Entra sia un utente <user>@yourtenant.onmicrosoft.com valido nel tenant Microsoft Entra.
  2. Accedi all'istanza di Database di Azure per MySQL come utente amministratore di Microsoft Entra.
  3. Creare un utente <user>@yourtenant.onmicrosoft.com in Database di Azure per MySQL.

Esempio:

CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';

Per i nomi utente che superano i 32 caratteri, usare un alias anziché il nome utente completo.

Esempio:

CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';

Note

  1. MySQL ignora gli spazi iniziali e finali, quindi il nome utente non deve contenere spazi iniziali o finali.
  2. L'autenticazione di un utente tramite Microsoft Entra ID non concede all'utente alcuna autorizzazione per accedere agli oggetti all'interno del database di Database di Azure per MySQL. È necessario concedere all'utente le autorizzazioni necessarie manualmente.

Creare gruppi di Microsoft Entra nel database Azure per MySQL

Per consentire a un gruppo di Microsoft Entra di accedere al database, usare lo stesso meccanismo degli utenti, ma specificare il nome del gruppo:

Esempio:

CREATE AADUSER 'Prod_DB_Readonly';

Quando i membri del gruppo accedono, usano i token di accesso personali, ma accedono usando il nome del gruppo come nome utente.

Compatibilità con i driver dell'applicazione

La maggior parte dei driver è supportata. Tuttavia, assicurarsi di usare le impostazioni per l'invio della password in testo non crittografato, in modo che il token non venga modificato.

  • C/C++

    • libmysqlclient: supportato
    • mysql-connector-c++: Supportato
  • Java

    • Connector/J (mysql-connector-java): supportato, deve usare l'impostazione useSSL
  • Python

    • Connettore/Python: Supportato
  • Ruby

    • mysql2: supportato
  • .NET

    • mysql-connector-net: supportato, è necessario aggiungere plug-in per mysql_clear_password
    • mysql-net/MySqlConnector: supportato
  • Node.js

    • mysqljs: non supportato (non invia il token in testo non crittografato senza patch)
    • node-mysql2: supportato
  • Perl

    • DBD::mysql: Supportato
    • Net::MySQL: non supportato
  • Go

    • go-sql-driver: supportato, aggiungere ?tls=true&allowCleartextPasswords=true alla stringa di connessione
  • PHP

    • mysqli estensione: supportata

    • Driver PDO_MYSQL: supportato

Il server flessibile di Database di Azure per MySQL sta effettuando la transizione dall'implementazione legacy dell'autenticazione Microsoft Entra basata su JWT a Microsoft Identity Security Essentials (MISE). Il server flessibile MySQL convalida Microsoft Entra token di accesso durante l'autenticazione. Per migliorare la sicurezza e garantire un comportamento di autenticazione coerente nel servizio, gli aggiornamenti futuri della piattaforma applicano una convalida più rigorosa dei gruppi di destinatari dei token.

A partire da ottobre 2026, gli aggiornamenti futuri del servizio non supporterà le applicazioni che acquisiscono token per gruppi di destinatari diversi da ossrdbms. Dopo l'abilitazione della convalida del gruppo di destinatari più restrittiva, le connessioni che presentano token con gruppi di destinatari non supportati avranno esito negativo. È possibile connettersi al server flessibile Database di Azure per MySQL solo dopo aver aggiornato il token di accesso per usare il gruppo di destinatari supportato.

Richiedere un token di accesso aggiornato per le applicazioni usando il comando seguente:

az account get-access-token --resource-type oss-rdbms

Se si rilasciano i token a livello di codice, usare l'ambito corretto nel frammento di codice seguente:

String scope = https://ossrdbms-aad.database.<cloud-domain>/.default AccessToken token = await credential.GetTokenAsync(new TokenRequestContext([scope]));

Usare i valori di ambito seguenti a seconda del cloud di destinazione:

  • Pubblico: https://ossrdbms-aad.database.windows.net/.default
  • Governo USA: https://ossrdbms-aad.database.usgovcloudapi.net/.default
  • Cina: https://ossrdbms-aad.database.chinacloudapi.cn/.default

Se l'applicazione usa l'autenticazione Microsoft Entra per connettersi a Database di Azure per MySQL server flessibile, esaminare la configurazione dell'acquisizione del token e assicurarsi di richiedere i token di accesso per il gruppo di destinatari corretto. Questa raccomandazione si applica a tutti i flussi di autenticazione, incluse applicazioni, automazione, identità gestite, entità servizio e scenari di autenticazione basati sull'utente. L'uso del gruppo di destinatari consigliato consente di garantire la compatibilità con i miglioramenti futuri del servizio e i miglioramenti della sicurezza. Consente di evitare future interruzioni della connettività e assicura che le applicazioni rimangano compatibili con miglioramenti continui di sicurezza e autenticazione.

Perché è importante:

Gli aggiornamenti futuri del servizio non supportano le applicazioni che acquisiscono token per gruppi di destinatari diversi da ossrdbms. Dopo l'abilitazione della convalida più restrittiva dei destinatari, le connessioni che presentano token con gruppi di destinatari non supportati non riescono a eseguire l'autenticazione. Non possono connettersi a Database di Azure per MySQL server flessibile fino a quando non vengono aggiornati per usare il gruppo di destinatari supportato.

Passo successivo