Compartir vía


Introducción a las redes para Azure Database for PostgreSQL con acceso público (direcciones IP permitidas)

En este artículo se describen los conceptos de conectividad y redes para las instancias de servidor flexible de Azure Database for PostgreSQL.

Al crear una instancia de servidor flexible de Azure Database for PostgreSQL, debe elegir una de las siguientes opciones de red:

  • Acceso privado (integración de red virtual)
  • Acceso público (direcciones IP permitidas) y punto de conexión privado

Las características siguientes se aplican tanto si decide usar la opción de acceso privado como la de acceso público:

  • Las conexiones desde direcciones IP permitidas deben autenticarse usando credenciales válidas en la instancia flexible de servidor de base de datos PostgreSQL de Azure.
  • El cifrado de la conexión se aplica para el tráfico de red.
  • El servidor tiene un nombre de dominio completo (FQDN). En el caso de la propiedad hostname en las cadenas de conexión, se recomienda usar el FQDN en lugar de una dirección IP.
  • Las dos opciones controlan el acceso en el nivel de servidor, no en el nivel de base de datos o de tabla. Tendría que usar las propiedades del rol de PostgreSQL para controlar el acceso a bases de datos, tablas y otros objetos.

Nota

Dado que el servicio Azure Database for PostgreSQL es un servicio de base de datos administrado, los usuarios no tienen acceso al host o al sistema operativo para ver o modificar archivos de configuración como pg_hba.conf. El contenido de los archivos se actualiza de forma automática en función de la configuración de red.

Uso de redes de acceso público con Azure Database for PostgreSQL

Al elegir el método de acceso público, se accede a la instancia de servidor flexible de Azure Database for PostgreSQL a través de un punto de conexión público a través de Internet. El punto de conexión público es una dirección DNS que se puede resolver públicamente. La frase direcciones IP permitidas hace referencia a un intervalo de direcciones IP a las que decida conceder permiso para acceder al servidor. Estos permisos se denominan reglas de firewall.

Elija la opción de red si quiere las funcionalidades siguientes:

  • Conexión desde recursos de Azure que no admiten redes virtuales.
  • Conexión desde recursos externos de Azure que no están conectados mediante VPN o Azure ExpressRoute.
  • Asegúrese de que la instancia de servidor flexible de Azure Database for PostgreSQL tenga un punto de conexión público al que se pueda acceder a través de Internet.

Entre las características del método de acceso público se incluyen las siguientes:

  • Solo las direcciones IP que usted permite tienen permiso para acceder a la instancia de servidor flexible de Azure Database para PostgreSQL. De forma predeterminada, no se admite ninguna dirección IP. Puede agregar direcciones IP durante la creación del servidor o después.

  • La instancia de servidor flexible de Azure Database for PostgreSQL tiene un nombre DNS que se puede resolver públicamente.

  • La instancia de servidor flexible de Azure Database for PostgreSQL no está en una de las redes virtuales de Azure.

  • El tráfico de red hacia y desde el servidor no se realiza a través de una red privada. El tráfico usa las rutas de Internet generales.

Reglas de firewall

Las reglas de firewall de nivel de servidor se aplican a todas las bases de datos de la misma instancia de servidor flexible de Azure Database for PostgreSQL. Si la dirección IP de origen de la solicitud está comprendida en uno de los intervalos especificados en las reglas de firewall de nivel de servidor, la conexión se concede. De lo contrario, se rechaza. Por ejemplo, si la aplicación se conecta con un controlador JDBC para PostgreSQL, puede encontrar este error al intentar conectarse cuando el firewall está bloqueando la conexión.

java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "123.45.67.890", user "adminuser", database "postgresql", SSL

Nota

Para acceder a una instancia de servidor flexible de Azure Database for PostgreSQL desde el equipo local, asegúrese de que el firewall de la red y el equipo local permitan la comunicación saliente en el puerto TCP 5432.

Reglas de firewall administradas mediante programación

Además de usar Azure Portal, puede administrar las reglas de firewall mediante programación con la CLI de Azure. Para obtener más información, consulte Redes.

Permitir todas las direcciones IP de Azure

Se recomienda encontrar la dirección IP saliente de cualquier aplicación o servicio, y permitir explícitamente el acceso a las direcciones IP individuales o a los rangos. Si no hay ninguna dirección IP saliente fija disponible para su servicio de Azure, puede habilitar las conexiones desde todas las direcciones IP de los centros de datos de Azure.

Para habilitar esta configuración desde Azure Portal, en el panel Redes, active la casilla Permitir acceso público a este servidor desde cualquier servicio de Azure dentro de Azure y, a continuación, seleccione Guardar.

Importante

