Udostępnij za pośrednictwem


Konfigurowanie uwierzytelniania entra firmy Microsoft dla usługi Azure Database for MySQL — serwer elastyczny

DOTYCZY: Azure Database for MySQL — serwer elastyczny

W tym samouczku pokazano, jak skonfigurować uwierzytelnianie entra firmy Microsoft dla serwera elastycznego usługi Azure Database for MySQL.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Skonfiguruj administratora firmy Microsoft Entra.
  • Nawiąż połączenie z serwerem elastycznym usługi Azure Database for MySQL przy użyciu identyfikatora Entra firmy Microsoft.

Wymagania wstępne

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: Diagram przedstawiający sposób konfigurowania uwierzytelniania w usłudze 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 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.Alli do interfejsu User.Read.Alluż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 serwera elastycznego 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

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 elastycznym serwerem usługi Azure Database for MySQL 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 elastycznym serwerem usługi Azure Database for MySQL 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:

  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 administratora firmy Microsoft Entra.
  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 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
  • 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
  • PHP

    • rozszerzenie mysqli: obsługiwane

    • sterownik PDO_MYSQL: obsługiwane

Następne kroki