Udostępnij za pośrednictwem


Konfigurowanie uwierzytelniania Microsoft Entra dla usługi Azure Database for MySQL – Flexible Server

W tym samouczku pokazano, jak skonfigurować uwierzytelnianie Microsoft Entra dla Azure Database for MySQL Flexible Server.

W tym poradniku nauczysz się, jak:

  • Skonfiguruj administratora firmy Microsoft Entra.
  • Nawiąż połączenie z Azure Database for MySQL Flexible Server przy użyciu Microsoft Entra ID.

Wymagania wstępne

Konfigurowanie administratora firmy Microsoft Entra

Aby utworzyć użytkownika microsoft Entra Admin, 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: diagram przedstawiający sposób konfigurowania uwierzytelniania firmy Microsoft Entra.

  • 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 Microsoft Entra — pozwala na uwierzytelnianie wyłącznie przy użyciu konta Microsoft Entra. Wyłącza uwierzytelnianie mysql_native_password i włącza parametr serwera aad_auth_only
    • 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 tożsamość — wybierz lub dodaj tożsamość zarządzaną przypisaną przez użytkownika. Następujące uprawnienia są wymagane, aby umożliwić interfejsowi użytkownika odczytywanie z programu Microsoft Graph jako tożsamości serwera. 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ż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, aby być administratorem firmy Microsoft dla serwera bazy danych.

    Uwaga / Notatka

    Na serwerze MySQL można utworzyć tylko jednego administratora Microsoft Entra, a wybranie innego zastępuje istniejącego administratora Microsoft Entra skonfigurowanego dla serwera.

Przyznaj uprawnienia zarządzanej tożsamości przypisanej użytkownikowi

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, musisz zalogować się jako użytkownik z rolą administrator globalny lub 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 "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-AzADServicePrincipal -DisplayNameStartsWith "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-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 etapach skryptu, jeśli masz więcej identyfikatorów UMI o podobnie brzmiących nazwach, musisz użyć odpowiedniej $MSI[ ]array liczby. Przykładem jest $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 UMI, zostają one aktywowane dla wszystkich serwerów utworzonych 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 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 za pomocą 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 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.net
    
  • Przykł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. 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.

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 Azure Database for MySQL Flexible Server przy użyciu 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 MySQL. Na przykład user@tenant.onmicrosoft.com.
  • W polu 'Hasło' wybierz opcję Zapisz w magazynie, a następnie wklej token dostępu z pliku, taki jak 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ładnej pisowni nazwy użytkownika lub grupy w 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ć

Uwaga / Notatka

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 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 identyfikatora użytkownika john@contoso.com, identyfikatora 00000000-0000-0000-0000-000000000000 administratora 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:

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

Uwaga / Notatka

  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 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 dokładnego mechanizmu dla użytkowników, ale zamiast tego 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, 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
  • 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=true do parametrów połączenia
  • PHP

    • mysqli rozszerzenie: obsługiwane

    • sterownik PDO_MYSQL: obsługiwany

Następny krok