Acceso público en Azure Cosmos DB for PostgreSQL
SE APLICA A: Azure Cosmos DB for PostgreSQL (con tecnología de la extensión de base de datos de Citus en PostgreSQL)
Azure Cosmos DB for PostgreSQL admite tres opciones de red:
- Sin acceso
- Es el valor predeterminado de un clúster creado recientemente si el acceso público o privado no está habilitado. Ningún equipo, ya sea dentro o fuera de Azure, puede conectarse a los nodos de base de datos.
- Acceso público
- Se asigna una dirección IP pública al nodo de coordinación.
- El acceso al nodo de coordinación se protege mediante el firewall.
- Opcionalmente, se puede habilitar el acceso a todos los nodos de trabajo. En este caso, las direcciones IP públicas se asignan a los nodos de trabajo y se protegen mediante el mismo firewall.
- Acceso privado
- Solo las direcciones IP privadas se asignan a los nodos del clúster.
- Cada nodo requiere un punto de conexión privado para permitir que los hosts de la red virtual seleccionada accedan a los nodos.
- Las características de seguridad de las redes virtuales de Azure, como los grupos de seguridad de red, se pueden usar para el control de acceso.
Al crear un clúster, puede habilitar el acceso público o privado u optar por el valor predeterminado Sin acceso. Una vez creado el clúster, puede elegir cambiar entre el acceso público o privado, o activar ambos a la vez.
En esta página se describe la opción de acceso público. Para obtener acceso privado, consulte Acceso privado en Azure Cosmos DB for PostgreSQL.
Información general de firewalls
El firewall del servidor Azure Cosmos DB for PostgreSQL impide todo acceso al nodo de coordinación hasta que se especifica qué equipos tienen permiso. Asimismo, otorgan acceso al servidor según la dirección IP de origen de cada solicitud. Para configurar su firewall, cree reglas de firewall que especifiquen intervalos de direcciones IP aceptables. Puede crear reglas de firewall a nivel de servidor.
Reglas de firewall: estas reglas permiten a los clientes acceder al nodo de coordinación, es decir, a todas las bases de datos que se encuentren en el mismo servidor lógico. Las reglas de firewall de nivel de servidor pueden configurarse mediante Azure Portal. Para crear reglas de firewall en el nivel del servidor, debe ser propietario o colaborador de la suscripción.
El firewall bloquea de forma predeterminada el acceso de todas las bases de datos al nodo de coordinación. Para comenzar a usar el servidor desde otro equipo, debe especificar una o varias reglas de firewall a nivel de servidor para habilitar el acceso a su servidor. Use las reglas de firewall para especificar los intervalos de direcciones IP de Internet que se permitirán. La reglas de firewall no afectan al acceso al propio sitio web de Azure Portal. Los intentos de conexión desde Internet y Azure deben atravesar primero el firewall antes de poder llegar a la base de datos PostgreSQL, tal y como se muestra en el siguiente diagrama:
Conexión desde Internet y desde Azure
Un firewall de clúster controla quién puede conectarse al nodo de coordinación del grupo. El firewall determina el acceso mediante la consulta de una lista configurable de reglas. Cada regla es una dirección IP o un intervalo de direcciones que se permiten.
Cuando el firewall bloquea las conexiones, puede provocar errores de la aplicación. Cuando se usa el controlador JDBC de PostgreSQL, por ejemplo, se genera un error similar al siguiente:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg\_hba.conf entry for host "123.45.67.890", user "citus", database "citus", SSL
Consulte Creación y administración de reglas de firewall para saber cómo se definen las reglas.
Solución de problemas del firewall del servidor de la base de datos
Si al acceder a Microsoft Azure Cosmos DB for PostgreSQL, el servicio no se comporta según lo esperado, considere estos puntos:
Los cambios realizados en la lista de permitidos no han surtido efecto todavía: puede haber un retraso de hasta cinco minutos hasta que los cambios en la configuración del firewall del servidor de Azure Cosmos DB for PostgreSQL surtan efecto.
El usuario no está autorizado o se ha usado una contraseña incorrecta: si un usuario no tiene permisos en el servidor o la contraseña usada es incorrecta, se denegará la conexión al servidor. La creación de una configuración de firewall solo ofrece a los clientes una oportunidad de intentar conectarse al servidor. Cada cliente todavía tiene que proporcionar las credenciales de seguridad necesarias.
Por ejemplo, mediante un cliente JDBC, puede aparecer el siguiente error.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"
Dirección IP dinámica: si tiene una conexión a Internet con un direccionamiento IP dinámico y tiene problemas al acceder al firewall, podría intentar una de las siguientes soluciones:
Pida a su proveedor de acceso a Internet (ISP) el intervalo de direcciones IP asignado a los equipos cliente que acceden al nodo de coordinación y, luego, agréguelo como regla de firewall.
Obtenga el direccionamiento IP estático en su lugar para los equipos cliente y luego agregue la dirección IP estática como regla de firewall.
Pasos siguientes
Para leer artículos sobre cómo crear reglas de firewall de nivel de servidor y de base de datos, consulte: