Dela via


Konfigurera Microsoft Entra-autentisering för Azure Database for MySQL – flexibel server

GÄLLER FÖR: Azure Database for MySQL – flexibel server

I den här självstudien får du lära dig hur du konfigurerar Microsoft Entra-autentisering för en flexibel Azure Database for MySQL-server.

I den här självstudien lär du dig att:

  • Konfigurera Microsoft Entra-administratören.
  • Anslut till en flexibel Azure Database for MySQL-server med Microsoft Entra-ID.

Förutsättningar

Konfigurera Microsoft Entra-administratören

Följ följande steg för att skapa en Microsoft Entra-administratörsanvändare.

  • I Azure Portal väljer du instansen av den flexibla Azure Database for MySQL-server som du vill aktivera för Microsoft Entra-ID.

  • Under fönstret Säkerhet väljer du Autentisering: Diagram över hur du konfigurerar Microsoft Entra-autentisering.

  • Det finns tre typer av autentisering:

    • Endast MySQL-autentisering – Som standard använder MySQL det inbyggda plugin-programmet för mysql_native_password-autentisering, som utför autentisering med hjälp av den interna metoden för lösenordshashing

    • Endast Microsoft Entra-autentisering – tillåter endast autentisering med ett Microsoft Entra-konto. Inaktiverar mysql_native_password autentisering och aktiverar serverparametern aad_auth_only

    • MySQL- och Microsoft Entra-autentisering – Tillåter autentisering med ett internt MySQL-lösenord eller ett Microsoft Entra-konto. Inaktiverar serverparametern aad_auth_only

  • Välj Identitet – Välj/Lägg till användartilldelad hanterad identitet. Följande behörigheter krävs för att tillåta att UMI läser från Microsoft Graph som serveridentitet. Alternativt kan du ge den användartilldelade hanterade identiteten rollen Katalogläsare .

Viktigt!

Endast en användare med rollen Privilegierad rolladministratör kan bevilja dessa behörigheter.

  • Välj en giltig Microsoft Entra-användare eller en Microsoft Entra-grupp i kundklientorganisationen som ska vara Microsoft Entra-administratör. När Microsoft Entra-autentiseringsstöd har aktiverats kan Microsoft Entra-administratörer läggas till som säkerhetsobjekt med behörighet att lägga till Microsoft Entra-användare på MySQL-servern.

    Kommentar

    Endast en Microsoft Entra-administratör kan skapas per MySQL-server och om du väljer en annan skrivs den befintliga Microsoft Entra-administratören över för servern.

Bevilja behörigheter till Användartilldelad hanterad identitet

Följande PowerShell-exempelskript ger nödvändiga behörigheter för en UMI. Det här exemplet tilldelar behörigheter till UMI umiservertest.

Om du vill köra skriptet måste du logga in som en användare med rollen Global administratör eller Privilegierad rolladministratör.

Skriptet ger behörigheten User.Read.All, GroupMember.Read.Alloch Application.Read.ALL till en UMI för åtkomst till 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

I de sista stegen i skriptet måste du använda rätt $MSI[ ]array nummer om du har fler UMI:er med liknande namn. Ett exempel är $AAD_SP.ObjectId[0].

Kontrollera behörigheter för användartilldelad hanterad identitet

Om du vill kontrollera behörigheter för en UMI går du till Azure Portal. Gå till Företagsprogram i Microsoft Entra-ID-resursen. Välj Alla program för programtyp och sök efter den UMI som skapades.

Välj UMI och gå till behörighetsinställningarna under Säkerhet.

När du har beviljat behörigheterna till UMI aktiveras de för alla servrar som skapats med UMI tilldelad som en serveridentitet.

Ansluta till en flexibel Azure Database for MySQL-server med Microsoft Entra-ID

1 – Autentisera med Microsoft Entra-ID

Börja med att autentisera med Microsoft Entra-ID med hjälp av Azure CLI-verktyget.
(Det här steget krävs inte i Azure Cloud Shell.)

  • Logga in på Azure-kontot med kommandot az login . Observera ID-egenskapen, som refererar till prenumerations-ID:t för ditt Azure-konto:

    az login
    

Kommandot startar ett webbläsarfönster till autentiseringssidan för Microsoft Entra. Det kräver att du ger ditt Användar-ID och lösenord för Microsoft Entra.

  • Om du har flera prenumerationer väljer du lämplig prenumeration med kommandot az account set:

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

2 – Hämta Microsoft Entra-åtkomsttoken

Anropa Azure CLI-verktyget för att hämta en åtkomsttoken för den Microsoft Entra-autentiserade användaren från steg 1 för att få åtkomst till azure database for MySQL – flexibel server.

  • Exempel (för offentligt moln):

    az account get-access-token --resource https://ossrdbms-aad.database.windows.net
    
  • Ovanstående resursvärde måste anges exakt som det visas. För andra moln kan resursvärdet sökas upp med hjälp av följande:

    az cloud show
    
  • För Azure CLI version 2.0.71 och senare kan kommandot anges i följande mer praktiska version för alla moln:

    az account get-access-token --resource-type oss-rdbms
    
  • Med PowerShell kan du använda följande kommando för att hämta åtkomsttoken:

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

När autentiseringen har slutförts returnerar Microsoft Entra-ID en åtkomsttoken:

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

Token är en Base 64-sträng som kodar all information om den autentiserade användaren och är riktad till Azure Database for MySQL-tjänsten.

Giltigheten för åtkomsttoken är mellan 5 minuter och 60 minuter. Vi rekommenderar att du hämtar åtkomsttoken innan du initierar inloggningen till en flexibel Azure Database for MySQL-server.

  • Du kan använda följande PowerShell-kommando för att se tokens giltighet.
   $accessToken.ExpiresOn.DateTime

