Sdílet prostřednictvím


Nastavení ověřování Microsoft Entra pro flexibilní server Azure Database for MySQL

V tomto kurzu se dozvíte, jak nastavit ověřování Microsoft Entra pro flexibilní server Azure Database for MySQL.

V tomto kurzu se naučíte:

  • Nakonfigurujte správce Microsoft Entra.
  • Připojte se k flexibilnímu serveru Azure Database for MySQL pomocí ID Microsoft Entra.

Požadavky

Konfigurace správce Microsoft Entra

Pokud chcete vytvořit uživatele Microsoft Entra Admin, postupujte následovně.

  • Na webu Azure Portal vyberte instanci flexibilního serveru Azure Database for MySQL, který chcete povolit pro ID Microsoft Entra.

  • V podokně Zabezpečení vyberte Ověřování: Diagram konfigurace ověřování Microsoft Entra

  • K dispozici jsou tři typy ověřování:

    • Pouze ověřování MySQL – MySQL ve výchozím nastavení používá integrovaný modul plug-in pro ověřování mysql_native_password, který provádí ověřování pomocí nativní metody hash hesel.

    • Pouze ověřování Microsoft Entra – Povoluje pouze ověřování pomocí účtu Microsoft Entra. Zakáže ověřování mysql_native_password a zapne parametr serveru aad_auth_only

    • Ověřování MySQL a Microsoft Entra – Umožňuje ověřování pomocí nativního hesla MySQL nebo účtu Microsoft Entra. Vypne parametr serveru aad_auth_only

  • Vyberte Identitu – Vyberte/Přidat spravovanou identitu přiřazenou uživatelem. Aby rozhraní UMI mohlo číst z Microsoft Graphu jako identitu serveru, jsou vyžadována následující oprávnění. Případně udělte spravované identitě přiřazené uživatelem roli Čtenáři adresáře.

    • User.Read.All: Umožňuje přístup k informacím o uživateli Microsoft Entra.
    • GroupMember.Read.All: Umožňuje přístup k informacím o skupině Microsoft Entra.
    • Application.Read.ALL: Umožňuje přístup k informacím instančního objektu Microsoft Entra (aplikace).

Důležité

Tato oprávnění může udělit pouze uživatel s rolí Správce privilegovaných rolí.

  • Vyberte platného uživatele Microsoft Entra nebo skupinu Microsoft Entra v tenantovi zákazníka, aby byl správcem Microsoft Entra. Po povolení podpory ověřování Microsoft Entra je možné přidat správce Microsoft Entra jako objekty zabezpečení s oprávněním přidat uživatele Microsoft Entra na server MySQL.

    Poznámka:

    Na server MySQL je možné vytvořit pouze jednoho správce Microsoft Entra a výběrem jiného přepsat existujícího správce Microsoft Entra nakonfigurovaného pro server.

Udělení oprávnění spravované identitě přiřazené uživatelem

Následující ukázkový skript PowerShellu uděluje potřebná oprávnění pro rozhraní UMI. Tato ukázka přiřadí UMI umiservertestoprávnění .

Pokud chcete skript spustit, musíte se přihlásit jako uživatel s rolí globálního správce nebo správce privilegovaných rolí.

Skript uděluje User.Read.Allrozhraní UMI GroupMember.Read.Alla Application.Read.ALL oprávnění pro přístup k Microsoft Graphu.

# 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

V posledních krocích skriptu, pokud máte více umi s podobnými názvy, musíte použít správné $MSI[ ]array číslo. Příklad: $AAD_SP.ObjectId[0].

Kontrola oprávnění pro spravovanou identitu přiřazenou uživatelem

Pokud chcete zkontrolovat oprávnění pro UMI, přejděte na web Azure Portal. V prostředku Microsoft Entra ID přejděte do podnikových aplikací. Vyberte Všechny aplikace pro typ aplikace a vyhledejte vytvořený UMI.

Vyberte UMI a přejděte do nastavení Oprávnění v části Zabezpečení.

Jakmile udělíte oprávnění rozhraní UMI, povolí se pro všechny servery vytvořené pomocí UMI přiřazené jako identita serveru.

Připojení k flexibilnímu serveru Azure Database for MySQL pomocí ID Microsoft Entra

