Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania za pomocą programu MySQL

DOTYCZY: Azure Database for MySQL — pojedynczy serwer

Ważne

Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?

W tym artykule przedstawiono procedurę konfigurowania dostępu do identyfikatora entra firmy Microsoft za pomocą usługi Azure Database for MySQL oraz sposobu nawiązywania połączenia przy użyciu tokenu entra firmy Microsoft.

Ważne

Uwierzytelnianie Microsoft Entra jest dostępne tylko dla programu MySQL 5.7 i nowszych.

Ustawianie użytkownika Administracja firmy Microsoft

Tylko użytkownik firmy Microsoft Entra Administracja może tworzyć/włączać użytkowników na potrzeby uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. Aby utworzyć użytkownika usługi Microsoft Entra Administracja, wykonaj następujące kroki

  1. W witrynie Azure Portal wybierz wystąpienie usługi Azure Database for MySQL, które chcesz włączyć dla identyfikatora Entra firmy Microsoft.
  2. W obszarze Ustawienia wybierz pozycję Active Directory Administracja:

set Microsoft Entra administrator

  1. Wybierz prawidłowego użytkownika microsoft Entra w dzierżawie klienta, aby być administratorem firmy Microsoft Entra.

Ważne

Podczas ustawiania administratora nowy użytkownik zostanie dodany do serwera usługi Azure Database for MySQL z pełnymi uprawnieniami administratora.

Tylko jeden administrator firmy Microsoft Entra można utworzyć na serwer MySQL, a wybór innego spowoduje zastąpienie istniejącego administratora firmy Microsoft Entra skonfigurowanego dla serwera.

Po skonfigurowaniu administratora możesz teraz się zalogować:

Połączenie do usługi Azure Database for MySQL przy użyciu identyfikatora Entra firmy Microsoft

Poniższy diagram wysokiego poziomu podsumowuje przepływ pracy korzystania z uwierzytelniania firmy Microsoft w usłudze Azure Database for MySQL:

authentication flow

Zaprojektowaliśmy integrację firmy Microsoft Entra z typowymi narzędziami MySQL, takimi jak interfejs wiersza polecenia mysql, który nie jest świadomy firmy Microsoft i obsługuje tylko określanie nazwy użytkownika i hasła podczas nawiązywania połączenia z bazą danych MySQL. Przekazujemy token Microsoft Entra jako hasło, jak pokazano na powyższej ilustracji.

Obecnie przetestowaliśmy następujących klientów:

  • MySQLWorkbench
  • Interfejs wiersza polecenia programu MySQL

Przetestowaliśmy również najbardziej typowe sterowniki aplikacji. Szczegóły można zobaczyć na końcu tej strony.

Poniżej przedstawiono kroki, które użytkownik/aplikacja musi wykonać uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft opisanego poniżej:

Wymagania wstępne

Możesz wykonać czynności opisane w usłudze Azure Cloud Shell, maszynie wirtualnej platformy Azure lub na maszynie lokalnej. Upewnij się, że masz zainstalowany interfejs wiersza polecenia platformy Azure.

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

az login

Polecenie spowoduje uruchomienie okna przeglądarki na stronie uwierzytelniania Firmy Microsoft Entra. Wymaga to podania identyfikatora użytkownika firmy Microsoft Entra i hasła.

Krok 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 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:

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 zwróci 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 tuż przed zainicjowaniem logowania do usługi Azure Database for MySQL. Aby wyświetlić ważność tokenu, możesz użyć następującego polecenia programu PowerShell.

$accessToken.ExpiresOn.DateTime

Krok 3. Używanie tokenu jako hasła do logowania przy użyciu programu MySQL

Podczas nawiązywania połączenia należy użyć tokenu dostępu jako hasła użytkownika MySQL. W przypadku korzystania z klientów z graficznym interfejsem użytkownika, takich jak MySQLWorkbench, możesz użyć metody opisanej powyżej, aby pobrać token.

