Share via


Binden einer Azure Database for PostgreSQL-Instanz an Ihre Anwendung in Azure Spring Apps

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java ✔️ C#

Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise

Mit Azure Spring Apps können Sie ausgewählte Azure-Dienste automatisch an Ihre Anwendungen binden, anstatt Ihre Spring Boot-Anwendung manuell zu konfigurieren. In diesem Artikel erfahren Sie, wie Sie Ihre Anwendung an Ihre Azure Database for PostgreSQL-Instanz binden.

In diesem Artikel enthalten wir zwei Authentifizierungsmethoden: Microsoft Entra-Authentifizierung und PostgreSQL-Authentifizierung. Die Registerkarte Kennwortlos zeigt die Microsoft Entra-Authentifizierung und die Registerkarte Kennwort die PostgreSQL-Authentifizierung.

Die Microsoft Entra-Authentifizierung ist ein Mechanismus zum Herstellen einer Verbindung mit Azure Database for PostgreSQL unter Verwendung von Identitäten, die in Microsoft Entra ID definiert sind. Mit der Microsoft Entra-Authentifizierung können Sie Datenbankbenutzeridentitäten und andere Microsoft-Dienste an einem zentralen Ort verwalten, wodurch die Berechtigungsverwaltung vereinfacht wird.

Die PostgreSQL-Authentifizierung verwendet Konten, die in PostgreSQL gespeichert sind. Wenn Sie kennwörter als Anmeldeinformationen für die Konten verwenden, werden diese Anmeldeinformationen in der Benutzertabelle gespeichert. Da diese Kennwörter in PostgreSQL gespeichert sind, müssen Sie die Drehung der Kennwörter selbst verwalten.

Voraussetzungen

Vorbereiten Ihres Projekts

Bereiten Sie Ihr Projekt mit den folgenden Schritten vor:

  1. Fügen Sie der Datei pom.xml Ihres Projekts die folgende Abhängigkeit hinzu:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
    </dependency>
    
  2. Entfernen Sie in der Datei application.properties alle spring.datasource.*-Eigenschaften.

  3. Aktualisieren Sie die aktuelle App durch Ausführen von az spring app deploy, oder erstellen Sie eine neue Bereitstellung für diese Änderung, indem Sie az spring app deployment create ausführen.

Binden der App an Ihre Azure Database for PostgreSQL-Instanz

Hinweis

Stellen Sie sicher, dass Sie nur eine der folgenden Ansätze auswählen, um eine Verbindung zu erstellen. Wenn Sie bereits Tabellen mit einer Verbindung erstellt haben, können andere Benutzer nicht auf die Tabellen zugreifen oder diese ändern. Wenn Sie den anderen Ansatz ausprobieren, löst die Anwendung Fehler wie "Berechtigung verweigert" aus. Um dieses Problem zu beheben, stellen Sie eine Verbindung mit einer neuen Datenbank her, oder löschen Sie sie, und erstellen Sie eine vorhandene neu.

Hinweis

Standardmäßig werden Dienst-Verbinden oren auf Anwendungsebene erstellt. Um die Verbindungen außer Kraft zu setzen, können Sie in den Bereitstellungen wieder andere Verbindungen erstellen.

  1. Installieren Sie die kennwortlose Dienstconnector-Erweiterung für die Azure CLI:

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. Konfigurieren Sie Azure Spring Apps so, dass anhand des Befehls az spring connection create mit einer systemseitig zugewiesenen verwalteten Identität eine Verbindung mit der PostgreSQL-Datenbank hergestellt wird.

    az spring connection create postgres-flexible \
        --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \
        --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \
        --app $APP_NAME \
        --deployment $DEPLOYMENT_NAME \
        --target-resource-group $POSTGRES_RESOURCE_GROUP \
        --server $POSTGRES_SERVER_NAME \
        --database $DATABASE_NAME \
        --system-identity
    

Voraussetzungen

Vorbereiten Ihres Projekts

Bereiten Sie Ihr Projekt mit den folgenden Schritten vor:

  1. Fügen Sie der Datei pom.xml Ihres Projekts die folgende Abhängigkeit hinzu:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
    </dependency>
    
  2. Entfernen Sie in der Datei application.properties alle spring.datasource.*-Eigenschaften.

  3. Aktualisieren Sie die aktuelle App durch Ausführen von az spring app deploy, oder erstellen Sie eine neue Bereitstellung für diese Änderung, indem Sie az spring app deployment create ausführen.

Binden der App an Ihre Azure Database for PostgreSQL-Instanz

Hinweis

Dienst-Verbinden or werden auf Bereitstellungsebene erstellt. Wenn also eine andere Bereitstellung erstellt wird, müssen Sie die Verbindungen erneut erstellen.

  1. Installieren Sie die kennwortlose Dienstconnector-Erweiterung für die Azure CLI:

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. Konfigurieren Sie Azure Spring Apps so, dass anhand des Befehls az spring connection create mit einer systemseitig zugewiesenen verwalteten Identität eine Verbindung mit der PostgreSQL-Datenbank hergestellt wird.

    az spring connection create postgres \
        --resource-group $AZ_SPRING_APPS_RESOURCE_GROUP \
        --service $AZ_SPRING_APPS_SERVICE_INSTANCE_NAME \
        --app $APP_NAME \
        --deployment $DEPLOYMENT_NAME \
        --target-resource-group $POSTGRES_RESOURCE_GROUP \
        --server $POSTGRES_SERVER_NAME \
        --database $DATABASE_NAME \
        --system-identity
    

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie eine Anwendung in Azure Spring Apps an eine Azure Database for PostgreSQL-Instanz binden können. Weitere Informationen zum Binden von Diensten an eine Anwendung finden Sie unter Binden einer Azure Cosmos DB-Datenbank an eine Anwendung in Azure Spring Apps.