Konfigurowanie uwierzytelniania entra firmy Microsoft dla usługi Azure Database for MySQL — serwer elastyczny
W tym samouczku pokazano, jak skonfigurować uwierzytelnianie entra firmy Microsoft dla usługi Azure Database for MySQL — serwer elastyczny.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Skonfiguruj administratora firmy Microsoft Entra.
- Nawiąż połączenie z usługą Azure Database for MySQL — serwer elastyczny przy użyciu identyfikatora entra firmy Microsoft.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Uwaga
Bezpłatne konto platformy Azure umożliwia teraz bezpłatne wypróbowanie usługi Azure Database for MySQL — elastyczny serwer przez 12 miesięcy. Aby uzyskać więcej informacji, zobacz Używanie bezpłatnego konta platformy Azure do bezpłatnego wypróbowania usługi Azure Database for MySQL — serwer elastyczny bezpłatnie.
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 microsoft Entra Admin, wykonaj następujące kroki.
W witrynie Azure Portal wybierz wystąpienie serwera elastycznego usługi Azure Database for MySQL, które chcesz włączyć dla identyfikatora Entra firmy Microsoft.
W okienku Zabezpieczenia wybierz pozycję Uwierzytelnianie:
Dostępne są trzy typy uwierzytelniania:
Tylko uwierzytelnianie MySQL — domyślnie program MySQL używa wbudowanej wtyczki uwierzytelniania mysql_native_password, która wykonuje uwierzytelnianie przy użyciu natywnej metody tworzenia skrótów haseł
Tylko uwierzytelnianie entra firmy Microsoft — zezwala tylko na uwierzytelnianie przy użyciu konta Microsoft Entra. Wyłącza uwierzytelnianie mysql_native_password i włącza aad_auth_only parametru serwera
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_only
Wybierz pozycję Tożsamość — wybierz/dodaj tożsamość zarządzaną przypisaną przez użytkownika. Następujące uprawnienia są wymagane, aby umożliwić usłudze UMI odczyt z programu Microsoft Graph jako tożsamość serwera. Alternatywnie nadaj tożsamości zarządzanej 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żne
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 klienta, aby być administratorem firmy Microsoft Entra. Po włączeniu obsługi uwierzytelniania w usłudze Microsoft Entra administratorzy firmy Microsoft mogą zostać dodani jako podmioty zabezpieczeń z uprawnieniami do dodawania użytkowników usługi Microsoft Entra do serwera MySQL.
Uwaga
Na serwerze MySQL można utworzyć tylko jeden administrator entra firmy Microsoft, a następnie wybrać inny zastąpi istniejącego administratora firmy Microsoft Entra skonfigurowanego dla serwera.
Udzielanie uprawnień 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 interfejsu użytkownika umiservertest
.
Aby uruchomić skrypt, musisz zalogować się jako użytkownik z rolą administrator globalny lub administrator ról uprzywilejowanych.
Skrypt udziela uprawnień , GroupMember.Read.All
i do interfejsu User.Read.All
użytkownika w celu uzyskania dostępu do programu Microsoft GraphApplication.Read.ALL
.
# 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
Jeśli w ostatnich krokach skryptu masz więcej identyfikatorów UMI o podobnych nazwach, musisz użyć odpowiedniej $MSI[ ]array
liczby. Może to być na przykład $AAD_SP.ObjectId[0]
.
Sprawdzanie uprawnień dla tożsamości zarządzanej przypisanej przez użytkownika
Aby sprawdzić uprawnienia dla interfejsu użytkownika, przejdź do witryny Azure Portal. W zasobie Microsoft Entra ID przejdź do pozycji 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.
Po udzieleniu uprawnień do interfejsu użytkownika są one włączone dla wszystkich serwerów utworzonych przy użyciu interfejsu użytkownika przypisanego jako tożsamość serwera.
Nawiązywanie połączenia z serwerem elastycznym usługi Azure Database for MySQL przy użyciu identyfikatora Entra firmy Microsoft
1 — Uwierzytelnianie przy użyciu identyfikatora entra firmy Microsoft
Zacznij od uwierzytelnienia przy użyciu identyfikatora Entra firmy Microsoft przy użyciu narzędzia interfejsu wiersza polecenia platformy Azure.
(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 to podania identyfikatora użytkownika i hasła firmy Microsoft Entra.
Jeśli masz wiele subskrypcji, wybierz odpowiednią subskrypcję przy użyciu polecenia az account set:
az account set --subscription \<subscription id\>
2 — Pobieranie tokenu dostępu firmy Microsoft Entra
Wywołaj narzędzie interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika firmy Microsoft z kroku 1, aby uzyskać dostęp do serwera elastycznego usługi Azure Database for MySQL.
Przykład (dla chmury publicznej):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
Powyższa wartość zasobu musi być określona dokładnie tak, jak pokazano. W przypadku innych chmur można wyszukać wartość zasobu przy użyciu następujących elementów:
az cloud show
W przypadku interfejsu wiersza polecenia platformy Azure w wersji 2.0.71 lub nowszej można określić polecenie w następującej wygodniejszej wersji dla wszystkich chmur:
az account get-access-token --resource-type oss-rdbms
Za pomocą programu PowerShell możesz użyć następującego polecenia, aby uzyskać token dostępu:
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft 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. Zalecamy uzyskanie tokenu dostępu przed zainicjowaniem logowania do usługi Azure Database for MySQL — serwer elastyczny.
- Aby wyświetlić ważność tokenu, możesz użyć następującego polecenia programu PowerShell.
$accessToken.ExpiresOn.DateTime
3 — Użyj tokenu jako hasła do logowania się w usłudze MySQL
Podczas nawiązywania połączenia należy użyć tokenu dostępu jako hasła użytkownika mySQL. Możesz użyć metody opisanej powyżej, aby pobrać token przy użyciu klientów graficznego interfejsu użytkownika, takich jak MySQL workbench.
Nawiązywanie połączenia z usługą Azure Database for MySQL — elastyczny serwer przy użyciu interfejsu wiersza polecenia MySQL
W przypadku korzystania z interfejsu wiersza polecenia możesz użyć tego skrótu, aby nawiązać połączenie:
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 usługą Azure Database for MySQL — elastyczny serwer przy użyciu aplikacji 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 mySQL, na przykład mysql.database.azure.com.
- W polu nazwa użytkownika wprowadź nazwę administratora microsoft Entra programu MySQL. Na przykład user@tenant.onmicrosoft.com.
- W polu hasło wybierz pozycję Magazyn w magazynie 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.com
to nazwa użytkownika lub grupy firmy Microsoft, z którą próbujesz nawiązać połączenie- Upewnij się, że używasz dokładnego sposobu pisowni nazwy użytkownika lub grupy firmy Microsoft
- W nazwach użytkowników i grup firmy Microsoft jest uwzględniana 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ą uniknąć
Uwaga
Ustawienie "enable-cleartext-plugin" — należy użyć podobnej konfiguracji z innymi klientami, aby upewnić się, że token zostanie wysłany do serwera bez skrótu.
Teraz uwierzytelniasz się na serwerze elastycznym MySQL przy użyciu uwierzytelniania firmy Microsoft Entra.
Inne polecenia administratora firmy Microsoft Entra
Zarządzanie administratorem usługi Active Directory serwera
az mysql flexible-server ad-admin
Tworzenie administratora usługi Active Directory
az mysql flexible-server ad-admin create
Przykład: Tworzenie administratora usługi Active Directory przy użyciu użytkownika "john@contoso.com", identyfikatora administratora "000000000-0000-0000-0000000000000000" i tożsamości "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
Usuwanie administratora usługi Active Directory
az mysql flexible-server ad-admin delete
Przykład: Usuwanie administratora usługi Active Directory
az mysql flexible-server ad-admin delete -g testgroup -s testsvr
Wyświetlanie listy wszystkich administratorów usługi Active Directory
az mysql flexible-server ad-admin list
Przykład: Wyświetlanie listy administratorów usługi Active Directory
az mysql flexible-server ad-admin list -g testgroup -s testsvr
Uzyskiwanie administratora usługi Active Directory
az mysql flexible-server ad-admin show
Przykład: Uzyskiwanie administratora usługi Active Directory
az mysql flexible-server ad-admin show -g testgroup -s testsvr
Poczekaj na spełnienie określonych warunków przez administratora usługi Active Directory
az mysql flexible-server ad-admin wait
Przykłady:
- Zaczekaj, aż administrator usługi Active Directory istnieje
az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
- Poczekaj 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 usługi Microsoft Entra do bazy danych usługi Azure Database for MySQL, wykonaj następujące kroki po nawiązaniu połączenia:
- Najpierw upewnij się, że użytkownik
<user>@yourtenant.onmicrosoft.com
Microsoft Entra jest prawidłowym użytkownikiem w dzierżawie firmy Microsoft Entra. - Zaloguj się do wystąpienia usługi Azure Database for MySQL jako użytkownik administratora firmy Microsoft Entra.
- Tworzenie użytkownika
<user>@yourtenant.onmicrosoft.com
w usłudze Azure Database for MySQL.
Przykład:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
W przypadku nazw użytkowników, które przekraczają 32 znaki, zaleca się użycie aliasu podczas nawiązywania połączenia:
Przykład:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Uwaga
- 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 entra firmy Microsoft w usłudze Azure Database for MySQL
Aby włączyć grupę Microsoft Entra w celu uzyskania dostępu do bazy danych, użyj dokładnego mechanizmu dla użytkowników, ale zamiast tego określ nazwę grupy:
Przykład:
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, aby token został wysłany bez modyfikacji.
C/C++
- libmysqlclient: obsługiwane
- mysql-connector-c++: obsługiwane
Java
- Connector/J (mysql-connector-java): Obsługiwane, musi korzystać z
useSSL
ustawienia
- Connector/J (mysql-connector-java): Obsługiwane, musi korzystać z
Python
- Łącznik/python: obsługiwane
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: obsługiwane
Perl
- DBD::mysql: Obsługiwane
- Net::MySQL: Nieobsługiwane
Go
- go-sql-driver: obsługiwane, dodawane
?tls=true&allowCleartextPasswords=true
do parametry połączenia
- go-sql-driver: obsługiwane, dodawane
PHP
rozszerzenie mysqli: obsługiwane
sterownik PDO_MYSQL: obsługiwane