Spring Cloud Azure MySQL-támogatás

Ez a cikk bemutatja, hogyan használható a Spring Cloud Azure MySQL-támogatás a Spring Boot-alkalmazások rugalmas hitelesítési lehetőségekkel Azure Database for MySQL, beleértve a jelszó nélküli Microsoft Entra-hitelesítést.

A 4.5.0verziótól kezdve a Spring Cloud Azure különböző típusú hitelesítő adatokat támogat a rugalmas Azure Database for MySQL-kiszolgálóhoz való hitelesítéshez.

Támogatott MySQL-verzió

Az indítás jelenlegi verziójának rugalmas Azure Database for MySQL-kiszolgálót kell használnia 5.7 vagy 8.0.

Alapvető funkciók

Jelszó nélküli kapcsolat

A jelszó nélküli kapcsolat Microsoft Entra-hitelesítést használ az Azure-szolgáltatásokhoz való csatlakozáshoz anélkül, hogy hitelesítő adatokat tárolnál az alkalmazásban, annak konfigurációs fájljaiban vagy környezeti változókban. A Microsoft Entra-hitelesítés az Azure Database for MySQL-hez való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra hitelesítés használatával központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.

Hogyan működik?

A Spring Cloud Azure először az alábbi hitelesítő adatok egyikét hozza létre az alkalmazáshitelesítés konfigurációjától függően:

  • ClientSecretCredential
  • ClientCertificateCredential
  • UsernamePasswordCredential
  • ManagedIdentityCredential
  • DefaultAzureCredential

Ha az alkalmazás nem talál ilyen típusú hitelesítő adatokat, az alkalmazás tulajdonságaiból, környezeti változóiból, felügyelt identitásaiból vagy az IDE-ből szerzi be DefaultAzureCredential a hitelesítő adatokat. További információ: Spring Cloud Azure-hitelesítési.

Az alábbi magas szintű diagram az OAuth hitelesítő adatok hitelesítésének Azure Database for MySQL használatával összefoglalja a hitelesítés működését. A nyilak kommunikációs útvonalakat jelölnek.

A MySQL-hez készült Microsoft Entra-hitelesítést bemutató diagram.

Konfiguráció

A Spring Cloud Azure for MySQL a következő két konfigurációs szintet támogatja:

  1. A credential és profile globális hitelesítési konfigurációs beállításai spring.cloud.azureelőtagokkal.

  2. A Spring Cloud Azure for MySQL gyakori konfigurációs lehetőségei.

Az alábbi táblázat a Spring Cloud Azure for MySQL általános konfigurációs beállításait mutatja be:

Név Leírás
spring.datasource.azure.passwordless-enabled Az OAuth2 Microsoft Entra-jogkivonat hitelesítő adataival engedélyezheti-e az Azure-adatbázisok jelszó nélküli kapcsolatait.
spring.datasource.azure.credential.client-certificate-password A tanúsítványfájl jelszava.
spring.datasource.azure.credential.client-certificate-path Egy PEM-tanúsítványfájl elérési útja, amelyet a szolgáltatásnév azure-beli hitelesítésekor kell használni.
spring.datasource.azure.credential.client-id Az Azure-ral végzett egyszerű szolgáltatáshitelesítéshez használandó ügyfélazonosító. Ez egy örökölt tulajdonság.
spring.datasource.azure.credential.client-secret Az Azure-ral végzett egyszerű szolgáltatáshitelesítéshez használandó ügyfélkód. Ez egy örökölt tulajdonság.
spring.datasource.azure.credential.managed-identity-enabled A felügyelt identitás azure-ral való hitelesítésének engedélyezése. Ha true és a client-id be van állítva, az ügyfélazonosítót fogja használni a felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójaként. Az alapértelmezett érték a false.
spring.datasource.azure.credential.password Felhasználónév-/jelszó-hitelesítés azure-ral történő végrehajtásakor használandó jelszó.
spring.datasource.azure.credential.username Felhasználónév az Azure-ral történő felhasználónév-/jelszó-hitelesítés végrehajtásakor.
spring.datasource.azure.profile.cloud-type A csatlakozni kívánt Azure-felhő neve.
spring.datasource.azure.profile.environment.active-directory-endpoint A Microsoft Entra-végpont, amelyhez csatlakozni szeretne.
spring.datasource.azure.profile.tenant-id Az Azure-erőforrások bérlőazonosítója. A tenant-id engedélyezett értékek a következők: common, organizations, consumersvagy bérlőazonosító.

