Share via


Microsoft Entra-verificatie instellen voor Azure Database for MySQL - Flexibele server

VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server

In deze zelfstudie leert u hoe u Microsoft Entra-verificatie instelt voor azure Database for MySQL Flexibele server.

In deze zelfstudie leert u het volgende:

  • Configureer de Microsoft Entra-beheerder.
  • Maak verbinding met de flexibele Azure Database for MySQL-server met behulp van Microsoft Entra ID.

Vereisten

De Microsoft Entra-beheerder configureren

Volg de volgende stappen om een Microsoft Entra Admin-gebruiker te maken.

  • Selecteer in Azure Portal het exemplaar van de flexibele Azure Database for MySQL-server die u wilt inschakelen voor Microsoft Entra-id.

  • Selecteer Verificatie in het deelvenster Beveiliging:Diagram van het configureren van Microsoft Entra-verificatie.

  • Er zijn drie typen verificatie beschikbaar:

    • Alleen MySQL-verificatie : MySQL maakt standaard gebruik van de ingebouwde mysql_native_password-verificatieinvoegtoepassing, waarmee verificatie wordt uitgevoerd met behulp van de systeemeigen methode voor wachtwoord-hashing

    • Alleen Microsoft Entra-verificatie: alleen verificatie met een Microsoft Entra-account is toegestaan. Schakelt mysql_native_password verificatie uit en schakelt de serverparameter in aad_auth_only

    • MySQL- en Microsoft Entra-verificatie : hiermee staat u verificatie toe met behulp van een systeemeigen MySQL-wachtwoord of een Microsoft Entra-account. Hiermee schakelt u de serverparameter uit aad_auth_only

  • Identiteit selecteren : door de gebruiker toegewezen beheerde identiteit selecteren/toevoegen. De volgende machtigingen zijn vereist om de UMI toe te staan microsoft Graph als serveridentiteit te lezen. U kunt ook de door de gebruiker toegewezen beheerde identiteit de rol Directory Readers geven.

Belangrijk

Alleen een gebruiker met ten minste de rol Beheerder van bevoorrechte rol kan deze machtigingen verlenen.

  • Selecteer een geldige Microsoft Entra-gebruiker of een Microsoft Entra-groep in de tenant van de klant als Microsoft Entra-beheerder. Zodra ondersteuning voor Microsoft Entra-verificatie is ingeschakeld, kunnen Microsoft Entra-beheerders worden toegevoegd als beveiligingsprincipaal met toestemming om Microsoft Entra-gebruikers toe te voegen aan de MySQL-server.

    Notitie

    Er kan slechts één Microsoft Entra-beheerder per MySQL-server worden gemaakt en door een andere server te selecteren, wordt de bestaande Microsoft Entra-beheerder die voor de server is geconfigureerd, overschreven.

Machtigingen verlenen aan door de gebruiker toegewezen beheerde identiteit

Het volgende PowerShell-voorbeeldscript verleent de benodigde machtigingen voor een UMI. In dit voorbeeld worden machtigingen toegewezen aan de UMI umiservertest.

Als u het script wilt uitvoeren, moet u zich aanmelden als een gebruiker met de rol Globale beheerder of Beheerder met bevoorrechte rol.

Het script verleent de User.Read.All, GroupMember.Read.Allen Application.Read.ALL machtigingen aan een UMI voor toegang tot 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

Als u in de laatste stappen van het script meer UMI's met vergelijkbare namen hebt, moet u het juiste $MSI[ ]array nummer gebruiken. Een voorbeeld is $AAD_SP.ObjectId[0].

Machtigingen controleren voor door de gebruiker toegewezen beheerde identiteit

Als u machtigingen voor een UMI wilt controleren, gaat u naar Azure Portal. Ga in de Microsoft Entra ID-resource naar Bedrijfstoepassingen. Selecteer Alle toepassingen voor toepassingstype en zoek naar de UMI die is gemaakt.

Selecteer de UMI en ga naar de instellingen voor machtigingen onder Beveiliging.

Nadat u de machtigingen aan de UMI hebt verleend, worden deze ingeschakeld voor alle servers die zijn gemaakt met de UMI die is toegewezen als een serveridentiteit.

Verbinding maken met azure Database for MySQL flexibele server met behulp van Microsoft Entra-id

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

  • Meld u aan bij het Azure-account met behulp van az login command. Noteer de id-eigenschap, die verwijst naar de abonnements-id voor uw Azure-account:

    az login
    

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

  • Als u meerdere abonnementen hebt, kiest u het juiste abonnement met behulp van de opdracht az account set:

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

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 de flexibele Azure Database for MySQL-server.

  • 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 het volgende:

    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 De 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 gericht is op de Azure Database for MySQL-service.

De geldigheid van het toegangstoken ligt tussen 5 minuten en 60 minuten. U wordt aangeraden het toegangstoken op te halen voordat u zich aanmeldt bij de flexibele Azure Database for MySQL-server.

  • U kunt de volgende PowerShell-opdracht gebruiken om de geldigheid van het token te bekijken.
   $accessToken.ExpiresOn.DateTime

3 - Een token gebruiken als een wachtwoord voor het aanmelden met MySQL

U moet het toegangstoken gebruiken als het mySQL-gebruikerswachtwoord wanneer u verbinding maakt. U kunt de hierboven beschreven methode gebruiken om het token op te halen met behulp van GUI-clients zoals MySQL workbench.

Verbinding maken met Azure Database for MySQL Flexibele server met behulp van MySQL CLI

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

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

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

Verbinding maken met een flexibele Azure Database for MySQL-server met behulp van MySQL Workbench

  • Start MySQL Workbench en selecteer de optie Database en selecteer vervolgens Verbinding maken met database.
  • Voer in het veld hostnaam de MySQL-FQDN in, bijvoorbeeld mysql.database.azure.com.
  • Voer in het veld Gebruikersnaam de beheerdersnaam van MySQL Microsoft Entra in. Bijvoorbeeld: user@tenant.onmicrosoft.com.
  • Selecteer Opslaan in kluis in het wachtwoordveld en plak het toegangstoken in het bestand, bijvoorbeeld C:\temp\MySQLAccessToken.txt.
  • Selecteer het tabblad Geavanceerd en zorg ervoor dat u de invoegtoepassing Cleartext Authentication inschakelen inschakelt.
  • Selecteer 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
  • 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)
  • Als de naam spaties bevat, gebruikt \ u vóór elke spatie om deze te escapen

Notitie

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 flexibele MySQL-server met behulp van Microsoft Entra-verificatie.

Andere Microsoft Entra-beheeropdrachten

  • Active Directory-beheerder van de server beheren

    az mysql flexible-server ad-admin
    
  • Een Active Directory-beheerder maken

    az mysql flexible-server ad-admin create
    

    Voorbeeld: Active Directory-beheerder maken met gebruiker 'john@contoso.com', beheerders-id '0000000-0000-0000-0000-000000000000' en identiteit '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
    
  • Een Active Directory-beheerder verwijderen

    az mysql flexible-server ad-admin delete
    

    Voorbeeld: Active Directory-beheerder verwijderen

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Alle Active Directory-beheerders weergeven

    az mysql flexible-server ad-admin list
    

    Voorbeeld: Active Directory-beheerders vermelden

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Een Active Directory-beheerder ophalen

    az mysql flexible-server ad-admin show
    

    Voorbeeld: Active Directory-beheerder ophalen

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Wacht tot de Active Directory-beheerder aan bepaalde voorwaarden voldoet

    az mysql flexible-server ad-admin wait
    

    Voorbeelden:

    • Wacht totdat de Active Directory-beheerder bestaat
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Wacht totdat de Active Directory-beheerder is verwijderd
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
    

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:

  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, is het raadzaam om 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, dus de gebruikersnaam mag geen voorloop- of volgspaties 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 het exacte mechanisme voor gebruikers, maar geeft u in plaats daarvan de groepsnaam op:

Voorbeeld:

CREATE AADUSER 'Prod_DB_Readonly';

Wanneer u zich aanmeldt, gebruiken groepsleden hun persoonlijke toegangstokens, maar melden ze zich aan met de groepsnaam die is opgegeven als de gebruikersnaam.

Compatibiliteit met toepassingsstuurprogramma's

De meeste stuurprogramma's worden ondersteund; Zorg er echter voor 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
  • Ruby

    • mysql2: ondersteund
  • .NET

    • mysql-connector-net: ondersteund, moet invoegtoepassing voor mysql_clear_password toevoegen
    • mysql-net/MySqlConnector: ondersteund
  • Node.js

    • mysqljs: Niet ondersteund (verzendt het token niet in duidelijke tekst zonder patch)
    • node-mysql2: ondersteund
  • Perl

    • DBD::mysql: ondersteund
    • Net::MySQL: Niet ondersteund
  • Go

    • go-sql-driver: Ondersteund, toevoegen ?tls=true&allowCleartextPasswords=true aan verbindingsreeks
  • PHP

    • mysqli-extensie: ondersteund

    • PDO_MYSQL stuurprogramma: ondersteund

Volgende stappen