Configurare l'autenticazione di Microsoft Entra per Database di Azure per MySQL - Server flessibile
Questa esercitazione illustra come configurare l'autenticazione di Microsoft Entra per Database di Azure per MySQL server flessibile.
In questa esercitazione apprenderai a:
- Configurare l'amministratore di Microsoft Entra.
- Connettersi a Database di Azure per MySQL server flessibile usando Microsoft Entra ID.
Prerequisiti
Un account Azure con una sottoscrizione attiva.
Se non si dispone di una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Nota
Al momento, con un account Azure gratuito, è possibile provare il server flessibile di Database di Azure per MySQL gratuitamente per 12 mesi. Per altre informazioni, vedere Usare un account gratuito di Azure per provare gratuitamente Database di Azure per MySQL - Server flessibile.
Installare o aggiornare l'interfaccia della riga di comando di Azure alla versione più recente. Vedere Installare l'interfaccia della riga di comando di Azure.
Configurare l'amministratore di Microsoft Entra
Per creare un utente di Microsoft Entra Admin, seguire questa procedura.
Nella portale di Azure selezionare l'istanza di Database di Azure per MySQL Server flessibile da abilitare per Microsoft Entra ID.
Nel riquadro Sicurezza selezionare Autenticazione:
Sono disponibili tre tipi di autenticazione:
Solo autenticazione MySQL: per impostazione predefinita, MySQL usa il plug-in di autenticazione mysql_native_password predefinito, che esegue l'autenticazione usando il metodo di hash delle password nativo
Solo autenticazione di Microsoft Entra: consente l'autenticazione solo con un account Microsoft Entra. Disabilita l'autenticazione mysql_native_password e attiva il parametro del server aad_auth_only
Autenticazione MySQL e Microsoft Entra: consente l'autenticazione usando una password MySQL nativa o un account Microsoft Entra. Disattiva il parametro del server aad_auth_only
Seleziona identità: selezionare/aggiungere l'identità gestita assegnata dall'utente. Per consentire alla messaggistica unificata 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 Lettori directory.
- User.Read.All: consente l'accesso alle informazioni utente di Microsoft Entra.
- GroupMember.Read.All: consente l'accesso alle informazioni del gruppo di 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 ruolo con privilegi può concedere queste autorizzazioni.
Selezionare un utente Microsoft Entra valido o un gruppo Microsoft Entra nel tenant del cliente per essere amministratore di Microsoft Entra. Dopo aver abilitato il supporto per l'autenticazione di Microsoft Entra, gli amministratori di Microsoft Entra possono essere aggiunti come entità di sicurezza con l'autorizzazione per aggiungere utenti di Microsoft Entra al server MySQL.
Nota
È possibile creare un solo amministratore di Microsoft Entra per ogni server MySQL; selezionandone un altro, l'amministratore esistente di Microsoft Entra configurato per il server verrà sovrascritto.
Concedere autorizzazioni all'identità gestita assegnata dall'utente
Lo script di PowerShell di esempio seguente concede le autorizzazioni necessarie per una messaggistica unificata. In questo esempio vengono assegnate autorizzazioni alla messaggistica unificata umiservertest
.
Per eseguire lo script, è necessario accedere come utente con un ruolo da amministratore globale o amministratore con ruolo privilegiato.
Lo script concede le autorizzazioni User.Read.All
, GroupMember.Read.All
e Application.Read.ALL
a una messaggistica unificata per accedere a Microsoft Graph.
# Script to assign permissions to the UMI "umiservertest"
import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID
Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "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-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]
#Output
#ObjectId AppId DisplayName
#-------- ----- -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change
$MSIName = "<managedIdentity>"; # Name of your user-assigned
$MSI = Get-AzureADServicePrincipal -SearchString $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.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
Nei passaggi finali dello script, se sono presenti più messaggistiche unificate 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 una UMI, passare al portale di Azure. Nella risorsa Microsoft Entra ID, selezionare Applicazioni aziendali. Selezionare Tutte le applicazioni per tipo di applicazione e cercare la UMI che è stata creata.
Selezionare la UMI e passare alle impostazioni delle Autorizzazioni nella sezione Sicurezza.
Dopo aver concesso le autorizzazioni alla messaggistica unificata, queste vengono abilitate per tutti i server creati con la messaggistica unificata assegnata come identità del server.
Connettersi al server flessibile Database di Azure per MySQL tramite Microsoft Entra ID
1- Eseguire l'autenticazione con Microsoft Entra ID
Per iniziare, eseguire l'autenticazione con Microsoft Entra ID utilizzando lo strumento di interfaccia della riga di comando di Azure.
Questo passaggio non è obbligatorio in Azure Cloud Shell.
Accedere all'account Azure usando il comando az login. Prendere nota della 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 l'assegnazione dell'ID utente e della password di Microsoft Entra.
Se si hanno più sottoscrizioni, scegliere la sottoscrizione appropriata usando il comando az account set:
az account set --subscription \<subscription id\>
2 - Recuperare il token di accesso di Microsoft Entra
Richiamare lo strumento dell'interfaccia della riga di comando di Azure per acquisire un token di accesso per l'utente autenticato di Microsoft Entra dal passaggio 1 per accedere Database di Azure per MySQL server flessibile.
Esempio (per il cloud pubblico):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
Il valore della risorsa precedente deve essere specificato esattamente come illustrato. Per altri cloud, il valore della risorsa può essere cercato usando quanto segue:
az cloud show
Per l'interfaccia della riga di comando di Azure versione 2.0.71 e successive, è possibile specificare il comando in questa versione più agevole per tutti i cloud:
az account get-access-token --resource-type oss-rdbms
Con PowerShell è possibile usare il comando seguente per acquisire il token di accesso:
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Al termine dell'autenticazione, l'ID 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 e che è indirizzata al servizio Database di Azure per MySQL.
La validità del token di accesso può essere compresa tra 5 e 60 minuti. È consigliabile ottenere il token di accesso prima di avviare l'accesso a Database di Azure per MySQL server flessibile.
- Per visualizzare la validità del token, usare il comando di PowerShell seguente.
$accessToken.ExpiresOn.DateTime
3 - Usare un token come password per l'accesso con MySQL
Durante la connessione è necessario usare il token di accesso come password utente MySQL. È possibile usare il metodo descritto in precedenza per recuperare il token usando client GUI, ad esempio MySQL Workbench.
Connettersi al server flessibile Database di Azure per MySQL tramite l'interfaccia della riga di comando di MySQL
Quando si usa l'interfaccia della riga di comando, è possibile usare questa scorciatoia per connettersi:
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 al server flessibile Database di Azure per MySQL tramite MySQL Workbench
- Avviare MySQL Workbench e selezionare l'opzione Database, 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 Password selezionare Archivia nell'insieme di credenziali e incollare il token di accesso dal file, ad esempio C:\temp\MySQLAccessToken.txt.
- Selezionare la scheda Avanzate e assicurarsi di selezionare Abilita plug-in di 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 che si sta tentando di connettersi come- Verificare di aver digitato in modo esatto il nome dell'utente o del gruppo Microsoft Entra
- I nomi utente e gruppo 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 eseguirne l'escape
Nota
Impostazione "enable-cleartext-plugin" : è necessario 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 l'amministratore di Active Directory con l'utente "john@contoso.com", l'ID 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 di Microsoft Entra al database di Azure per MySQL, seguire questa procedura dopo la connessione:
- Assicurarsi innanzitutto che l'utente
<user>@yourtenant.onmicrosoft.com
di Microsoft Entra sia un utente valido nel tenant di Microsoft Entra. - Accedere all'istanza di Database di Azure per MySQL come utente amministratore di Microsoft Entra.
- Creare l'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, è consigliabile usare invece un alias per la connessione:
Esempio:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Nota
- MySQL ignora gli spazi iniziali e finali e il nome utente non deve avere spazi iniziali o finali.
- L'autenticazione di un utente tramite Microsoft Entra non concede a quest'ultimo alcuna autorizzazione per accedere agli oggetti all'interno del database del servizio Database di Azure per MySQL. È necessario concedere manualmente le autorizzazioni necessarie all'utente.
Creare gruppi di Microsoft Entra in Database di Azure per MySQL
Per abilitare l'accesso al database da parte di un gruppo di Microsoft Entra, usare lo stesso meccanismo adottato per gli utenti, ma specificare invece il nome del gruppo:
Esempio:
CREATE AADUSER 'Prod_DB_Readonly';
Durante l'accesso, i membri del gruppo usano i token di accesso personali, ma accedono con il nome del gruppo specificato come nome utente.
Compatibilità con i driver delle applicazioni
È disponibile il supporto per la maggior parte dei driver, ma assicurarsi di usare le impostazioni per l'invio della password in testo non crittografato, in modo che il token venga inviato senza modifiche.
C/C++
- libmysqlclient: supportato
- mysql-connector-c++: supportato
Java
- Connector/J (mysql-connector-java): supportato, deve usare l'impostazione
useSSL
- Connector/J (mysql-connector-java): supportato, deve usare l'impostazione
Python
- Connettore/Python: supportato
Ruby
- mysql2: supportato
.NET
- mysql-connector-net: supportato, è necessario aggiungere il 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
- go-sql-driver: supportato, aggiungere
PHP
Estensione mysqli: supportata
Driver PDO_MYSQL: supportato