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
Ett Azure-konto med en aktiv prenumeration.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Kommentar
Med ett kostnadsfritt Azure-konto kan du nu prova en flexibel Azure Database for MySQL-server kostnadsfritt i 12 månader. Mer information finns i Prova azure database for MySQL – flexibel server kostnadsfritt.
Installera eller uppgradera Azure CLI till den senaste versionen. Se Installera Azure CLI.
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:
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 .
- User.Read.All: Tillåter åtkomst till Microsoft Entra-användarinformation.
- GroupMember.Read.All: Tillåter åtkomst till Microsoft Entra-gruppinformation.
- Application.Read.ALL: Tillåter åtkomst till Microsoft Entra-tjänstens huvudnamn (program).
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.All
och 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:
- Kontrollera först att Microsoft Entra-användaren
<user>@yourtenant.onmicrosoft.com
är en giltig användare i Microsoft Entra-klientorganisationen. - Logga in på din Azure Database for MySQL-instans som Microsoft Entra-administratörsanvändare.
- 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
- MySQL ignorerar inledande och avslutande blanksteg, så användarnamnet bör inte ha några inledande eller avslutande blanksteg.
- 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
- Connector/J (mysql-connector-java): Måste använda
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
- go-sql-driver: Stöds, lägg till i
PHP
mysqli-tillägg: Stöds
PDO_MYSQL drivrutin: Stöds
Nästa steg
- Granska begreppen för Microsoft Entra-autentisering med flexibel Azure Database for MySQL-server