1. Ověření pomocí Microsoft Entra ID

Začněte ověřováním pomocí Microsoft Entra ID pomocí nástroje Azure CLI.
(Tento krok není v Azure Cloud Shellu povinný.)

  • Přihlaste se k účtu Azure pomocí příkazu az login . Poznamenejte si vlastnost ID, která odkazuje na ID předplatného pro váš účet Azure:

    az login
    

Příkaz spustí okno prohlížeče na ověřovací stránku Microsoft Entra. Vyžaduje, abyste zadali své UŽIVATELSKÉ ID a heslo Microsoft Entra.

  • Pokud máte více předplatných, zvolte příslušné předplatné pomocí příkazu az account set:

    az account set --subscription \<subscription id\>
    

2 . Načtení přístupového tokenu Microsoft Entra

Vyvolejte nástroj Azure CLI pro získání přístupového tokenu pro ověřeného uživatele Microsoft Entra z kroku 1 pro přístup k flexibilnímu serveru Azure Database for MySQL.

  • Příklad (pro veřejný cloud):

    az account get-access-token --resource https://ossrdbms-aad.database.windows.net
    
  • Výše uvedená hodnota prostředku musí být zadána přesně tak, jak je znázorněna. V případě jiných cloudů je možné hodnotu prostředku vyhledat pomocí následujících možností:

    az cloud show
    
  • Pro Azure CLI verze 2.0.71 a novější je možné příkaz zadat v následující pohodlnější verzi pro všechny cloudy:

    az account get-access-token --resource-type oss-rdbms
    
  • Pomocí PowerShellu můžete získat přístupový token pomocí následujícího příkazu:

    $accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net
    $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
    

Po úspěšném ověření vrátí ID Microsoft Entra přístupový token:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Token je řetězec Base 64, který zakóduje všechny informace o ověřeném uživateli a cílí na službu Azure Database for MySQL.

Platnost přístupového tokenu je 5 minut až 60 minut. Než zahájíte přihlášení k flexibilnímu serveru Azure Database for MySQL, doporučujeme získat přístupový token.

  • Platnost tokenu můžete zobrazit pomocí následujícího příkazu PowerShellu.
    $accessToken.ExpiresOn.DateTime

3. Použití tokenu jako hesla pro přihlášení pomocí MySQL

Při připojování musíte použít přístupový token jako heslo uživatele MySQL. Metodu popsanou výše můžete použít k načtení tokenu pomocí klientů grafického uživatelského rozhraní, jako je mySQL workbench.

Připojení k flexibilnímu serveru Azure Database for MySQL pomocí rozhraní příkazového řádku MySQL

Při použití rozhraní příkazového řádku můžete použít tuto zkratku pro připojení:

