Share via


Använda Microsoft Entra-ID för autentisering med MySQL

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

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

Den här artikeln beskriver hur du konfigurerar Microsoft Entra ID-åtkomst med Azure Database for MySQL och hur du ansluter med en Microsoft Entra-token.

Viktigt!

Microsoft Entra-autentisering är endast tillgängligt för MySQL 5.7 och senare.

Ange Microsoft Entra-administratörsanvändaren

Endast en Microsoft Entra-administratörsanvändare kan skapa/aktivera användare för Microsoft Entra-ID-baserad autentisering. Följ följande steg för att skapa en Microsoft Entra-administratörsanvändare

  1. I Azure-portalen väljer du den instans av Azure Database for MySQL som du vill aktivera för Microsoft Entra-ID.
  2. Under Inställningar väljer du Active Directory-administratör:

set Microsoft Entra administrator

  1. Välj en giltig Microsoft Entra-användare i kundklientorganisationen för att vara Microsoft Entra-administratör.

Viktigt!

När du anger administratör läggs en ny användare till i Azure Database for MySQL-servern med fullständig administratörsbehörighet.

Endast en Microsoft Entra-administratör kan skapas per MySQL-server och val av en annan skriver över den befintliga Microsoft Entra-administratören som konfigurerats för servern.

När du har konfigurerat administratören kan du nu logga in:

Anslut till Azure Database for MySQL med microsoft entra-ID

Följande diagram på hög nivå sammanfattar arbetsflödet för att använda Microsoft Entra-autentisering med Azure Database for MySQL:

authentication flow

Vi har utformat Microsoft Entra-integreringen så att den fungerar med vanliga MySQL-verktyg som mysql CLI, som inte är Microsoft Entra-medvetna och endast stöder att ange användarnamn och lösenord vid anslutning till MySQL. Vi skickar Microsoft Entra-token som lösenord enligt bilden ovan.

För närvarande har vi testat följande klienter:

  • MySQLWorkbench
  • MySQL CLI

Vi har också testat de vanligaste programdrivrutinerna. Du kan se information i slutet av den här sidan.

Det här är de steg som en användare/ett program måste utföra för att autentisera med Microsoft Entra-ID som beskrivs nedan:

Förutsättningar

Du kan följa med i Azure Cloud Shell, en virtuell Azure-dator eller på din lokala dator. Kontrollera att Azure CLI är installerat.

Steg 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.

az login

Kommandot startar ett webbläsarfönster på autentiseringssidan för Microsoft Entra. Det kräver att du ger ditt Microsoft Entra-användar-ID och lösenordet.

Steg 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.

Exempel (för offentligt moln):

az account get-access-token --resource https://server-name.database.windows.net.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:

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://server-name.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 som ä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 precis innan du påbörjar inloggningen till Azure Database for MySQL. Du kan använda följande PowerShell-kommando för att se tokens giltighet.

$accessToken.ExpiresOn.DateTime

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

När du ansluter måste du använda åtkomsttoken som MySQL-användarlösenord. När du använder GUI-klienter som MySQLWorkbench kan du använda metoden som beskrivs ovan för att hämta token.

Använda MySQL CLI

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

Exempel (Linux/macOS):

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

Använda MySQL Workbench

  • Starta MySQL Workbench och klicka på alternativet Databas och klicka sedan på "Anslut till databasen"
  • I fältet värdnamn anger du MySQL FQDN t.ex. mydb.mysql.database.azure.com
  • I fältet användarnamn anger du MySQL Microsoft Entra-administratörsnamnet och lägger till det med MySQL-servernamnet, inte det fullständiga domännamnet, t.ex. user@tenant.onmicrosoft.com@mydb
  • I fältet lösenord klickar du på "Lagra i valv" och klistrar in åtkomsttoken från filen, t.ex. C:\temp\MySQLAccessToken.txt
  • Klicka på fliken Avancerat och kontrollera att du markerar "Aktivera plugin-program för Cleartext-autentisering"
  • Klicka på 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
  • Lägg alltid till servernamnet efter Microsoft Entra-användar-/gruppnamnet (t.ex. @mydb)
  • 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 (t.ex. GroupName@mydb)
  • Om namnet innehåller blanksteg använder du \ före varje blanksteg för att undkomma det

Observera 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 MySQL-server med Microsoft Entra-autentisering.

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

Om du vill lägga till en Microsoft Entra-användare i din Azure Database for MySQL-databas utför du följande steg efter anslutningen (se senare avsnitt om hur du ansluter):

  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 som ska 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 ska 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 samma mekanism som för användare, men anger i stället gruppnamnet:

Exempel:

CREATE AADUSER 'Prod_DB_Readonly';

När du loggar in använder medlemmar i gruppen sina personliga åtkomsttoken, men loggar med gruppnamnet som anges som användarnamn.

Tokenverifiering

Microsoft Entra-autentisering i Azure Database for MySQL säkerställer att användaren finns på MySQL-servern och kontrollerar tokens giltighet genom att verifiera innehållet i token. Följande verifieringssteg för token utförs:

  • Token är signerad av Microsoft Entra-ID och har inte manipulerats
  • Token utfärdades av Microsoft Entra-ID för den klientorganisation som är associerad med servern
  • Token har inte upphört att gälla
  • Token är för Azure Database for MySQL-resursen (och inte en annan Azure-resurs)

Kompatibilitet med programdrivrutiner

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

  • C/C++
    • libmysqlclient: Stöds
    • mysql-connector-c++: Stöds
  • Java
    • Anslut or/J (mysql-connector-java): Måste använda useSSL inställningen
  • Python
    • Anslut or/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/MySql Anslut or: 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-sql-driver: Stöds, lägg till i ?tls=true&allowCleartextPasswords=true anslutningssträng

Nästa steg