Delen via


Microsoft Entra-id gebruiken voor verificatie met MySQL

VAN TOEPASSING OP: Azure Database for MySQL - enkele server

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

In dit artikel worden de stappen beschreven voor het configureren van Microsoft Entra ID-toegang met Azure Database for MySQL en hoe u verbinding maakt met behulp van een Microsoft Entra-token.

Belangrijk

Microsoft Entra-verificatie is alleen beschikbaar voor MySQL 5.7 en hoger.

De Microsoft Entra Admin-gebruiker instellen

Alleen een Microsoft Entra Admin-gebruiker kan gebruikers maken/inschakelen voor verificatie op basis van Microsoft Entra ID. Als u een Microsoft Entra Admin-gebruiker wilt maken, volgt u de volgende stappen

  1. Selecteer in Azure Portal het exemplaar van Azure Database for MySQL dat u wilt inschakelen voor Microsoft Entra-id.
  2. Selecteer Active Directory-beheerder onder Instellingen.
  3. Selecteer een geldige Microsoft Entra-gebruiker in de tenant van de klant als Microsoft Entra-beheerder.

Belangrijk

Wanneer u de beheerder instelt, wordt er een nieuwe gebruiker toegevoegd aan de Azure Database for MySQL-server met volledige beheerdersmachtigingen.

Er kan slechts één Microsoft Entra-beheerder per MySQL-server worden gemaakt en de selectie van een andere server overschrijft de bestaande Microsoft Entra-beheerder die is geconfigureerd voor de server.

Nadat u de beheerder hebt geconfigureerd, kunt u zich nu aanmelden:

Verbinding maken met Azure Database for MySQL met behulp van Microsoft Entra ID

We hebben de Microsoft Entra-integratie ontworpen om te werken met veelgebruikte MySQL-hulpprogramma's, zoals de mysql CLI, die niet op de hoogte zijn van Microsoft Entra en alleen ondersteuning bieden voor het opgeven van gebruikersnaam en wachtwoord bij het maken van verbinding met MySQL. We geven het Microsoft Entra-token door als het wachtwoord.

We hebben momenteel de volgende clients getest:

  • MySQLWorkbench
  • MySQL CLI

We hebben ook de meest voorkomende toepassingsstuurprogramma's getest. Aan het einde van deze pagina ziet u details.

Dit zijn de stappen die een gebruiker/toepassing moet uitvoeren voor verificatie met Microsoft Entra-id die hieronder wordt beschreven:

Vereisten

U kunt meegaan in Azure Cloud Shell, een Azure-VM of op uw lokale computer. Zorg ervoor dat de Azure CLI is geïnstalleerd.

Stap 1: Verifiëren met Microsoft Entra-id

Begin met verificatie met Microsoft Entra ID met behulp van het Azure CLI-hulpprogramma. Deze stap is niet vereist in Azure Cloud Shell.

az login

Met de opdracht wordt een browservenster geopend op de microsoft Entra-verificatiepagina. Hiervoor moet u uw Microsoft Entra-gebruikers-id en het wachtwoord opgeven.

Stap 2: Microsoft Entra-toegangstoken ophalen

Roep het Azure CLI-hulpprogramma aan om een toegangstoken te verkrijgen voor de geverifieerde Microsoft Entra-gebruiker uit stap 1 voor toegang tot Azure Database for MySQL.

Voorbeeld (voor openbare cloud):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

De bovenstaande resourcewaarde moet exact worden opgegeven zoals wordt weergegeven. Voor andere clouds kan de resourcewaarde worden opgezoekd met behulp van:

az cloud show

Voor Azure CLI versie 2.0.71 en hoger kan de opdracht worden opgegeven in de volgende handigere versie voor alle clouds:

az account get-access-token --resource-type oss-rdbms

Met Behulp van PowerShell kunt u de volgende opdracht gebruiken om het toegangstoken te verkrijgen:

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

Nadat de verificatie is geslaagd, retourneert Microsoft Entra ID een toegangstoken:

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

Het token is een Base 64-tekenreeks die alle informatie over de geverifieerde gebruiker codeert en die is gericht op de Azure Database for MySQL-service.

De geldigheid van het toegangstoken ligt tussen 5 minuten en 60 minuten. U wordt aangeraden het toegangstoken net voordat u de aanmelding bij Azure Database for MySQL start. U kunt de volgende PowerShell-opdracht gebruiken om de geldigheid van het token te bekijken.

$accessToken.ExpiresOn.DateTime

Stap 3: Token gebruiken als wachtwoord voor het aanmelden met MySQL

Wanneer u verbinding maakt, moet u het toegangstoken gebruiken als het mySQL-gebruikerswachtwoord. Wanneer u GUI-clients zoals MySQLWorkbench gebruikt, kunt u de hierboven beschreven methode gebruiken om het token op te halen.

MySQL CLI gebruiken

Wanneer u de CLI gebruikt, kunt u deze korte hand gebruiken om verbinding te maken:

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

