Share via


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

SI APPLICA A: 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 il Amministrazione Microsoft Entra.
  • Connessione per Database di Azure per MySQL server flessibile tramite Microsoft Entra ID.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva.

  • Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

    Nota

    Con un account Gratuito di Azure, è ora possibile provare Database di Azure per MySQL server flessibile gratuitamente per 12 mesi. Per altre informazioni, vedere 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 il Amministrazione Microsoft Entra

Per creare un utente di Microsoft Entra Amministrazione, 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: Diagram of how to configure Microsoft Entra authentication.

  • 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 solo l'autenticazione con un account Microsoft Entra. Disabilita mysql_native_password'autenticazione 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

  • Selezionare Identità : selezionare/Aggiungi 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 alla messaggistica unificata 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 Entra di Microsoft.
    • Application.Read.ALL: consente l'accesso alle informazioni dell'entità servizio (applicazione) di Microsoft Entra.

Importante

Solo un Amministrazione istrator globale o un Amministrazione istrator 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, i Amministrazione 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 e selezionare un altro sovrascrive l'amministratore esistente di Microsoft Entra 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 una messaggistica unificata. In questo esempio vengono assegnate autorizzazioni all'messaggistica unificata umiservertest.

Per eseguire lo script, è necessario accedere come utente con un ruolo Amministrazione istrator globale o con ruolo con privilegi Amministrazione istrator.

Lo script concede le User.Read.Allautorizzazioni , GroupMember.Read.Alle Application.Read.ALL a un'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[0]  -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[0]  -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[0]  -Id $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 una messaggistica unificata, passare al portale di Azure. Nella risorsa MICROSOFT Entra ID passare ad Applicazioni aziendali. Selezionare Tutte le applicazioni per tipo di applicazione e cercare la messaggistica unificata creata.

Selezionare la messaggistica unificata e passare alle impostazioni Autorizzazioni in Sicurezza.

Dopo aver concesso le autorizzazioni all'MESSAGGISTICA unificata, queste vengono abilitate per tutti i server creati con l'messaggistica unificata assegnata come identità del server.

Connessione per Database di Azure per MySQL server flessibile con Microsoft Entra ID

1 - Eseguire l'autenticazione con Microsoft Entra ID

Per iniziare, eseguire l'autenticazione con Microsoft Entra ID usando lo strumento dell'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 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 Di base 64 che codifica tutte le informazioni sull'utente autenticato ed è destinata 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.

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

3 - Usare un token come password per l'accesso con MySQL

È necessario usare il token di accesso come password utente MySQL durante la connessione. È possibile usare il metodo descritto in precedenza per recuperare il token usando client GUI, ad esempio MySQL Workbench.

Connessione a Database di Azure per MySQL server flessibile tramite l'interfaccia della riga di comando di MySQL

Quando si usa l'interfaccia della riga di comando, è possibile usare questa abbreviata 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)

Connessione per Database di Azure per MySQL server flessibile con MySQL Workbench

  • Avviare MySQL Workbench e selezionare l'opzione Database, quindi selezionare Connessione 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 in Vault 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
  • Assicurarsi di usare il modo esatto in cui viene digitato il nome dell'utente o del gruppo Microsoft Entra
  • I nomi di utenti e gruppi di 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

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 '0000000-0000-0000-000000000000000' 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 Database di Azure per MySQL, seguire questa procedura dopo la connessione:

  1. Assicurarsi innanzitutto che l'utente <user>@yourtenant.onmicrosoft.com di Microsoft Entra sia un utente valido nel tenant di Microsoft Entra.
  2. Accedere all'istanza di Database di Azure per MySQL come utente di Microsoft Entra Amministrazione.
  3. 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

  1. MySQL ignora gli spazi iniziali e finali, pertanto 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 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 un gruppo Microsoft Entra per l'accesso al database, usare il meccanismo esatto come 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

La maggior parte dei driver sono supportati; Tuttavia, 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

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

    • Connessione or/Python: supportato
  • Ruby

    • mysql2: supportato
  • .NET

    • mysql-connector-net: supportato, è necessario aggiungere plug-in per mysql_clear_password
    • mysql-net/MySql Connessione or: 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, aggiunta ?tls=true&allowCleartextPasswords=true a stringa di connessione

Passaggi successivi