Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
azure Database for PostgreSQL es un servicio de base de datos relacional basado en el motor de base de datos postgres de código abierto. Es una base de datos como servicio totalmente administrada que puede controlar las cargas de trabajo críticas con un rendimiento predecible, seguridad, alta disponibilidad y escalabilidad dinámica.
Desde la versión 4.5.0, Spring Cloud Azure admite varios tipos de credenciales para la autenticación en el servidor flexible de Azure Database for PostgreSQL.
Versión admitida de PostgreSQL
Para ver las versiones compatibles, consulte versiones principales de PostgreSQL compatibles en Azure Database for PostgreSQL: servidor flexible.
Características principales
Conexión sin contraseña
La conexión sin contraseña usa la autenticación de Microsoft Entra para conectarse a servicios de Azure sin almacenar credenciales en la aplicación, sus archivos de configuración o en variables de entorno. La autenticación de Microsoft Entra es un mecanismo para conectarse a Azure Database for PostgreSQL mediante identidades definidas en Microsoft Entra ID. Con la autenticación de Microsoft Entra, puede administrar identidades de usuario de base de datos y otros servicios de Microsoft en una ubicación central, lo que simplifica la administración de permisos.
Cómo funciona
Spring Cloud Azure compilará primero uno de los siguientes tipos de credenciales en función de la configuración de autenticación de la aplicación:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Si no se encuentra ninguno de estos tipos de credenciales, las credenciales de DefaultAzureCredential se obtendrán de las propiedades de la aplicación, las variables de entorno, las identidades administradas o el IDE. Para más información, consulte autenticación de Azure de Spring Cloud.
En el diagrama de alto nivel siguiente se resume cómo funciona la autenticación mediante la autenticación de credenciales de OAuth con Azure Database for PostgreSQL. Las flechas indican caminos de comunicación.
Configuración
Spring Cloud Azure for PostgreSQL admite los dos niveles siguientes de opciones de configuración:
Las opciones de configuración de autenticación global de
credentialyprofilecon prefijos despring.cloud.azure.Opciones de configuración comunes de Spring Cloud Azure for PostgreSQL.
En la tabla siguiente se muestran las opciones de configuración comunes de Spring Cloud Azure for PostgreSQL:
| Nombre | Descripción |
|---|---|
| spring.datasource.azure.passwordless habilitado | Si se deben habilitar conexiones sin contraseña a bases de datos de Azure mediante credenciales de token de Microsoft Entra de OAuth2. |
| spring.datasource.azure.credential.client-certificate-password | Contraseña del archivo de certificado. |
| spring.datasource.azure.credential.client-certificate-path | Ruta de acceso de un archivo de certificado PEM que se usará al realizar la autenticación de la entidad de servicio con Azure. |
| spring.datasource.azure.credential.client-id | Identificador de cliente que se usará al realizar la autenticación de entidad de servicio con Azure. Se trata de una propiedad heredada. |
| spring.datasource.azure.credential.client-secret | Secreto de cliente que se usará al realizar la autenticación de entidad de servicio con Azure. Se trata de una propiedad heredada. |
| spring.datasource.azure.credential.managed-identity-enabled | Indica si se va a habilitar la identidad administrada para autenticarse con Azure. Si se establece true y el client-id, usará el identificador de cliente como identificador de cliente de identidad administrada asignada por el usuario. El valor predeterminado es false. |
| spring.datasource.azure.credential.password | Contraseña que se usará al realizar la autenticación de nombre de usuario y contraseña con Azure. |
| spring.datasource.azure.credential.username | Nombre de usuario que se usará al realizar la autenticación de nombre de usuario y contraseña con Azure. |
| tipo spring.datasource.azure.profile.cloud | Nombre de la nube de Azure a la que se va a conectar. |
| spring.datasource.azure.profile.environment.active-directory-endpoint | Punto de conexión de Microsoft Entra al que conectarse. |
| spring.datasource.azure.profile.tenant-id | Identificador de inquilino para los recursos de Azure. Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. |
Configuración de dependencias
Agregue la siguiente dependencia al proyecto. Esto incluirá automáticamente la dependencia de spring-boot-starter en el proyecto de forma transitiva.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-postgresql</artifactId>
</dependency>
Nota
Se admiten conexiones sin contraseña desde la versión 4.5.0.
Recuerde agregar el spring-cloud-azure-dependencies boM junto con la dependencia anterior. Para obtener más información, consulte la sección Introducción de la guía para desarrolladores de Azure de Spring Cloud.
Uso básico
En las secciones siguientes se muestran los escenarios clásicos de uso de aplicaciones de Spring Boot.
Importante
La conexión sin contraseña usa la autenticación de Microsoft Entra. Para usar la autenticación de Microsoft Entra, primero debe establecer el usuario administrador de Microsoft Entra. Solo un usuario administrador de Microsoft Entra puede crear y habilitar usuarios para la autenticación basada en identificadores de Microsoft Entra. Para más información, consulte Uso de Spring Data JDBC con Azure Database for PostgreSQL.
Conexión a Azure PostgreSQL localmente sin contraseña
Para crear usuarios y conceder permiso, consulte la sección Creación de un usuario no administrador de PostgreSQL y concesión de permisos de Uso de Spring Data JDBC con Azure Database for PostgreSQL.
Configure las siguientes propiedades en el archivo application.yml:
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
Conexión a Azure PostgreSQL mediante una entidad de servicio
Asignar rol a la entidad de servicio:
Cree un script SQL denominado create_ad_user_sp.sql para crear un usuario que no sea administrador. Agregue el siguiente contenido y guárdelo localmente:
Importante
Asegúrese de que
<service-principal-name>ya existe en el inquilino de Microsoft Entra o no podrá crear el usuario que no sea administrador.cat << EOF > create_ad_user_sp.sql select * from pgaadauth_create_principal('<service-principal-name>', false, false); EOFUse el siguiente comando para ejecutar el script SQL para crear el usuario que no es administrador de Microsoft Entra:
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.sqlAhora use el siguiente comando para quitar el archivo de script SQL temporal:
rm create_ad_user_sp.sql
Configure las siguientes propiedades en el archivo application.yml:
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
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: la cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir la aplicación de un solo inquilino, consulte Convertir aplicación de un solo inquilino en multiinquilino en microsoft Entra ID.
Conexión a Azure PostgreSQL con identidad administrada en Azure Spring Apps
Para habilitar la identidad administrada, consulte la sección Asignación de la identidad administrada mediante Azure Portal de Migración de una aplicación para usar conexiones sin contraseña con Azure Database for PostgreSQL.
Para conceder permisos, consulte la sección Asignación de roles a la identidad administrada de Migración de una aplicación para usar conexiones sin contraseña con Azure Database for PostgreSQL.
Configure las siguientes propiedades en el archivo application.yml:
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
Nota
Para más información, consulte Tutorial: Implementación de una aplicación spring en Azure Spring Apps con una conexión sin contraseña a una base de datos de Azure
Muestras
Consulte el repositorio azure-spring-boot-samples en GitHub.