La opción Permitir acceso público desde los recursos y servicios de Azure dentro de Azure configura el firewall para permitir todas las conexiones desde Azure, incluidas las que provienen de suscripciones de otros clientes. Si selecciona esta opción, asegúrese de que los permisos de usuario y el inicio de sesión solo dejan acceder a los usuarios autorizados.

Solución de problemas de acceso público

Tenga en cuenta los siguientes puntos cuando el acceso a una instancia de servidor flexible de Azure Database for PostgreSQL no se comporta según lo previsto:

  • Cambios en la lista de permitidos aún no se han aplicado. Puede haber un retraso de hasta cinco minutos para que los cambios en la configuración del firewall del servidor flexible de Azure Database for PostgreSQL surtan efecto.

  • Error de autenticación. Si un usuario no tiene permisos en la instancia de servidor flexible de Azure Database for PostgreSQL o la contraseña es incorrecta, se deniega la conexión a la instancia de servidor flexible de Azure Database for PostgreSQL. La creación de una configuración de firewall solo ofrece a los clientes una oportunidad para intentar conectarse al servidor. Los clientes todavía tienen que proporcionar las credenciales de seguridad necesarias.

  • La dirección IP de cliente dinámica impide el acceso. Si tiene una conexión a Internet con direccionamiento IP dinámico y tiene problemas con el firewall, pruebe alguna de las soluciones siguientes:

    • Pida a su proveedor de acceso a Internet (ISP) el intervalo de direcciones IP asignado a los equipos cliente que acceden a la instancia de servidor flexible de Azure Database for PostgreSQL. A continuación, agréguelo como una regla de firewall.
    • Obtenga el direccionamiento IP estático en su lugar para los equipos cliente. A continuación, agregue la dirección IP estática como regla de firewall.
  • La regla de firewall no está disponible en formato IPv6. Las reglas de firewall deben estar en formato IPv4. Si especifica reglas de firewall en formato IPv6, recibirá un error de validación.

Nombre de host

Independientemente de la opción de red que elija, se recomienda usar siempre un FQDN como nombre de host al conectarse a la instancia de servidor flexible de Azure Database for PostgreSQL. No se garantiza que la dirección IP del servidor permanezca estática. El uso del FQDN le ayuda a evitar realizar cambios en la cadena de conexión.

Un ejemplo que usa un FQDN como nombre de host es hostname = servername.postgres.database.azure.com. Siempre que sea posible, evite usar hostname = 10.0.0.4 (una dirección privada) o hostname = 40.2.45.67 (una dirección pública).

Direcciones IP salientes para la configuración del firewall

Cuando la instancia de servidor flexible de Azure Database for PostgreSQL necesita establecer conexiones salientes a servicios externos (por ejemplo, para la replicación lógica, extensiones que se conectan a recursos externos o orígenes de datos externos), es posible que tenga que configurar reglas de firewall en esos servicios externos para permitir el tráfico desde el servidor de bases de datos.

Búsqueda de la dirección IP del servidor

Para buscar la dirección IP asignada actualmente a la instancia de servidor flexible de Azure Database for PostgreSQL:

  • Uso de la resolución de DNS: puede resolver el FQDN del servidor (servername.postgres.database.azure.com) para obtener la dirección IP actual. Use herramientas como nslookup o dig:

    nslookup servername.postgres.database.azure.com
    
  • Usando el portal de Azure: Navegue a su instancia de servidor flexible de Azure Database for PostgreSQL en el portal de Azure. La dirección IP pública del servidor no se muestra directamente, pero puede encontrarlo resolviendo el FQDN del servidor.

  • Uso de la CLI de Azure: puede usar la CLI de Azure para obtener información sobre el servidor y, a continuación, resolver el nombre de host:

    az postgres flexible-server show --resource-group myResourceGroup --name myServerName
    

Consideraciones importantes para las conexiones salientes

  • Las direcciones IP pueden cambiar: la dirección IP pública asignada a la instancia de servidor flexible de Azure Database for PostgreSQL no es estática y puede cambiar durante el mantenimiento, las actualizaciones u otros eventos operativos. Use siempre el FQDN siempre que sea posible y actualice periódicamente las reglas de firewall externas si es necesario.

  • Intervalos IP del centro de datos de Azure: para una configuración de firewall más predecible, puede permitir el tráfico desde todo el intervalo IP del centro de datos de Azure para la región donde se encuentra el servidor. Azure publica los intervalos IP de cada región en la descarga de intervalos IP de Azure y etiquetas de servicio .

  • Etiquetas de servicio: si el servicio externo al que se conecta también se hospeda en Azure, considere la posibilidad de usar etiquetas de servicio de Azure para reglas de firewall más dinámicas y fáciles de mantener.

  • Alternativa de punto de conexión privado: para una conectividad más estable y para evitar direcciones IP públicas, considere la posibilidad de usar puntos de conexión privados en lugar del acceso público.