Delen via


Ondersteuning voor Spring Cloud Azure PostgreSQL

Azure Database for PostgreSQL- is een relationele databaseservice op basis van de opensource Postgres-database-engine. Het is een volledig beheerde database-as-a-service die bedrijfskritieke workloads kan verwerken met voorspelbare prestaties, beveiliging, hoge beschikbaarheid en dynamische schaalbaarheid.

Van versie 4.5.0ondersteunt Spring Cloud Azure verschillende typen referenties voor verificatie bij Azure Database for PostgreSQL Flexible Server.

Ondersteunde PostgreSQL-versie

Zie Ondersteunde primaire Versies van PostgreSQL in Azure Database for PostgreSQL - Flexible Servervoor ondersteunde versies.

Kernfuncties

Verbinding zonder wachtwoord

Verbinding zonder wachtwoord maakt gebruik van Microsoft Entra-verificatie voor het maken van verbinding met Azure-services zonder referenties op te slaan in de toepassing, de configuratiebestanden of in omgevingsvariabelen. Microsoft Entra-verificatie is een mechanisme voor het maken van verbinding met Azure Database for PostgreSQL met behulp van identiteiten die zijn gedefinieerd in Microsoft Entra-id. Met Microsoft Entra-verificatie kunt u databasegebruikersidentiteiten en andere Microsoft-services beheren op een centrale locatie, wat het beheer van machtigingen vereenvoudigt.

Hoe het werkt

Spring Cloud Azure bouwt eerst een van de volgende typen referenties, afhankelijk van de configuratie van de toepassingsverificatie:

  • ClientSecretCredential
  • ClientCertificateCredential
  • UsernamePasswordCredential
  • ManagedIdentityCredential
  • DefaultAzureCredential

Als geen van deze typen referenties wordt gevonden, worden de DefaultAzureCredential referenties verkregen uit toepassingseigenschappen, omgevingsvariabelen, beheerde identiteiten of de IDE. Zie Spring Cloud Azure-verificatievoor meer informatie.

In het volgende diagram op hoog niveau ziet u hoe verificatie werkt met behulp van OAuth-referentieverificatie met Azure Database for PostgreSQL. De pijlen geven communicatiepaden aan.

Diagram met Microsoft Entra-verificatie voor PostgreSQL.

Configuratie

Spring Cloud Azure for PostgreSQL ondersteunt de volgende twee configuratieopties:

  1. De algemene configuratieopties voor verificatie van credential en profile met voorvoegsels van spring.cloud.azure.

  2. Algemene configuratieopties voor Spring Cloud Azure for PostgreSQL.

In de volgende tabel ziet u de algemene configuratieopties voor Spring Cloud Azure for PostgreSQL:

Naam Beschrijving
spring.datasource.azure.passwordless-enabled Of u wachtwoordloze verbindingen met Azure-databases wilt inschakelen met behulp van OAuth2 Microsoft Entra-tokenreferenties.
spring.datasource.azure.credential.client-certificate-password Wachtwoord van het certificaatbestand.
spring.datasource.azure.credential.client-certificate-path Pad van een PEM-certificaatbestand dat moet worden gebruikt bij het uitvoeren van service-principalverificatie met Azure.
spring.datasource.azure.credential.client-id Client-id die moet worden gebruikt bij het uitvoeren van service-principalverificatie met Azure. Dit is een verouderde eigenschap.
spring.datasource.azure.credential.client-secret Clientgeheim dat moet worden gebruikt bij het uitvoeren van service-principal-verificatie met Azure. Dit is een verouderde eigenschap.
spring.datasource.azure.credential.managed-identity-enabled Of beheerde identiteit moet worden geverifieerd met Azure. Als true en de client-id is ingesteld, gebruikt u de client-id als door de gebruiker toegewezen client-id voor beheerde identiteiten. De standaardwaarde is false.
spring.datasource.azure.credential.password Wachtwoord dat moet worden gebruikt bij het uitvoeren van verificatie van gebruikersnaam en wachtwoord met Azure.
spring.datasource.azure.credential.username Gebruikersnaam die moet worden gebruikt bij het uitvoeren van verificatie met gebruikersnaam en wachtwoord met Azure.
spring.datasource.azure.profile.cloud-type Naam van de Azure-cloud waarmee verbinding moet worden gemaakt.
spring.datasource.azure.profile.environment.active-directory-endpoint Het Microsoft Entra-eindpunt waarmee verbinding moet worden gemaakt.
spring.datasource.azure.profile.tenant-id Tenant-id voor Azure-resources. De waarden die zijn toegestaan voor tenant-id zijn: common, organizations, consumersof de tenant-id.

