Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak skonfigurować uwierzytelnianie Microsoft Entra dla Azure Database for MySQL Flexible Server.
W tym poradniku nauczysz się, jak:
- Skonfiguruj administratora Microsoft Entra.
- Nawiąż połączenie z serwerem elastycznym Azure Database for MySQL przy użyciu Microsoft Entra ID.
Prerequisites
- Konto platformy Azure z aktywną subskrypcją.
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
- Zainstaluj lub uaktualnij interfejs wiersza polecenia platformy Azure do najnowszej wersji. Zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Konfigurowanie administratora firmy Microsoft Entra
Aby utworzyć użytkownika administratora Microsoft Entra, wykonaj następujące kroki:
W portalu Azure wybierz wystąpienie elastycznego serwera bazy danych Azure dla MySQL, które chcesz włączyć dla Microsoft Entra ID.
W okienku Zabezpieczenia wybierz pozycję Uwierzytelnianie:
Wybierz spośród trzech typów uwierzytelniania:
-
Tylko uwierzytelnianie mySQL — domyślnie program MySQL używa wbudowanej wtyczki
mysql_native_passworduwierzytelniania, która wykonuje uwierzytelnianie przy użyciu natywnej metody tworzenia skrótów haseł. -
Tylko uwierzytelnianie Microsoft Entra — zezwala tylko na uwierzytelnianie za pomocą konta Microsoft Entra. Wyłącza uwierzytelnianie
mysql_native_passwordi ustawia parametr serweraaad_auth_onlyna WŁ. -
Uwierzytelnianie mySQL i Microsoft Entra — umożliwia uwierzytelnianie przy użyciu natywnego hasła MySQL lub konta Microsoft Entra. Wyłącza parametr serwera
aad_auth_onlyOFF.
-
Tylko uwierzytelnianie mySQL — domyślnie program MySQL używa wbudowanej wtyczki
Wybierz tożsamość — wybierz lub dodaj tożsamość zarządzaną przypisaną przez użytkownika. Aby umożliwić tożsamości zarządzanej przypisanej przez użytkownika (UAMI) odczytywanie z Microsoft Graph w roli tożsamości serwera, potrzebuje ona następujących uprawnień. Alternatywnie przypisz zarządzanej tożsamości przypisanej przez użytkownika rolę Czytelnicy katalogu.
- User.Read.All: umożliwia dostęp do informacji o użytkowniku firmy Microsoft Entra.
- GroupMember.Read.All: umożliwia dostęp do informacji o grupie Entra firmy Microsoft.
- Application.Read.ALL: Umożliwia dostęp do informacji o jednostce usługi Entra firmy Microsoft (aplikacji).
Ważna
Tylko użytkownik z co najmniej rolą Administrator ról uprzywilejowanych może przyznać te uprawnienia.
Wybierz prawidłowego użytkownika Microsoft Entra lub grupę Microsoft Entra w dzierżawie, aby być administratorem firmy Microsoft dla serwera bazy danych.
Note
Na serwerze MySQL można utworzyć tylko jeden administrator Microsoft Entra. Wybranie innego administratora zastępuje istniejący administrator Microsoft Entra skonfigurowany dla serwera.
Przyznaj uprawnienia tożsamości zarządzanej przypisanej przez użytkownika
Poniższy przykładowy skrypt programu PowerShell udziela niezbędnych uprawnień dla interfejsu użytkownika. Ten przykład przypisuje uprawnienia do UMI umiservertest.
Aby uruchomić skrypt, zaloguj się jako użytkownik z rolą Administrator ról uprzywilejowanych.
Skrypt udziela uprawnień User.Read.All, GroupMember.Read.All i Application.Read.ALL dla UMI, aby uzyskać dostęp do Microsoft Graph.
# Script to assign permissions to the UMI "umiservertest"
import-module Az.Resources
import-module Microsoft.Entra
$tenantId = '<tenantId>' # Your Azure AD tenant ID
Connect-Entra -TenantID $tenantId
# Log in as a user with a "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-AzADServicePrincipal -DisplayNameStartsWith "Microsoft Graph"
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]
#Output
#ObjectId AppId DisplayName
#-------- ----- -----------
#44444444-4444-4444-4444-444444444444 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44444444-4444-4444-4444-444444444444 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change
$MSIName = "<managedIdentity>"; # Name of your user-assigned
$MSI = Get-AzADServicePrincipal -DisplayNameStartsWith $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.AppRole | Where-Object {$_.Value -eq "User.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRole | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRole | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzADServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -ResourceId $AAD_SP.Id -AppRoleId $AAD_AppRole.Id
W końcowych krokach skryptu, jeśli masz więcej UMI o podobnych nazwach, musisz użyć właściwego numeru $MSI[ ]array. Przykładem jest $AAD_SP.ObjectId[0].
Sprawdź uprawnienia dla tożsamości zarządzanej przypisanej przez użytkownika
Aby sprawdzić uprawnienia dla UMI, przejdź do portalu Azure. W zasobie Microsoft Entra ID przejdź do Aplikacje dla przedsiębiorstw. Wybierz pozycję Wszystkie aplikacje dla pozycji Typ aplikacji i wyszukaj utworzony interfejs użytkownika.
Wybierz pozycję UMI i przejdź do ustawień uprawnień w obszarze Zabezpieczenia.
Gdy nadajesz uprawnienia do UMI, mają one zastosowanie do wszystkich serwerów tworzonych z UMI przypisanym jako tożsamość serwera.
Nawiązywanie połączenia z elastycznym serwerem usługi Azure Database for MySQL przy użyciu usługi identyfikacji Entra firmy Microsoft
1 — Uwierzytelnianie przy użyciu identyfikatora entra firmy Microsoft
Zacznij od uwierzytelnienia przy użyciu Microsoft Entra ID przy użyciu narzędzia Azure CLI. (Ten krok nie jest wymagany w usłudze Azure Cloud Shell).
Zaloguj się do konta platformy Azure przy użyciu polecenia az login . Zanotuj właściwość ID, która odwołuje się do identyfikatora subskrypcji dla konta platformy Azure:
az login
Polecenie uruchamia okno przeglądarki na stronie uwierzytelniania Firmy Microsoft Entra. Wymaga podania identyfikatora użytkownika i hasła firmy Microsoft Entra.
Jeśli masz wiele subskrypcji, wybierz odpowiednią subskrypcję przy użyciu
az account setpolecenia :az account set --subscription \<subscription id\>
2 — Pobieranie tokenu dostępu firmy Microsoft Entra
Wywołaj narzędzie linii poleceń platformy Azure CLI, aby uzyskać token dostępu dla użytkownika uwierzytelnionego w Microsoft Entra z kroku 1 i uzyskać dostęp do Azure Database for MySQL Flexible Server.
Przykład Azure CLI w celu uzyskania tokenu dostępu:
az account get-access-token --resource https://ossrdbms-aad.database.windows.netPrzykład programu Azure PowerShell umożliwiający uzyskanie tokenu dostępu:
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Firma Microsoft Entra zwraca token dostępu:
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
Token jest ciągiem base 64, który koduje wszystkie informacje o uwierzytelnianym użytkowniku i jest przeznaczony dla usługi Azure Database for MySQL.
Ważność tokenu dostępu wynosi od 5 minut do 60 minut. Uzyskaj token dostępu przed zainicjowaniem logowania do serwera elastycznego Azure Database for MySQL.
- Użyj następującego polecenia programu PowerShell, aby wyświetlić ważność tokenu.
$accessToken.ExpiresOn.DateTime
3 — Użyj tokenu jako hasła do logowania się w usłudze MySQL
Użyj tokenu dostępu jako hasła użytkownika mySQL podczas nawiązywania połączenia.
Nawiązywanie połączenia z serwerem elastycznym Azure Database for MySQL przy użyciu interfejsu wiersza polecenia programu MySQL
Jeśli używasz CLI, użyj tego skrótu, aby się połączyć:
Przykład (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`
Przykład (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)
Nawiązywanie połączenia z serwerem elastycznym Azure Database for MySQL przy użyciu programu MySQL Workbench
- Uruchom aplikację MySQL Workbench i wybierz opcję Baza danych, a następnie wybierz pozycję Połącz z bazą danych.
- W polu nazwa hosta wprowadź nazwę FQDN programu MySQL, na przykład
mysql.database.azure.com. - W polu nazwa użytkownika wprowadź nazwę administratora Microsoft Entra MySQL. Na przykład
user@tenant.onmicrosoft.com. - W polu hasła wybierz opcję Przechowuj w sejfie i wklej token dostępu z pliku, na przykład
C:\temp\MySQLAccessToken.txt. - Wybierz kartę zaawansowaną i upewnij się, że zaznaczono opcję Włącz wtyczkę uwierzytelniania Cleartext.
- Wybierz przycisk OK , aby nawiązać połączenie z bazą danych.
Ważne zagadnienia dotyczące nawiązywania połączenia
-
user@tenant.onmicrosoft.comto nazwa użytkownika lub grupy Microsoft Entra, z którą łączysz się jako - Użyj dokładnej pisowni dla nazwy użytkownika lub grupy Microsoft Entra
- Nazwy użytkowników i grup Microsoft Entra są wrażliwe na wielkość liter.
- Podczas nawiązywania połączenia jako grupy użyj tylko nazwy grupy (na przykład
GroupName) - Jeśli nazwa zawiera spacje, użyj
\przed każdą spacją, aby ją zignorować
Note
W przypadku ustawienia enable-cleartext-plugin użyj podobnej konfiguracji dla innych klientów, aby mieć pewność, że token zostanie wysłany do serwera bez haszowania.
Teraz uwierzytelniasz się na serwerze elastycznym MySQL przy użyciu uwierzytelniania Microsoft Entra.
Inne polecenia administratora Microsoft Entra
Zarządzanie administratorem usługi Active Directory serwera
az mysql flexible-server ad-adminTworzenie administratora usługi Active Directory
az mysql flexible-server ad-admin createPrzykład: Tworzenie administratora Active Directory przy użyciu użytkownika
john@contoso.com, identyfikatora00000000-0000-0000-0000-000000000000administratora i tożsamościtest-identityaz mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identityUsuwanie administratora usługi Active Directory
az mysql flexible-server ad-admin deletePrzykład: Usuwanie administratora usługi Active Directory
az mysql flexible-server ad-admin delete -g testgroup -s testsvrWyświetlanie listy wszystkich administratorów usługi Active Directory
az mysql flexible-server ad-admin listPrzykład: Wyświetlanie listy administratorów usługi Active Directory
az mysql flexible-server ad-admin list -g testgroup -s testsvrUzyskiwanie administratora usługi Active Directory
az mysql flexible-server ad-admin showPrzykład: Uzyskiwanie administratora usługi Active Directory
az mysql flexible-server ad-admin show -g testgroup -s testsvrPoczekaj na spełnienie określonych warunków przez administratora usługi Active Directory
az mysql flexible-server ad-admin waitPrzykłady:
Zaczekaj, aż administrator usługi Active Directory istnieje
az mysql flexible-server ad-admin wait -g testgroup -s testsvr --existsPoczekaj na usunięcie administratora usługi Active Directory
az mysql flexible-server ad-admin wait -g testgroup -s testsvr -deleted
Tworzenie użytkowników usługi Microsoft Entra w usłudze Azure Database for MySQL
Aby dodać użytkownika Microsoft Entra do bazy danych Azure Database for MySQL, wykonaj następujące kroki po nawiązaniu połączenia:
- Upewnij się, że użytkownik Microsoft Entra
<user>@yourtenant.onmicrosoft.comjest prawidłowym użytkownikiem w dzierżawie Microsoft Entra. - Zaloguj się do instancji Azure Database for MySQL jako użytkownik administratora Microsoft Entra.
- Tworzenie użytkownika
<user>@yourtenant.onmicrosoft.comw usłudze Azure Database for MySQL.
Example:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
W przypadku nazw użytkowników, które przekraczają 32 znaki, użyj aliasu zamiast pełnej nazwy użytkownika.
Example:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Note
- Baza danych MySQL ignoruje spacje wiodące i końcowe, więc nazwa użytkownika nie powinna zawierać żadnych spacji wiodących ani końcowych.
- Uwierzytelnianie użytkownika za pomocą identyfikatora Entra firmy Microsoft nie daje użytkownikowi żadnych uprawnień dostępu do obiektów w bazie danych usługi Azure Database for MySQL. Musisz przyznać użytkownikowi wymagane uprawnienia ręcznie.
Tworzenie grup Microsoft Entra w usłudze Azure Database for MySQL
Aby włączyć grupę Microsoft Entra w celu uzyskania dostępu do bazy danych, użyj tego samego mechanizmu co dla użytkowników, ale określ nazwę grupy:
Example:
CREATE AADUSER 'Prod_DB_Readonly';
Podczas logowania członkowie grupy używają osobistych tokenów dostępu, ale logują się przy użyciu nazwy grupy określonej jako nazwa użytkownika.
Zgodność ze sterownikami aplikacji
Większość sterowników jest obsługiwana. Pamiętaj jednak, aby użyć ustawień wysyłania hasła w postaci zwykłego tekstu, więc token przechodzi bez modyfikacji.
C/C++
- libmysqlclient: obsługiwane
- mysql-connector-c++: obsługiwane
Java
- Connector/J (mysql-connector-java): Obsługiwane, należy użyć ustawienia
useSSL
- Connector/J (mysql-connector-java): Obsługiwane, należy użyć ustawienia
Python
- Konektor/Python: obsługiwany
Ruby
- mysql2: obsługiwane
.NET
- mysql-connector-net: obsługiwane, należy dodać wtyczkę dla mysql_clear_password
- mysql-net/MySqlConnector: obsługiwane
Node.js
- mysqljs: nieobsługiwane (nie wysyła tokenu w postaci zwykłego tekstu bez poprawki)
- node-mysql2: wspierane
Perl
- DBD::mysql: Obsługiwane
- Net::MySQL: Nieobsługiwane
Go
- go-sql-driver: Obsługiwane, dodaj
?tls=true&allowCleartextPasswords=truedo parametrów połączenia
- go-sql-driver: Obsługiwane, dodaj
PHP
mysqlirozszerzenie: obsługiwanesterownik PDO_MYSQL: obsługiwany