3 – Använda en token som lösenord för att logga in med MySQL

Du måste använda åtkomsttoken som MySQL-användarlösenord när du ansluter. Du kan använda metoden som beskrivs ovan för att hämta token med hjälp av GUI-klienter som MySQL workbench.

Ansluta till en flexibel Azure Database for MySQL-server med MySQL CLI

När du använder CLI kan du använda den här förkortningen för att ansluta:

Exempel (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`

Exempel (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)

Ansluta till en flexibel Azure Database for MySQL-server med MySQL Workbench

  • Starta MySQL Workbench och välj alternativet Databas och välj sedan Anslut till databas.
  • I fältet värdnamn anger du MySQL FQDN, till exempel mysql.database.azure.com.
  • I fältet användarnamn anger du MySQL Microsoft Entra-administratörsnamnet. Exempel: user@tenant.onmicrosoft.com
  • I fältet lösenord väljer du Lagra i valv och klistrar in åtkomsttoken från filen, till exempel C:\temp\MySQLAccessToken.txt.
  • Välj fliken Avancerat och kontrollera att du markerar Aktivera plugin-programmet för Cleartext-autentisering.
  • Välj OK för att ansluta till databasen.

Viktiga överväganden vid anslutning

  • user@tenant.onmicrosoft.com är namnet på den Microsoft Entra-användare eller -grupp som du försöker ansluta som
  • Se till att använda exakt hur Microsoft Entra-användaren eller gruppnamnet stavas
  • Microsoft Entra-användar- och gruppnamn är skiftlägeskänsliga
  • När du ansluter som en grupp använder du bara gruppnamnet (till exempel GroupName)
  • Om namnet innehåller blanksteg använder du \ före varje blanksteg för att undkomma det

Kommentar

Inställningen "enable-cleartext-plugin" – du måste använda en liknande konfiguration med andra klienter för att se till att token skickas till servern utan att behöva hashas.

Nu autentiseras du till din flexibla MySQL-server med Microsoft Entra-autentisering.

Andra Microsoft Entra-administratörskommandon

  • Hantera Server Active Directory-administratör

    az mysql flexible-server ad-admin
    
  • Skapa en Active Directory-administratör

    az mysql flexible-server ad-admin create
    

    Exempel: Skapa Active Directory-administratör med användaren ,john@contoso.com administratörs-ID 00000000-0000-0000-0000-000000000000 och identiteten "testidentitet"

    az mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identity
    
  • Ta bort en Active Directory-administratör

    az mysql flexible-server ad-admin delete
    

    Exempel: Ta bort Active Directory-administratör

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Visa en lista över alla Active Directory-administratörer

    az mysql flexible-server ad-admin list
    

    Exempel: Lista Active Directory-administratörer

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Skaffa en Active Directory-administratör

    az mysql flexible-server ad-admin show
    

    Exempel: Hämta Active Directory-administratör

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Vänta tills Active Directory-administratören uppfyller vissa villkor

    az mysql flexible-server ad-admin wait
    

    Exempel:

    • Vänta tills Active Directory-administratören finns
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Vänta tills Active Directory-administratören har tagits bort
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
    

Skapa Microsoft Entra-användare i Azure Database for MySQL

Utför följande steg när du har anslutit för att lägga till en Microsoft Entra-användare i din Azure Database for MySQL-databas:

  1. Kontrollera först att Microsoft Entra-användaren <user>@yourtenant.onmicrosoft.com är en giltig användare i Microsoft Entra-klientorganisationen.
  2. Logga in på din Azure Database for MySQL-instans som Microsoft Entra-administratörsanvändare.
  3. Skapa användare <user>@yourtenant.onmicrosoft.com i Azure Database for MySQL.

Exempel:

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

För användarnamn som överskrider 32 tecken rekommenderar vi att du använder ett alias i stället för att användas när du ansluter:

Exempel:

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

Kommentar

  1. MySQL ignorerar inledande och avslutande blanksteg, så användarnamnet bör inte ha några inledande eller avslutande blanksteg.
  2. Att autentisera en användare via Microsoft Entra-ID ger inte användaren behörighet att komma åt objekt i Azure Database for MySQL-databasen. Du måste ge användaren de behörigheter som krävs manuellt.

Skapa Microsoft Entra-grupper i Azure Database for MySQL

Om du vill aktivera en Microsoft Entra-grupp för åtkomst till databasen använder du den exakta mekanismen som för användare, men anger i stället gruppnamnet:

Exempel:

CREATE AADUSER 'Prod_DB_Readonly';

När du loggar in använder gruppmedlemmar sina personliga åtkomsttoken men loggar in med det gruppnamn som anges som användarnamn.

Kompatibilitet med programdrivrutiner

De flesta drivrutiner stöds. Se dock till att använda inställningarna för att skicka lösenordet i klartext, så att token skickas utan ändring.

  • C/C++

    • libmysqlclient: Stöds
    • mysql-connector-c++: Stöds
  • Java

    • Connector/J (mysql-connector-java): Måste använda useSSL inställningen
  • Python

    • Anslutningsprogram/Python: Stöds
  • Ruby

    • mysql2: Stöds
  • .NET

    • mysql-connector-net: Behöver lägga till plugin-program för mysql_clear_password
    • mysql-net/MySqlConnector: Stöds
  • Node.js

    • mysqljs: Stöds inte (skickar inte token i klartext utan korrigering)
    • node-mysql2: Stöds
  • Perl

    • DBD::mysql: Stöds
    • Net::MySQL: Stöds inte
  • Go

    • go-sql-driver: Stöds, lägg till i ?tls=true&allowCleartextPasswords=true anslutningssträng
  • PHP

    • mysqli-tillägg: Stöds

    • PDO_MYSQL drivrutin: Stöds

Nästa steg