Afhankelijkheid instellen

Voeg de volgende afhankelijkheid toe aan uw project. Dit omvat automatisch de spring-boot-starter afhankelijkheid in uw projectovergang.

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

Notitie

Verbindingen zonder wachtwoord worden ondersteund sinds versie 4.5.0.

Vergeet niet om de BOM-spring-cloud-azure-dependencies samen met de bovenstaande afhankelijkheid toe te voegen. Zie de sectie Aan de slag aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie.

Basisgebruik

In de volgende secties ziet u de klassieke gebruiksscenario's voor Spring Boot-toepassingen.

Belangrijk

Verbinding zonder wachtwoord maakt gebruik van Microsoft Entra-verificatie. Als u Microsoft Entra-verificatie wilt gebruiken, moet u eerst de Microsoft Entra-beheerder instellen. Alleen een Microsoft Entra-beheerder kan gebruikers maken en inschakelen voor verificatie op basis van Microsoft Entra-id's. Zie Spring Data JDBC gebruiken met Azure Database for PostgreSQLvoor meer informatie.

Lokaal verbinding maken met Azure PostgreSQL zonder wachtwoord

  1. Als u gebruikers wilt maken en machtigingen wilt verlenen, raadpleegt u de Een postgreSQL-gebruiker zonder beheerdersrechten maken en sectie van Spring Data JDBC gebruiken met Azure Database for PostgreSQL.

  2. Configureer de volgende eigenschappen in uw application.yml-bestand:

    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
    

Verbinding maken met Azure PostgreSQL met behulp van een service-principal

  1. Rol toewijzen aan service-principal:

    1. Maak een SQL-script met de naam create_ad_user_sp.sql voor het maken van een niet-beheerdersgebruiker. Voeg de volgende inhoud toe en sla deze lokaal op:

      Belangrijk

      Zorg ervoor dat <service-principal-name> al bestaat in uw Microsoft Entra-tenant of dat u de niet-beheerdersgebruiker niet kunt maken.

      cat << EOF > create_ad_user_sp.sql
      select * from pgaadauth_create_principal('<service-principal-name>', false, false);
      EOF
      
    2. Gebruik de volgende opdracht om het SQL-script uit te voeren om de niet-beheerdersgebruiker van Microsoft Entra te maken:

      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. Gebruik nu de volgende opdracht om het tijdelijke SQL-scriptbestand te verwijderen:

      rm create_ad_user_sp.sql
      
  2. Configureer de volgende eigenschappen in uw application.yml-bestand:

    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
    

Notitie

De waarden die zijn toegestaan voor tenant-id zijn: common, organizations, consumersof de tenant-id. Zie voor meer informatie over deze waarden het Het verkeerde eindpunt (persoonlijke en organisatieaccounts) gebruikt sectie van Fout AADSTS50020 - Gebruikersaccount van id-provider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.

Verbinding maken met Azure PostgreSQL met beheerde identiteit in Azure Spring Apps

  1. Als u beheerde identiteit wilt inschakelen, raadpleegt u de De beheerde identiteit toewijzen met behulp van azure Portal sectie van Een toepassing migreren voor het gebruik van verbindingen zonder wachtwoord met Azure Database for PostgreSQL.

  2. Als u machtigingen wilt verlenen, raadpleegt u de sectie Rollen toewijzen aan de beheerde identiteit van Een toepassing migreren om wachtwoordloze verbindingen met Azure Database for PostgreSQLte gebruiken.

  3. Configureer de volgende eigenschappen in uw application.yml-bestand:

    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
    

Monsters

Zie de azure-spring-boot-samples opslagplaats op GitHub.