Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Azure Database for PostgreSQL är en relationsdatabastjänst baserad på Postgres-databasmotorn med öppen källkod. Det är en fullständigt hanterad databas som en tjänst som kan hantera verksamhetskritiska arbetsbelastningar med förutsägbar prestanda, säkerhet, hög tillgänglighet och dynamisk skalbarhet.
Från version 4.5.0stöder Spring Cloud Azure olika typer av autentiseringsuppgifter för autentisering till Azure Database for PostgreSQL – flexibel server.
PostgreSQL-version som stöds
För versioner som stöds, se PostgreSQL-huvudversioner som stöds i Azure Database for PostgreSQL – Flexibel server.
Kärnfunktioner
Lösenordslös anslutning
Lösenordsfri anslutning använder Microsoft Entra-autentisering för att ansluta till Azure-tjänster utan att lagra några autentiseringsuppgifter i programmet, dess konfigurationsfiler eller i miljövariabler. Microsoft Entra-autentisering är en mekanism för att ansluta till Azure Database for PostgreSQL med hjälp av identiteter som definierats i Microsoft Entra-ID. Med Microsoft Entra-autentisering kan du hantera databasanvändares identiteter och andra Microsoft-tjänster på en central plats, vilket förenklar behörighetshanteringen.
Så här fungerar det
Spring Cloud Azure skapar först en av följande typer av autentiseringsuppgifter beroende på konfigurationen för programautentisering:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Om ingen av dessa typer av autentiseringsuppgifter hittas hämtas de DefaultAzureCredential autentiseringsuppgifterna från programegenskaper, miljövariabler, hanterade identiteter eller IDE. Mer information finns i Spring Cloud Azure-autentisering.
Följande diagram på hög nivå sammanfattar hur autentisering fungerar med OAuth-autentisering med Azure Database for PostgreSQL. Pilarna indikerar kommunikationsvägar.
Konfiguration
Spring Cloud Azure for PostgreSQL stöder följande två konfigurationsalternativ:
Konfigurationsalternativen för global autentisering för
credentialochprofilemed prefix förspring.cloud.azure.Vanliga konfigurationsalternativ för Spring Cloud Azure for PostgreSQL.
I följande tabell visas vanliga konfigurationsalternativ för Spring Cloud Azure for PostgreSQL:
| Namn | Beskrivning |
|---|---|
| spring.datasource.azure.passwordless-enabled | Om du vill aktivera lösenordslösa anslutningar till Azure-databaser med OAuth2 Microsoft Entra-tokenautentiseringsuppgifter. |
| spring.datasource.azure.credential.client-certificate-password | Lösenord för certifikatfilen. |
| spring.datasource.azure.credential.client-certificate-path | Sökväg till en PEM-certifikatfil som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. |
| spring.datasource.azure.credential.client-id | Klient-ID som ska användas vid autentisering med tjänstens huvudnamn med Azure. Det här är en äldre egenskap. |
| spring.datasource.azure.credential.client-secret | Klienthemlighet som ska användas vid autentisering av tjänstens huvudnamn med Azure. Det här är en äldre egenskap. |
| spring.datasource.azure.credential.managed-identity-enabled | Om du vill aktivera hanterad identitet för att autentisera med Azure. Om true och client-id anges använder du klient-ID:t som användartilldelat klient-ID för hanterad identitet. Standardvärdet är false. |
| spring.datasource.azure.credential.password | Lösenord som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
| spring.datasource.azure.credential.username | Användarnamn som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
| spring.datasource.azure.profile.cloud-type | Namnet på det Azure-moln som ska anslutas till. |
| spring.datasource.azure.profile.environment.active-directory-endpoint | Microsoft Entra-slutpunkten att ansluta till. |
| spring.datasource.azure.profile.tenant-id | Klientorganisations-ID för Azure-resurser. De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. |
Beroendekonfiguration
Lägg till följande beroende i projektet. Detta inkluderar automatiskt spring-boot-starter beroende i projektet transitivt.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
</dependency>
Not
Lösenordslösa anslutningar har stöd för sedan version 4.5.0.
Kom ihåg att lägga till BOM-spring-cloud-azure-dependencies tillsammans med ovanstående beroende. Mer information finns i avsnittet Komma igång i Spring Cloud Azure-utvecklarguide.
Grundläggande användning
I följande avsnitt visas de klassiska Användningsscenarierna för Spring Boot-program.
Viktig
Lösenordslös anslutning använder Microsoft Entra-autentisering. Om du vill använda Microsoft Entra-autentisering bör du först ange Microsoft Entra-administratörsanvändaren. Endast en Microsoft Entra-administratörsanvändare kan skapa och aktivera användare för Microsoft Entra ID-baserad autentisering. Mer information finns i Använda Spring Data JDBC med Azure Database for PostgreSQL.
Ansluta till Azure PostgreSQL lokalt utan lösenord
Information om hur du skapar användare och beviljar behörighet finns i Skapa en PostgreSQL-användare som inte är administratör och bevilja behörighet avsnittet Använda Spring Data JDBC med Azure Database for PostgreSQL.
Konfigurera följande egenskaper i din application.yml-fil:
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
Ansluta till Azure PostgreSQL med tjänstens huvudnamn
Tilldela rollen till tjänstens huvudnamn:
Skapa ett SQL-skript med namnet create_ad_user_sp.sql för att skapa en icke-administratörsanvändare. Lägg till följande innehåll och spara det lokalt:
Viktig
Kontrollera att
<service-principal-name>redan finns i din Microsoft Entra-klientorganisation, eller så kan du inte skapa användaren som inte är administratör.cat << EOF > create_ad_user_sp.sql select * from pgaadauth_create_principal('<service-principal-name>', false, false); EOFAnvänd följande kommando för att köra SQL-skriptet för att skapa microsoft Entra-användaren som inte är administratör:
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.sqlAnvänd nu följande kommando för att ta bort den tillfälliga SQL-skriptfilen:
rm create_ad_user_sp.sql
Konfigurera följande egenskaper i din application.yml-fil:
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
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Used the wrong endpoint (personal and organization accounts) i Error AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Ansluta till Azure PostgreSQL med hanterad identitet i Azure Spring Apps
Information om hur du aktiverar hanterad identitet finns i Tilldela den hanterade identiteten med hjälp av avsnittet Azure Portal i Migrera ett program för att använda lösenordslösa anslutningar med Azure Database for PostgreSQL.
Information om hur du beviljar behörigheter finns i avsnittet Tilldela roller till den hanterade identiteten i Migrera ett program för att använda lösenordslösa anslutningar med Azure Database for PostgreSQL.
Konfigurera följande egenskaper i din application.yml-fil:
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
Not
Mer information finns i Självstudie: Distribuera ett Spring-program till Azure Spring Apps med en lösenordslös anslutning till en Azure-databas
Prover
Se azure-spring-boot-samples-lagringsplatsen på GitHub.