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.
Muchas soluciones multiinquilino en Azure usan el sistema de administración de bases de datos relacionales de código abierto Azure Database for PostgreSQL. En este artículo se describen las características de Azure Database for PostgreSQL que son útiles al trabajar con sistemas multiinquilino. En el artículo también se incluyen vínculos a instrucciones y ejemplos sobre cómo usar Azure Database for PostgreSQL en una solución multiinquilino.
Opciones de implementación
Las siguientes opciones están disponibles para Azure Database for PostgreSQL y son adecuadas para su uso con aplicaciones multiinquilino:
Azure Database for PostgreSQL es una buena opción para la mayoría de las implementaciones multiinquilino que no requieren la alta escalabilidad que proporciona Azure Cosmos DB para PostgreSQL.
Azure Database for PostgreSQL clústeres elásticos proporciona escalado horizontal dentro de un servicio administrado. Es adecuado para aplicaciones multiinquilino que necesitan escalar de unos pocos inquilinos a un gran número de inquilinos.
Azure Cosmos DB para PostgreSQL es un servicio de base de datos administrado por Azure diseñado para soluciones que requieren un alto nivel de escala, como aplicaciones multiinquilino. Este servicio forma parte de la familia de productos de Azure Cosmos DB.
Importante
Azure Cosmos DB para PostgreSQL se encuentra en una ruta de retirada y ya no se recomienda para los nuevos proyectos.
Características de Azure Database for PostgreSQL que soportan multitenencia
Cuando se usa Azure Database for PostgreSQL para compilar una aplicación multiinquilino, las siguientes características pueden mejorar la solución.
Nota:
Algunas características solo están disponibles en opciones de implementación específicas. En las instrucciones siguientes se describen las características disponibles.
Seguridad de nivel de fila
La seguridad de nivel de fila es útil para aplicar el aislamiento a nivel de cliente cuando se usan tablas compartidas. En PostgreSQL, implementará la seguridad de nivel de fila aplicando directivas de seguridad de fila a tablas para restringir el acceso a las filas por inquilino.
La implementación de la seguridad de nivel de fila en una tabla puede afectar al rendimiento. Es posible que tenga que crear otros índices en tablas que tengan habilitada la seguridad de nivel de fila para asegurarse de que el rendimiento no se ve afectado. Al usar la seguridad de nivel de fila, es importante usar técnicas de pruebas de rendimiento para validar que la carga de trabajo cumple los requisitos de rendimiento de línea base.
Para más información sobre la seguridad de nivel de fila, consulte Administración de acceso para Azure Database for PostgreSQL.
Contexto de arrendatario para la seguridad de nivel de fila
Las directivas de seguridad de nivel de fila requieren acceso al identificador de inquilino actual. Azure Database for PostgreSQL proporciona dos extensiones que ayudan a administrar el contexto del inquilino:
- session_variable: proporciona variables con ámbito de sesión que puede usar para almacenar y recuperar el identificador de inquilino dentro de una sesión. Usa estas variables en las directivas de seguridad a nivel de fila.
- login_hook: ejecuta una función en el momento del inicio de sesión. Use esta extensión para establecer automáticamente el contexto de inquilino cuando se establece una conexión.
Para obtener más información, consulte Extensiones y versiones de extensión para Azure Database for PostgreSQL.
Escalado horizontal con particionamiento
El patrón de particionamiento permite escalar la carga de trabajo entre varias bases de datos o servidores de bases de datos.
Las soluciones que necesitan un alto nivel de escala pueden usar Azure Cosmos DB para PostgreSQL. Este modo de implementación permite el particionamiento horizontal de inquilinos en varios servidores o nodos. Use tablas distribuidas en bases de datos multiinquilino para asegurarse de que todos los datos de un inquilino se almacenan en el mismo nodo. Este enfoque mejora el rendimiento de las consultas.
Para obtener más información, consulte los artículos siguientes:
- Diseño de una base de datos multiinquilino mediante Azure Cosmos DB para PostgreSQL
- Tablas distribuidas
- Elegir columnas de distribución
- Uso de Citus para aplicaciones multiinquilino
Clústeres elásticos
Los clústeres elásticos son una característica de Azure Database for PostgreSQL. Proporcionan funcionalidades de escalado horizontal dentro de un único servicio administrado. Esta opción de implementación utiliza la funcionalidad de tabla distribuida para cargas de trabajo multiinquilino que requieren capacidades de escalado.
En las soluciones multiinquilino, los clústeres elásticos habilitan el particionamiento de datos de inquilinos en varios nodos. Los clústeres elásticos admiten dos modelos de particionamiento:
- Particionamiento basado en filas: puede distribuir tablas por identificador de inquilino para asegurarse de que los datos del inquilino se colocan en nodos específicos. Este enfoque puede mejorar el rendimiento de las consultas específicas del inquilino, pero requiere que las consultas incluyan la columna de distribución.
- Particionamiento basado en esquemas: puede aislar a los arrendatarios mediante el uso de un esquema independiente por arrendatario. Este enfoque es ideal para los ISV que implementan aplicaciones que no pueden someterse a modificaciones de consulta para admitir el particionamiento basado en filas. El particionamiento basado en esquemas es adecuado para cargas de trabajo que tienen entre 1 y 10 000 inquilinos.
Para obtener más información, consulte los artículos siguientes:
- Clústeres Elastic en Azure Database for PostgreSQL
- Modelos de particionamiento para clústeres elásticos
Agrupación de conexiones
Postgres usa un modelo basado en procesos para las conexiones. Este modelo hace que sea ineficaz mantener un gran número de conexiones inactivas. Algunas arquitecturas multiinquilino requieren muchas conexiones activas, lo que afecta negativamente al rendimiento del servidor Postgres.
La agrupación de conexiones a través de PgBouncer se instala de forma predeterminada en Azure Database for PostgreSQL.
Para obtener más información, consulte los artículos siguientes:
- PgBouncer en Azure Database for PostgreSQL
- Agrupación de conexiones en Azure Cosmos DB for PostgreSQL
- Pasos para instalar y configurar el proxy de agrupación de conexiones de PgBouncer con Azure Database for PostgreSQL
Autenticación de Microsoft Entra
Azure Database for PostgreSQL admite la autenticación de conexión mediante Microsoft Entra ID. Esta característica permite que las cargas de trabajo de aplicativos en un entorno multiinquilino se autentiquen en la base de datos mediante una entidad de servicio específica del inquilino o una identidad administrada. El acceso a la base de datos se puede limitar a un inquilino individual. Al combinar la autenticación de Microsoft Entra ID con directivas de seguridad de filas específicas del inquilino, puede reducir el riesgo de que una aplicación acceda a los datos de otro inquilino desde una base de datos multiinquilino.
Para obtener más información, consulte los artículos siguientes:
- Autenticación de Microsoft Entra en Azure Database para PostgreSQL
- Conectar mediante identidad administrada a Azure Database para PostgreSQL
Informática confidencial de Azure
Azure Database for PostgreSQL admite Azure computación confidencial a través de entornos de ejecución de confianza (TEE), que proporcionan protección basada en hardware para los datos en uso. Esta característica protege los datos de inquilino del acceso no autorizado por el sistema operativo, el hipervisor u otras aplicaciones.
En el caso de las soluciones multiinquilino que controlan datos confidenciales, la computación confidencial proporciona protección de datos de nivel de hardware durante el procesamiento. Use la computación confidencial cuando los inquilinos tengan estrictos requisitos de protección de datos o necesidades de cumplimiento normativo o cuando necesite asegurarse de que el proveedor de aplicaciones no pueda acceder a los datos del inquilino.
Para obtener más información, consulte Azure computación confidencial para Azure Database for PostgreSQL.
Encriptación
Los datos almacenados en Azure Database for PostgreSQL se cifran en reposo de forma predeterminada mediante claves administradas por Microsoft, pero también puede usar claves administradas por el cliente (CMK) para permitir que los inquilinos especifiquen sus propias claves de cifrado.
Al usar CMK, puede proporcionar sus propias claves de cifrado almacenadas en Azure Key Vault. En entornos multiinquilino, este enfoque permite usar claves de cifrado diferentes para distintos inquilinos, incluso cuando sus datos se almacenan en el mismo servidor de base de datos. Esta funcionalidad también proporciona a los inquilinos control sobre sus propias claves de cifrado. Si un inquilino decide desactivar su cuenta, eliminar la clave asociada garantiza que sus datos ya no sean accesibles.
Azure Database for PostgreSQL admite actualizaciones automáticas de versiones de clave para CMKs. Esta característica se actualiza automáticamente a las nuevas versiones de clave después de la rotación en Key Vault y no requiere la administración manual de versiones de claves. En entornos multiinquilino en los que el cumplimiento normativo requiere rotación de claves normal, esta automatización reduce las tareas operativas manuales y mantiene la protección de datos sin interrupción del servicio.
Colaboradores
Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.
Autor principal:
- Daniel Scott-Raynsford | Arquitecto de soluciones asociadas, datos e inteligencia artificial
Otros colaboradores:
- John Downs | Ingeniero principal de software, Patrones y prácticas de Azure
- Arsen Vladimirskiy | Ingeniero de clientes principal, FastTrack for Azure
- Paul Burpo | Ingeniero de clientes principal, ISV de FastTrack for Azure
- Assaf Fraenkel | Ingeniero o arquitecto de datos sénior, Azure FastTrack para ISV y empresas emergentes
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.