MySQL Workbench gebruiken

  • Start MySQL Workbench en klik op de optie Database en klik vervolgens op Verbinding maken met database
  • Voer in het veld hostnaam de MySQL-FQDN in, bijvoorbeeld. mydb.mysql.database.azure.com
  • Voer in het veld gebruikersnaam de beheerdersnaam van MySQL Microsoft Entra in en voeg deze toe met de naam van de MySQL-server, niet de FQDN, bijvoorbeeld user@tenant.onmicrosoft.com@mydb
  • Klik in het wachtwoordveld op 'Opslaan in kluis' en plak het toegangstoken uit bestand, bijvoorbeeld C:\temp\MySQLAccessToken.txt
  • Klik op het tabblad Geavanceerd en controleer of u 'Cleartext Authentication Plugin inschakelen' inschakelt
  • Klik op OK om verbinding te maken met de database

Belangrijke overwegingen bij het verbinden:

  • user@tenant.onmicrosoft.com is de naam van de Microsoft Entra-gebruiker of -groep die u probeert te verbinden als
  • Voeg altijd de servernaam toe na de Microsoft Entra-naam van de gebruiker/groep (bijvoorbeeld @mydb)
  • Zorg ervoor dat u de exacte manier gebruikt waarop de Microsoft Entra-gebruikersnaam of -groepsnaam is gespeld
  • Microsoft Entra-gebruikers- en groepsnamen zijn hoofdlettergevoelig
  • Wanneer u verbinding maakt als een groep, gebruikt u alleen de groepsnaam (bijvoorbeeld GroupName@mydb)
  • Als de naam spaties bevat, gebruikt \ u vóór elke spatie om deze te escapen

Let op de instelling 'enable-cleartext-plugin': u moet een vergelijkbare configuratie gebruiken met andere clients om ervoor te zorgen dat het token naar de server wordt verzonden zonder hash te worden uitgevoerd.

U bent nu geverifieerd bij uw MySQL-server met behulp van Microsoft Entra-verificatie.

Microsoft Entra-gebruikers maken in Azure Database for MySQL

Als u een Microsoft Entra-gebruiker wilt toevoegen aan uw Azure Database for MySQL-database, moet u de volgende stappen uitvoeren nadat u verbinding hebt gemaakt (zie de volgende sectie over het maken van verbinding):

  1. Zorg er eerst voor dat de Microsoft Entra-gebruiker een geldige gebruiker <user>@yourtenant.onmicrosoft.com is in de Microsoft Entra-tenant.
  2. Meld u als microsoft Entra Admin-gebruiker aan bij uw Azure Database for MySQL-exemplaar.
  3. Maak een gebruiker <user>@yourtenant.onmicrosoft.com in Azure Database for MySQL.

Voorbeeld:

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

Voor gebruikersnamen die langer zijn dan 32 tekens, wordt u aangeraden in plaats daarvan een alias te gebruiken om te worden gebruikt bij het verbinden:

Voorbeeld:

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

Notitie

  1. MySQL negeert voorloop- en volgspaties, zodat de gebruikersnaam geen voorloop- of volgspaties mag hebben.
  2. Het verifiëren van een gebruiker via Microsoft Entra-id geeft de gebruiker geen machtigingen voor toegang tot objecten in de Azure Database for MySQL-database. U moet de gebruiker handmatig de vereiste machtigingen verlenen.

Microsoft Entra-groepen maken in Azure Database for MySQL

Als u een Microsoft Entra-groep wilt inschakelen voor toegang tot uw database, gebruikt u hetzelfde mechanisme als voor gebruikers, maar geeft u in plaats daarvan de groepsnaam op:

Voorbeeld:

CREATE AADUSER 'Prod_DB_Readonly';

Wanneer u zich aanmeldt, gebruiken leden van de groep hun persoonlijke toegangstokens, maar ondertekenen ze met de groepsnaam die is opgegeven als de gebruikersnaam.

Tokenvalidatie

Microsoft Entra-verificatie in Azure Database for MySQL zorgt ervoor dat de gebruiker in de MySQL-server bestaat en controleert de geldigheid van het token door de inhoud van het token te valideren. De volgende tokenvalidatiestappen worden uitgevoerd:

  • Token is ondertekend door Microsoft Entra-id en is niet gemanipuleerd met
  • Token is uitgegeven door Microsoft Entra-id voor de tenant die is gekoppeld aan de server
  • Token is niet verlopen
  • Token is voor de Azure Database for MySQL-resource (en niet voor een andere Azure-resource)

Compatibiliteit met toepassingsstuurprogramma's

De meeste stuurprogramma's worden ondersteund, maar zorg ervoor dat u de instellingen gebruikt voor het verzenden van het wachtwoord in duidelijke tekst, zodat het token zonder wijziging wordt verzonden.

  • C/C++
    • libmysqlclient: ondersteund
    • mysql-connector-c++: ondersteund
  • Java
    • Connector/J (mysql-connector-java): Ondersteund, moet instelling gebruiken useSSL
  • Python
    • Connector/Python: ondersteund
  • Robijn
    • mysql2: ondersteund
  • .NET
    • mysql-connector-net: ondersteund, moet invoegtoepassing voor mysql_clear_password toevoegen
    • mysql-net/MySqlConnector: ondersteund
  • Node.js
    • mysqljs: niet ondersteund (verzendt geen token in duidelijke tekst zonder patch)
    • node-mysql2: ondersteund
  • Perl
    • DBD::mysql: ondersteund
    • Net::MySQL: Niet ondersteund
  • Gaan
    • go-sql-driver: Ondersteund, toevoegen ?tls=true&allowCleartextPasswords=true aan verbindingsreeks

Volgende stappen