Spring Cloud Azure PostgreSQL-támogatás

Azure Database for PostgreSQL egy nyílt forráskódú Postgres-adatbázismotoron alapuló relációs adatbázis-szolgáltatás. Ez egy teljes mértékben felügyelt adatbázis szolgáltatásként, amely kiszámítható teljesítménnyel, biztonsággal, magas rendelkezésre állással és dinamikus skálázhatósággal képes kezelni a kritikus fontosságú számítási feladatokat.

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 PostgreSQL-kiszolgálóhoz való hitelesítéshez.

Támogatott PostgreSQL-verzió

A támogatott verziókról a Támogatott PostgreSQL-főverziók az Azure Database for PostgreSQL rugalmas kiszolgálóicímű témakörben olvashat.

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 PostgreSQL-hez való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és egyéb Microsoft-szolgáltatásait, ami leegyszerűsíti az engedélykezelést.

Hogyan működik?

A Spring Cloud Azure az alkalmazáshitelesítés konfigurációjától függően először a következő típusú hitelesítő adatok egyikét fogja létrehozni:

  • ClientSecretCredential
  • ClientCertificateCredential
  • UsernamePasswordCredential
  • ManagedIdentityCredential
  • DefaultAzureCredential

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

Az alábbi magas szintű diagram összefoglalja, hogyan működik a hitelesítés az OAuth hitelesítő adatok hitelesítésével az Azure Database for PostgreSQL-lel. A nyilak kommunikációs útvonalakat jelölnek.

Diagram a PostgreSQL-hez készült Microsoft Entra-hitelesítésről.

Konfiguráció

A Spring Cloud Azure for PostgreSQL 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 PostgreSQL gyakori konfigurációs lehetőségei.

Az alábbi táblázat a Spring Cloud Azure for PostgreSQL gyakori 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 A PEM-tanúsítványfájl elérési útja, amelyet az Azure-ral végzett szolgáltatásnév-hitelesítés során 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égek beállítása

Adja hozzá a következő függőséget a projekthez. Ez automatikusan magában foglalja a projekt spring-boot-starter függőségét tranzitív módon.

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

Jegyzet

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

Ne felejtse el hozzáadni a BOM-otspring-cloud-azure-dependencies a fenti 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 a Microsoft Entra rendszergazdai felhasználót kell beállítania. 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ókért lásd: A Spring Data JDBC használata az Azure Database for PostgreSQL-lel.

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

  1. A felhasználók létrehozásához és az engedély megadásához tekintse meg a PostgreSQL nem rendszergazdai felhasználó létrehozása és a Spring Data JDBC használata az Azure Database for PostgreSQLengedélyekkel szakaszát.

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

    spring:
      datasource:
        url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require
        username: ${AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME}
        azure:
          passwordless-enabled: true
    

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

  1. Szerepkör hozzárendelése a service principalhoz:

    1. 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:

      Fontos

      Győződjön meg arról, hogy a(z) <service-principal-name> már létezik a Microsoft Entra-bérlőjében, különben nem fogja tudni létrehozni a nem adminisztrátori felhasználót.

      cat << EOF > create_ad_user_sp.sql
      select * from pgaadauth_create_principal('<service-principal-name>', false, false);
      EOF
      
    2. A Microsoft Entra nem rendszergazdai felhasználó létrehozásához futtassa az SQL-szkriptet az alábbi paranccsal:

      psql "host=$AZ_DATABASE_SERVER_NAME.postgres.database.azure.com user=$CURRENT_USERNAME@$AZ_DATABASE_SERVER_NAME dbname=postgres port=5432 password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) sslmode=require" < create_ad_user_sp.sql
      
    3. Most az alábbi paranccsal távolítsa el az ideiglenes SQL-szkriptfájlt:

      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:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require
        username: ${AZ_POSTGRESQL_AD_SP_USERNAME}
        azure:
          passwordless-enabled: true
    

Jegyzet

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

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

  1. A felügyelt identitás engedélyezéséhez lásd a Alkalmazás migrálása jelszó nélküli kapcsolatok használatára az Azure Database for PostgreSQL-lel című cikk Felügyelt identitás hozzárendelése az Azure Portal használatával szakaszát.

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

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

    spring:
      cloud:
        azure:
          credential:
            managed-identity-enabled: true
            client-id: ${AZURE_CLIENT_ID}
      datasource:
        url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require
        username: ${AZ_POSTGRESQL_AD_MI_USERNAME}
        azure:
          passwordless-enabled: true
    

Minták

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