Korzystanie z interfejsu wiersza polecenia mySQL

Korzystając z interfejsu wiersza polecenia, możesz użyć tej krótkiej strony, aby nawiązać połączenie:

Przykład (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`

Korzystanie z aplikacji MySQL Workbench

  • Uruchom aplikację MySQL Workbench i kliknij opcję Baza danych, a następnie kliknij pozycję "Połączenie do bazy danych"
  • W polu nazwa hosta wprowadź nazwę FQDN mySQL, np. mydb.mysql.database.azure.com
  • W polu nazwa użytkownika wprowadź nazwę administratora bazy danych Microsoft Entra mySQL i dołącz tę nazwę z nazwą serwera MySQL, a nie nazwą FQDN, np. user@tenant.onmicrosoft.com@mydb
  • W polu hasło kliknij pozycję "Zapisz w magazynie" i wklej token dostępu z pliku, np. C:\temp\MySQLAccessToken.txt
  • Kliknij kartę zaawansowaną i upewnij się, że jest zaznaczone pole wyboru "Włącz wtyczkę uwierzytelniania cleartext"
  • Kliknij 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
  • Zawsze dołączaj nazwę serwera po nazwie użytkownika/grupy firmy Microsoft (np. @mydb)
  • 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 (np. GroupName@mydb)
  • Jeśli nazwa zawiera spacje, użyj \ przed każdą spacją, aby ją uniknąć

Zwróć uwagę na 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 MySQL przy użyciu uwierzytelniania firmy Microsoft Entra.

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 (zobacz późniejszą sekcję dotyczącą nawiązywania połączenia):

  1. Najpierw upewnij się, że użytkownik <user>@yourtenant.onmicrosoft.com Microsoft Entra jest prawidłowym użytkownikiem w dzierżawie firmy Microsoft Entra.
  2. Zaloguj się do wystąpienia usługi Azure Database for MySQL jako użytkownik usługi Microsoft Entra Administracja.
  3. 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

  1. 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.
  2. 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 tego samego mechanizmu co dla użytkowników, ale zamiast tego określ nazwę grupy:

Przykład:

CREATE AADUSER 'Prod_DB_Readonly';

Podczas logowania członkowie grupy będą używać osobistych tokenów dostępu, ale podpisują się przy użyciu nazwy grupy określonej jako nazwa użytkownika.

Walidacja tokenu

Uwierzytelnianie w usłudze Microsoft Entra w usłudze Azure Database for MySQL zapewnia, że użytkownik istnieje na serwerze MySQL i sprawdza poprawność tokenu, sprawdzając zawartość tokenu. Są wykonywane następujące kroki weryfikacji tokenu:

  • Token jest podpisany przez identyfikator Entra firmy Microsoft i nie został naruszony
  • Token został wystawiony przez identyfikator Entra firmy Microsoft dla dzierżawy skojarzonej z serwerem
  • Token nie wygasł
  • Token jest przeznaczony dla zasobu usługi Azure Database for MySQL (a nie innego zasobu platformy Azure)

Zgodność ze sterownikami aplikacji

Większość sterowników jest obsługiwana, jednak upewnij się, że używasz ustawień wysyłania hasła w postaci zwykłego tekstu, więc token zostanie wysłany bez modyfikacji.

  • C/C++
    • libmysqlclient: obsługiwane
    • mysql-connector-c++: obsługiwane
  • Java
    • Połączenie or/J (mysql-connector-java): Obsługiwane musi być używane useSSL ustawienie
  • Python
    • Połączenie or/Python: obsługiwane
  • Ruby
    • mysql2: obsługiwane
  • .NETTO
    • mysql-connector-net: obsługiwane, należy dodać wtyczkę dla mysql_clear_password
    • mysql-net/MySql Połączenie or: 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
  • Przejdź
    • go-sql-driver: obsługiwane, dodawane ?tls=true&allowCleartextPasswords=true do parametry połączenia

Następne kroki