Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak pomocí podpory Spring Cloud Azure MySQL připojit aplikace Spring Boot k Azure Database for MySQL s flexibilními možnostmi ověřování, včetně ověřování bez hesla Microsoft Entra.
Od verze 4.5.0podporuje Spring Cloud Azure různé typy přihlašovacích údajů pro ověřování na flexibilní server Azure Database for MySQL.
Podporovaná verze MySQL
Aktuální verze úvodní verze by měla používat flexibilní server Azure Database for MySQL 5.7 nebo 8.0.
Základní funkce
Připojení bez hesla
Připojení bez hesla používá ověřování Microsoft Entra pro připojení ke službám Azure bez uložení přihlašovacích údajů v aplikaci, konfiguračních souborech nebo v proměnných prostředí. Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Database for MySQL pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Jak to funguje
Spring Cloud Azure nejprve sestaví jeden z následujících typů přihlašovacích údajů v závislosti na konfiguraci ověřování aplikací:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Pokud aplikace nenajde žádný z těchto typů přihlašovacích údajů, získá DefaultAzureCredential přihlašovací údaje z vlastností aplikace, proměnných prostředí, spravovaných identit nebo integrovaného vývojového prostředí. Další informace najdete v tématu ověřování Spring Cloud Azure.
Následující diagram vysoké úrovně shrnuje, jak funguje ověřování pomocí ověřování přihlašovacích údajů OAuth s Azure Database for MySQL. Šipky označují komunikační cesty.
diagram
Konfigurace
Spring Cloud Azure for MySQL podporuje následující dvě úrovně možností konfigurace:
Možnosti konfigurace globálního ověřování
credentialaprofiles předponamispring.cloud.azure.Běžné možnosti konfigurace Spring Cloud Pro MySQL v Azure for MySQL
Následující tabulka ukazuje běžné možnosti konfigurace Spring Cloud Azure for MySQL:
| Jméno | Popis |
|---|---|
spring.datasource.azure.passwordless-enabled |
Určuje, jestli chcete povolit připojení bez hesla k databázím Azure pomocí přihlašovacích údajů tokenu OAuth2 Microsoft Entra. |
spring.datasource.azure.credential.client-certificate-password |
Heslo souboru certifikátu. |
spring.datasource.azure.credential.client-certificate-path |
Cesta k souboru certifikátu PEM, který se má použít při ověřování instančního objektu v Azure |
spring.datasource.azure.credential.client-id |
ID klienta, které se má použít při ověřování instančního objektu v Azure. Toto je starší vlastnost. |
spring.datasource.azure.credential.client-secret |
Tajný klíč klienta, který se má použít při ověřování instančního objektu v Azure. Toto je starší vlastnost. |
spring.datasource.azure.credential.managed-identity-enabled |
Určuje, jestli se má spravovaná identita ověřit v Azure. Pokud true a je nastavená client-id, použije se ID klienta jako ID klienta přiřazené uživatelem spravované identity. Výchozí hodnota je false. |
spring.datasource.azure.credential.password |
Heslo, které se má použít při ověřování pomocí uživatelského jména a hesla v Azure. |
spring.datasource.azure.credential.username |
Uživatelské jméno, které se má použít při ověřování pomocí uživatelského jména a hesla v Azure. |
spring.datasource.azure.profile.cloud-type |
Název cloudu Azure, ke kterému se chcete připojit. |
spring.datasource.azure.profile.environment.active-directory-endpoint |
Koncový bod Microsoft Entra, ke kterému se chcete připojit. |
spring.datasource.azure.profile.tenant-id |
ID tenanta pro prostředky Azure. Hodnoty povolené pro tenant-id jsou: common, organizations, consumersnebo ID tenanta. |
Nastavení závislostí
Přidejte do projektu následující závislost. Tato závislost automaticky zahrnuje spring-boot-starter závislost ve vašem projektu.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Poznámka
Připojení bez hesla se podporují od verze 4.5.0.
Nezapomeňte přidat kusovník spring-cloud-azure-dependencies spolu s předchozí závislostí. Další informace najdete v části Začínáme příručky pro vývojáře Spring Cloud v Azure.
Základní využití
Následující části ukazují klasické scénáře použití aplikace Spring Boot.
Důležitý
Připojení bez hesla používá ověřování Microsoft Entra. Pokud chcete použít ověřování Microsoft Entra, nastavte nejprve uživatele Microsoft Entra správce. Pouze uživatel správce Microsoft Entra může vytvářet a povolovat uživatele pro ověřování založené na ID Microsoft Entra. Další informace najdete v tématu Použití Spring Data JDBC se službou Azure Database for MySQL.
Místní připojení k Azure MySQL bez hesla
Pokud chcete vytvářet uživatele a udělovat oprávnění, přečtěte si téma Vytvoření uživatele bez oprávnění správce MySQL a udělení oprávnění části Použití Spring Data JDBC se službou Azure Database for MySQL.
V souboru application.yml nakonfigurujte následující vlastnosti:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Připojení k Azure MySQL pomocí instančního objektu
Vytvořte Microsoft Entra uživatele pro instanční objekt a udělte oprávnění.
K nastavení proměnných prostředí použijte následující příkazy.
export AZURE_MYSQL_AZURE_AD_SP_USERID=$(az ad sp list \ --display-name <service_principal-name> \ --query '[0].appId' --output tsv) export AZURE_MYSQL_AZURE_AD_SP_USERNAME=<YOUR_MYSQL_AZURE_AD_USERNAME> export AZURE_MYSQL_SERVER_NAME=<YOUR_MYSQL_SERVER_NAME> export AZURE_MYSQL_DATABASE_NAME=<YOUR_MYSQL_DATABASE_NAME> export CURRENT_USERNAME=$(az ad signed-in-user show \ --query userPrincipalName \ --output tsv)Vytvořte skript SQL s názvem create_ad_user_sp.sql pro vytvoření uživatele bez oprávnění správce. Přidejte následující obsah a uložte ho místně:
cat << EOF > create_ad_user_sp.sql SET aad_auth_validate_oids_in_tenant = OFF; CREATE AADUSER '$AZURE_MYSQL_AZURE_AD_SP_USERNAME' IDENTIFIED BY '$AZURE_MYSQL_AZURE_AD_SP_USERID'; GRANT ALL PRIVILEGES ON $AZURE_MYSQL_DATABASE_NAME.* TO '$AZURE_MYSQL_AZURE_AD_SP_USERNAME'@'%'; FLUSH privileges; EOFSpuštěním následujícího příkazu spusťte skript SQL a vytvořte uživatele Microsoft Entra bez oprávnění správce:
mysql -h $AZURE_MYSQL_SERVER_NAME.mysql.database.azure.com --user $CURRENT_USERNAME --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < create_ad_user_sp.sqlPomocí následujícího příkazu odeberte dočasný soubor skriptu SQL:
rm create_ad_user_sp.sql
V souboru application.yml nakonfigurujte následující vlastnosti:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_SP_USERNAME} azure: passwordless-enabled: true
Poznámka
Povolené hodnoty jsou tenant-id : common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) části Chyba AADSTS50020 – Uživatelský účet od zprostředkovatele identity vtenanta neexistuje . Informace o převodu aplikace s jedním tenantem najdete v tématu Převod jednoklientských aplikací na víceklienta vMicrosoft Entra ID .
Připojení k Azure MySQL pomocí spravované identity v Azure Spring Apps
Pokud chcete povolit spravovanou identitu, přečtěte si téma Přiřazení spravované identity pomocí webu Azure Portal části Migrace aplikace pro použití bez hesel sAzure Database for MySQL .
Pokud chcete udělit oprávnění, přečtěte si část Přiřazení rolí spravované identitěMigrace aplikace pro použití bez hesel sAzure Database for MySQL .
V souboru application.yml nakonfigurujte následující vlastnosti:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Vzorky
Podívejte se na azure-spring-boot-samples úložiště na GitHubu.