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
Een Azure-account met een actief abonnement.
Als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint.
Notitie
Met een gratis Azure-account kunt u azure Database for MySQL flexibele server nu 12 maanden gratis proberen. Zie Azure Database for MySQL Flexibele server gratis uitproberen voor meer informatie.
Azure CLI installeren of upgraden naar de nieuwste versie. Zie Azure CLI installeren.
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:
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.
- User.Read.All: staat toegang tot Microsoft Entra-gebruikersgegevens toe.
- GroupMember.Read.All: hiermee heeft u toegang tot microsoft Entra-groepsinformatie.
- Application.Read.ALL: hiermee hebt u toegang tot microsoft Entra-service-principalgegevens (toepassingsinformatie).
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.All
en 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:
- Zorg er eerst voor dat de Microsoft Entra-gebruiker een geldige gebruiker
<user>@yourtenant.onmicrosoft.com
is in de Microsoft Entra-tenant. - Meld u als microsoft Entra Admin-gebruiker aan bij uw Azure Database for MySQL-exemplaar.
- 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
- MySQL negeert voorloop- en volgspaties, dus de gebruikersnaam mag geen voorloop- of volgspaties hebben.
- 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
- Connector/J (mysql-connector-java): Ondersteund, moet instelling gebruiken
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
- go-sql-driver: Ondersteund, toevoegen
PHP
mysqli-extensie: ondersteund
PDO_MYSQL stuurprogramma: ondersteund
Volgende stappen
- Bekijk de concepten voor Microsoft Entra-verificatie met flexibele Azure Database for MySQL-server