Použití ID Microsoft Entra pro ověřování s MySQL

PLATÍ PRO: Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

Tento článek vás provede postupem konfigurace přístupu Microsoft Entra ID pomocí služby Azure Database for MySQL a postupu připojení pomocí tokenu Microsoft Entra.

Důležité

Ověřování Microsoft Entra je k dispozici pouze pro MySQL 5.7 a novější.

Nastavení uživatele Microsoft Entra Správa

Pouze uživatel Microsoft Entra Správa může vytvářet nebo povolovat uživatele pro ověřování založené na ID Microsoft Entra. Pokud chcete vytvořit uživatele Microsoft Entra Správa, postupujte následovně:

  1. Na webu Azure Portal vyberte instanci Služby Azure Database for MySQL, kterou chcete povolit pro ID Microsoft Entra.
  2. V části Nastavení vyberte Správa služby Active Directory:

set Microsoft Entra administrator

  1. Vyberte platného uživatele Microsoft Entra v tenantovi zákazníka, aby byl správcem Microsoft Entra.

Důležité

Při nastavování správce se na server Azure Database for MySQL přidá nový uživatel s úplnými oprávněními správce.

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

Po konfiguraci správce se teď můžete přihlásit:

Připojení do služby Azure Database for MySQL pomocí ID Microsoft Entra

Následující základní diagram shrnuje pracovní postup použití ověřování Microsoft Entra se službou Azure Database for MySQL:

authentication flow

Integraci Microsoft Entra jsme navrhli tak, aby fungovala s běžnými nástroji MySQL, jako je rozhraní příkazového řádku mysql, které nejsou podporou Microsoft Entra a podporují pouze zadávání uživatelského jména a hesla při připojování k MySQL. Jako heslo předáme token Microsoft Entra, jak je znázorněno na obrázku výše.

V současné době jsme otestovali následující klienty:

  • MySQLWorkbench
  • Rozhraní příkazového řádku MySQL

Také jsme otestovali nejběžnější ovladače aplikací. Podrobnosti najdete na konci této stránky.

Toto jsou kroky, které bude uživatel nebo aplikace muset provést ověření pomocí ID Microsoft Entra popsané níže:

Požadavky

Postup můžete sledovat v Azure Cloud Shellu, virtuálním počítači Azure nebo na místním počítači. Ujistěte se, že máte nainstalované Rozhraní příkazového řádku Azure.

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

az login

Příkaz spustí okno prohlížeče na stránku ověřování Microsoft Entra. Vyžaduje, abyste zadali své ID uživatele Microsoft Entra a heslo.

Krok 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 ke službě 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í:

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ý kóduje všechny informace o ověřeném uživateli a který je cílem služby Azure Database for MySQL.

Platnost přístupového tokenu je 5 minut až 60 minut. Doporučujeme získat přístupový token těsně před zahájením přihlášení ke službě Azure Database for MySQL. Platnost tokenu můžete zobrazit pomocí následujícího příkazu PowerShellu.

$accessToken.ExpiresOn.DateTime

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

Při připojování potřebujete použít přístupový token jako heslo uživatele MySQL. Při použití klientů grafického uživatelského rozhraní, jako je MySQLWorkbench, můžete k načtení tokenu použít metodu popsanou výše.

Použití Rozhraní příkazového řádku MySQL

Pokud používáte rozhraní příkazového řádku, můžete se pomocí této krátké příručky připojit:

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

Používání aplikace MySQL Workbench

  • Spusťte aplikaci MySQL Workbench a klikněte na možnost Databáze a potom klikněte na Připojení do databáze.
  • Do pole název hostitele zadejte plně kvalifikovaný název domény MySQL, např. mydb.mysql.database.azure.com
  • Do pole uživatelského jména zadejte název správce MySQL Microsoft Entra a připojte ho s názvem serveru MySQL, nikoli s plně kvalifikovaným názvem domény, například user@tenant.onmicrosoft.com@mydb
  • V poli heslo klikněte na Uložit v trezoru a vložte přístupový token ze souboru, například C:\temp\MySQLAccessToken.txt.
  • Klikněte na kartu Upřesnit a ujistěte se, že je zaškrtnutá možnost Povolit modul plug-in pro ověřování Cleartext.
  • Klepnutím na tlačítko OK se připojíte 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
  • Název serveru vždy připojte za název uživatele nebo skupiny Microsoft Entra (např. @mydb)
  • 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ř. GroupName@mydb)
  • Pokud název obsahuje mezery, použijte \ před každým mezerou řídicí znak.

Všimněte si nastavení "enable-cleartext-plugin" – musíte použít podobnou konfiguraci s jinými klienty, abyste se ujistili, že se token odešle na server bez hash.

Nyní jste ověřeni na serveru MySQL pomocí ověřování Microsoft Entra.

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í (další části o 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 k instanci Azure Database for MySQL jako uživatel Microsoft Entra Správa.
  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í.

Vytvář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 stejný mechanismus jako pro uživatele, ale místo toho zadejte název skupiny:

Příklad:

CREATE AADUSER 'Prod_DB_Readonly';

Při přihlašování budou členové skupiny používat své osobní přístupové tokeny, ale podepisují se s názvem skupiny zadaným jako uživatelské jméno.

Ověření tokenu

Ověřování Microsoft Entra ve službě Azure Database for MySQL zajišťuje, že uživatel existuje na serveru MySQL, a kontroluje platnost tokenu ověřením obsahu tokenu. Provede se následující postup ověření tokenu:

  • Token je podepsaný ID Microsoft Entra a není manipulován s
  • Token vydalo ID Microsoft Entra pro tenanta přidruženého k serveru.
  • Platnost tokenu nevypršela
  • Token je pro prostředek Azure Database for MySQL (a ne pro jiný prostředek Azure).

Kompatibilita s ovladači aplikací

Většina ovladačů je podporována, ale nezapomeňte použít nastavení pro odesílání hesla v prostém textu, takže se token odešle beze změny.

  • C/C++
    • libmysqlclient: Podporováno
    • mysql-connector-c++: Podporováno
  • Java
    • Připojení or/J (mysql-connector-java): Podporuje se useSSL nastavení
  • Python
    • Připojení or/ Python: Podporováno
  • Ruby
    • mysql2: Podporováno
  • .ČISTÉ
    • mysql-connector-net: Podporováno, je potřeba přidat modul plug-in pro mysql_clear_password
    • mysql-net/MySql Připojení or: 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
  • Jít
    • go-sql-driver: Podporováno, přidání ?tls=true&allowCleartextPasswords=true do připojovací řetězec

Další kroky