Függőség beállítása

Adja hozzá a következő függőséget a projekthez. Ez a függőség automatikusan tartalmazza a spring-boot-starter függőséget a projektben.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>

Jegyzet

A jelszó nélküli kapcsolatok a verziótól 4.5.0kezdve támogatottak.

Ne felejtse el hozzáadni az anyagjegyzéket spring-cloud-azure-dependencies az előző függőséggel együtt. További információt a Spring Cloud Azure fejlesztői útmutatójánakElső lépések című szakaszában talál.

Alapszintű használat

Az alábbi szakaszok a klasszikus Spring Boot-alkalmazáshasználati forgatókönyveket mutatják be.

Fontos

A jelszó nélküli kapcsolat Microsoft Entra-hitelesítést használ. A Microsoft Entra hitelesítés használatához először állítsa be a Microsoft Entra rendszergazda felhasználót. Csak a Microsoft Entra rendszergazdai felhasználó hozhat létre és engedélyezhet felhasználókat a Microsoft Entra ID-alapú hitelesítéshez. További információ: Spring Data JDBC használata az Azure Database for MySQL-.

Csatlakozás helyileg az Azure MySQL-hez jelszó nélkül

  1. A felhasználók létrehozásához és az engedély megadásához tekintse meg a Nem rendszergazdai MySQL-felhasználó létrehozása és a Spring Data JDBC használata az Azure Database for MySQL-engedélyének szakaszában.

  2. Konfigurálja a következő tulajdonságokat a application.yml fájlban:

    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
    

Csatlakozás az Azure MySQL-hez szolgáltatásnév használatával

  1. Hozzon létre egy Microsoft Entra felhasználót a szolgáltatásnévhez, és adjon engedélyt.

    1. A környezeti változók beállításához használja az alábbi parancsokat.

      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)
      
    2. Hozzon létre egy create_ad_user_sp.sql nevű SQL-szkriptet, amely nem rendszergazdai felhasználót hoz létre. Adja hozzá a következő tartalmat, és mentse helyileg:

      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;
      EOF
      
    3. A Microsoft Entra nem rendszergazdai felhasználó létrehozásához futtassa az SQL-szkriptet az alábbi paranccsal:

      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.sql
      
    4. Az ideiglenes SQL-szkriptfájl eltávolításához használja a következő parancsot:

      rm create_ad_user_sp.sql
      
  2. Konfigurálja a következő tulajdonságokat a application.yml fájlban:

    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
    

Jegyzet

Az engedélyezett értékek tenant-id a következők: common, organizations, consumersvagy a bérlőazonosító. Ezekről az értékekről további információt a Helytelen végpont (személyes és szervezeti fiókok) szakaszában talál, hiba AADSTS50020 – Az identitásszolgáltatótól származó felhasználói fiók nem létezik a bérlői. Az egybérlős alkalmazás konvertálásáról további információt Az egybérlős alkalmazás átalakítása több-bérlőssé a Microsoft Entra-azonosító.

Csatlakozás az Azure MySQL-hez felügyelt identitással az Azure Spring Appsben

  1. A felügyelt identitás engedélyezéséhez tekintse meg a Felügyelt identitás hozzárendelése az Azure Portal szakaszában, Alkalmazás áttelepítése jelszó nélküli kapcsolatok használatához az Azure Database for MySQL.

  2. Engedélyek megadásához tekintse meg a Szerepkörök hozzárendelése a felügyelt identitáshoz szakaszt, amely Alkalmazás áttelepítése jelszó nélküli kapcsolatok használatára az Azure Database for MySQL-.

  3. Konfigurálja a következő tulajdonságokat a application.yml fájlban:

    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
    

Minták

Tekintse meg a azure-spring-boot-samples GitHub adattárát.