Příklad (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`

Příklad (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)

Připojení k flexibilnímu serveru Azure Database for MySQL pomocí aplikace MySQL Workbench

  • Spusťte aplikaci MySQL Workbench a vyberte možnost Databáze a pak vyberte Připojit k databázi.
  • Do pole název hostitele zadejte například plně kvalifikovaný název domény MySQL, mysql.database.azure.com.
  • Do pole uživatelského jména zadejte jméno správce MySQL Microsoft Entra. Například user@tenant.onmicrosoft.com.
  • V poli heslo vyberte Uložit v trezoru a vložte přístupový token ze souboru, například C:\temp\MySQLAccessToken.txt.
  • Vyberte kartu Upřesnit a ujistěte se, že je zaškrtnutá možnost Povolit modul plug-in pro ověřování Cleartext.
  • Vyberte OK a připojte se k databázi.

Důležité aspekty při připojování

  • user@tenant.onmicrosoft.com je název uživatele nebo skupiny Microsoft Entra, ke které se pokoušíte připojit jako
  • Ujistěte se, že používáte přesný způsob, jakým je název uživatele nebo skupiny Microsoft Entra napsaný.
  • V názvech uživatelů a skupin Microsoft Entra se rozlišují malá a velká písmena.
  • Při připojování jako skupiny použijte pouze název skupiny (například GroupName)
  • Pokud název obsahuje mezery, použijte \ před každým mezerou řídicí znak.

Poznámka:

Nastavení "enable-cleartext-plugin" – musíte použít podobnou konfiguraci s jinými klienty, abyste se ujistili, že se token odešle na server, aniž by se zatřiďoval.

Teď jste ověřeni na flexibilním serveru MySQL pomocí ověřování Microsoft Entra.

Další příkazy správce Microsoft Entra

  • Správa správce služby Active Directory serveru

    az mysql flexible-server ad-admin
    
  • Vytvoření správce služby Active Directory

    az mysql flexible-server ad-admin create
    

    Příklad: Vytvoření správce služby Active Directory s uživatelemjohn@contoso.com, ID správce 00000000-0000-0000-0000-000000000000 a identitou 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
    
  • Odstranění správce služby Active Directory

    az mysql flexible-server ad-admin delete
    

    Příklad: Odstranění správce služby Active Directory

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Zobrazit seznam všech správců služby Active Directory

    az mysql flexible-server ad-admin list
    

    Příklad: Výpis správců služby Active Directory

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Získání správce služby Active Directory

    az mysql flexible-server ad-admin show
    

    Příklad: Získání správce služby Active Directory

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Počkejte, až správce služby Active Directory splní určité podmínky.

    az mysql flexible-server ad-admin wait
    

    Příklady:

    • Počkejte, až správce služby Active Directory existuje.
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Počkejte na odstranění správce služby Active Directory.
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
    

Vytváření uživatelů Microsoft Entra ve službě Azure Database for MySQL

Pokud chcete do databáze Azure Database for MySQL přidat uživatele Microsoft Entra, proveďte následující kroky po připojení:

  1. Nejprve se ujistěte, že uživatel <user>@yourtenant.onmicrosoft.com Microsoft Entra je platným uživatelem v tenantovi Microsoft Entra.
  2. Přihlaste se ke své instanci Azure Database for MySQL jako uživatel microsoft Entra Admin.
  3. Vytvořte uživatele <user>@yourtenant.onmicrosoft.com ve službě Azure Database for MySQL.

Příklad:

CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';

Pro uživatelská jména, která překračují 32 znaků, doporučujeme místo toho použít alias, který se má použít při připojování:

Příklad:

CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';

Poznámka:

  1. MySQL ignoruje úvodní a koncové mezery, takže uživatelské jméno by nemělo obsahovat žádné úvodní ani koncové mezery.
  2. Ověřování uživatele prostřednictvím Microsoft Entra ID neposkytuje uživateli žádná oprávnění pro přístup k objektům v databázi Azure Database for MySQL. Musíte uživateli udělit ručně požadovaná oprávnění.

Vytvoření skupin Microsoft Entra ve službě Azure Database for MySQL

Pokud chcete povolit přístup k databázi ve skupině Microsoft Entra, použijte přesný mechanismus pro uživatele, ale místo toho zadejte název skupiny:

Příklad:

CREATE AADUSER 'Prod_DB_Readonly';

Při přihlašování používají členové skupiny své osobní přístupové tokeny, ale přihlašují se pomocí názvu skupiny zadaného jako uživatelské jméno.

Kompatibilita s ovladači aplikací

Většina ovladačů je podporována; Nezapomeňte ale použít nastavení pro odeslání hesla ve formátu prostého textu, aby se token odeslal beze změny.

  • C/C++

    • libmysqlclient: Podporováno
    • mysql-connector-c++: Podporováno
  • Java

    • Konektor/J (mysql-connector-java): Podporuje se useSSL nastavení
  • Python

    • Konektor /Python: Podporováno
  • Ruby

    • mysql2: Podporováno
  • .NET

    • mysql-connector-net: Podporováno, je potřeba přidat modul plug-in pro mysql_clear_password
    • mysql-net/MySqlConnector: Podporováno
  • Node.js

    • mysqljs: Nepodporuje se (neodesílá token bez opravy)
    • node-mysql2: Podporováno
  • Perl

    • DBD::mysql: Podporováno
    • Net::MySQL: Nepodporuje se
  • Go

    • go-sql-driver: Podporováno, přidání ?tls=true&allowCleartextPasswords=true do připojovací řetězec
  • PHP

    • mysqli extension: Podporováno

    • ovladač PDO_MYSQL: Podporováno

Další krok