Implementación de la infraestructura de Linux y PostgreSQL
Esta unidad le guía por la creación de los recursos de proceso que hospedan la aplicación en Azure.
Hay varios métodos para implementar la infraestructura en Azure, incluido Azure Portal, la CLI de Azure y las plantillas de infraestructura como código (incluido Bicep y Terraform). En esta unidad, implementará una plantilla de Bicep preconfigurada que encapsula los recursos de proceso necesarios para la aplicación. Los recursos clave son:
- Una máquina virtual que ejecuta Linux (Ubuntu 24.04 LTS)
- Azure Database for Postgres que ejecuta Postgres 16 o posterior
- Una Identidad administrada para habilitar el acceso seguro desde la máquina virtual a la base de datos
- RBAC, incluidos los roles para acceder a la base de datos como administrador y roles más restrictivos para la propia aplicación
- Una red virtual para la máquina virtual y la base de datos
Dado que este ejemplo es una carga de trabajo de desarrollo y pruebas, y queremos mantener las cosas rentables y eficaces, elegimos la siguiente configuración para usted:
La máquina virtual es un D2s_v4 estándar (dos vCPU, 8 GB de memoria). Tiene SSD Premium de Azure con 3 200 operaciones de E/S máximas por segundo (IOPS) y 128 GB de almacenamiento. Tiene un disco SSD Premium P10 128 GB conectado con 500 IOPS para el disco del sistema operativo. Puede actualizar el disco del sistema operativo para que coincida con las IOPS de la máquina virtual según sea necesario.
La base de datos es un D2ds_v4 de uso general (dos núcleos virtuales, 8 GB de RAM) con 3200 IOPS máximas. Tiene un disco SSD Premium P10 de 128 GB con 500 IOPS. Puede actualizar este disco para que coincida con las IOPS de proceso según lo requiera.
Al finalizar el módulo, se eliminan estos recursos para ahorrar costos. Sin embargo, también puede desactivar la máquina virtual y la base de datos cuando no están en uso para ahorrar costos de proceso y pagar solo el almacenamiento que use. También puede escalar verticalmente esta carga de trabajo según sea necesario.
La plantilla de Bicep de este módulo utiliza Módulos comprobados de Azure (AVM). AVM es una iniciativa para estandarizar los módulos de infraestructura como código. Microsoft mantiene estos módulos y encapsula muchos procedimientos recomendados para implementar recursos en Azure.
Asegúrese de que tiene una suscripción de Azure y la CLI de Azure
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Este módulo requiere la versión 2.0.30 o posterior de la CLI de Azure. Busque la versión mediante el comando siguiente:
az --version
Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.
Inicio de sesión en Azure mediante la CLI de Azure
Para ejecutar comandos en Azure mediante la CLI de Azure, primero debe iniciar sesión. Inicie sesión con el comando az login:
az login
Crear un grupo de recursos
Un grupo de recursos es un contenedor para los recursos relacionados. Todos los recursos se deben colocar en un grupo de recursos. Use el comando az group create para crear un grupo de recursos:
az group create \
--name 240900-linux-postgres \
--location westus2
Implementación de la plantilla de Bicep mediante la CLI de Azure
Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. En un archivo Bicep, puede definir la infraestructura que quiere implementar en Azure. Después, use ese archivo durante el ciclo de vida de desarrollo para implementar repetidamente la infraestructura. Los recursos se implementan de forma coherente.
El archivo de Bicep que usa para implementar los recursos de proceso de esta unidad se encuentra en el repositorio de GitHub deploy/vm-postgres.bicep. Contiene una máquina virtual, una red virtual, una identidad administrada y un grupo de seguridad de red (NSG) para la máquina virtual. Puede leer más sobre Bicep en ¿Qué es Bicep?.
Clone el repositorio de ejemplo en la máquina local:
git clone https://github.com/Azure-Samples/linux-postgres-migration.gitVaya al directorio
linux-postgres-migration:cd linux-postgres-migrationImplemente la plantilla de Bicep:
az deployment group create \ --resource-group 240900-linux-postgres \ --template-file deploy/vm-postgres.bicep
Al finalizar la implementación, la salida JSON confirma que los recursos se implementan.
En las secciones siguientes, configurará y explorará los roles de RBAC y las reglas de seguridad de red en la infraestructura implementada mediante Azure Portal. Al usar Azure Portal, puede codificar los roles y las reglas en la plantilla de Bicep. Azure Portal proporciona una interfaz visual que facilita la comprensión de las relaciones entre los recursos y los permisos que se les asignan.
Abra el grupo de recursos en Azure Portal
Abra Azure Portal.
En el menú servicio, seleccione Grupos de recursos.
En el panel Grupos de recursos, seleccione el grupo de recursos
240900-linux-postgres.
En la parte superior derecha del panel, el área Implementaciones muestra el estado de la implementación de la plantilla de Bicep. Cuando la implementación se realiza correctamente, se muestra Correcto.
Visualización del grupo de seguridad de red de la máquina virtual
Seleccione la máquina virtual,
vm-1.En la sección Redes, seleccione Configuración de red.
La configuración de red muestra que el grupo de seguridad de red (240900-linux-postgres-nsg) está conectado a la misma subred de la red virtual (240900-linux-postgres-vnet) que la máquina virtual.
El NSG también está visible dentro del grupo de recursos. Contiene un conjunto de reglas de seguridad entrantes y salientes que controlan el tráfico hacia y desde la máquina virtual.
Volver al grupo de recursos
En la parte superior de la página, seleccione el vínculo de ruta de navegación para volver al grupo de recursos (Home > Resource groups > 240900-linux-postgres).
Tenga en cuenta que la identidad administrada asignada por el usuario 240900-linux-postgres-identity aparece en el grupo de recursos.
Puede obtener más información sobre las identidades administradas asignadas por el sistema y asignadas por el usuario en ¿Qué son las identidades administradas para los recursos de Azure?.
Añadir una regla de seguridad de entrada al grupo de seguridad de red
Agregue una regla de seguridad de entrada al grupo de seguridad de red para permitir el tráfico SSH desde la dirección IP actual a la máquina virtual.
En un escenario de producción, a menudo usaría acceso Just-In-Time, Azure Bastion, o una VPN (como Azure o una VPN de malla) para restringir el acceso a la máquina virtual.
Seleccione
240900-linux-postgres-nsg.Seleccione Configuración>Reglas de seguridad de entrada.
Seleccione Agregar.
En Origen, seleccione Mi dirección IP.
En Service, seleccione SSH.
Seleccione Agregar.
Visualización del administrador del servidor flexible de Azure Database for PostgreSQL
Busque y seleccione el servidor flexible de Azure Database for PostgreSQL. Se denomina
postgres-xxxxx, dondexxxxxes una cadena única definida por la plantilla de Bicep. La cadena sigue siendo coherente entre las implementaciones de la suscripción y el grupo de recursos.Seleccione Seguridad>Autenticación.
En este escenario, usa Autenticación de Microsoft Entra solo. La identidad administrada asignada por el usuario 240900-linux-postgres-identity aparece en Administradores de Microsoft Entra.
La identidad administrada 240900-linux-postgres-identity es actualmente el único administrador del servidor. Opcionalmente, puede agregar su propia cuenta de usuario como administrador. Pero para este escenario, se usa la identidad administrada que ya está en vigor.
En una sección próxima, usará la identidad de la máquina virtual para administrar el servidor a través de la CLI de Azure. También se usa esa identidad para proporcionar acceso al servidor de la aplicación.
En un escenario de producción, es probable que use una combinación de identidades administradas, Microsoft Entra ID y RBAC específico para permitir que la carga de trabajo de la aplicación acceda a los datos y administre recursos en Azure de forma segura. Seguiría el principio de privilegios mínimos.
Obtenga más información acerca de estos escenarios en Autenticación de Microsoft Entra con Azure Database for PostgreSQL: servidor flexible y Use Microsoft Entra ID para la autenticación con Azure Database for PostgreSQL: servidor flexible.
Revise las reglas de firewall del servidor flexible de Azure Database for PostgreSQL
Seleccione Configuración>Redes.
Si administraba el servidor desde la máquina local, en lugar de la máquina virtual, tendría que agregar la dirección IP a las reglas de firewall.
Para crear una regla de firewall para la dirección IP actual, seleccione Agregar dirección IP de cliente actual (xxx.xxx.xxx.xxx)>Guardar. Esta regla le permitiría acceder al servidor de desarrollo y pruebas mediante herramientas en el equipo local. Pero dado que usa una máquina virtual para acceder a la base de datos, no creará una regla de firewall en este momento.
En producción, es probable que aísle este servidor de la red pública de Internet desactivando completamente el Permitir el acceso público a este recurso a través de Internet mediante una opción de dirección IP pública.
A diferencia de la máquina virtual, no ha asociado Azure Database for PostgreSQL a ninguna red virtual. Puede conservar la opción de acceder a Azure Database for PostgreSQL a través de la red pública de Internet, lo que resulta útil para escenarios de desarrollo y pruebas.
Para proporcionar seguridad y flexibilidad, habilite el acceso desde la máquina virtual a través de su red virtual mediante un punto de conexión privado. El punto de conexión privado permite que la máquina virtual acceda a la base de datos sin exponerla a la red pública de Internet. Obtenga más información sobre los puntos de conexión privados en Azure Database for PostgreSQL: redes de servidor flexible con Private Link.
Aquí, se ha creado el punto de conexión privado para usted mediante Bicep.
Revise las asignaciones de roles de la identidad administrada asignada por el sistema de la máquina virtual
Vuelva al grupo de recursos
240900-linux-postgresy seleccionevm-1.En el menú del servicio, seleccione Seguridad>Identidad.
Aquí puede confirmar que la identidad administrada asignada por el sistema está asociada a la máquina virtual.
En Sistema asignado, seleccione Asignaciones de roles de Azure.
Aquí puede confirmar que el rol Lector está asignado a la identidad administrada asignada por el sistema. El rol se limita al grupo de recursos
240900-linux-postgres.
Los permisos de esta identidad permiten usar la CLI de Azure dentro de la máquina virtual para enumerar los recursos del grupo de recursos. Con esta capacidad, no tiene que codificar los detalles de recursos específicos de forma rígida en los scripts.
En una fase posterior, asignará un rol adicional a la identidad administrada de la máquina virtual para que la máquina virtual pueda acceder directamente a una cuenta de Azure Blob Storage.
A continuación, explorará y configurará la infraestructura implementada.
Recursos
- Módulos comprobados de Azure
- Instalación de la CLI de Azure
- Creación de un grupo de recursos mediante la CLI de Azure
- Azure RBAC
- Identidad administrada de Azure
- ¿Qué es Bicep?
- ¿Qué son las identidades administradas de recursos de Azure?
- Habilitar el acceso Just-In-Time en máquinas virtuales
- ¿Qué es Azure Bastion?
- Autenticación de Microsoft Entra con el Servidor flexible de Azure Database for PostgreSQL
- Usar Microsoft Entra ID para la autenticación con Azure Database for PostgreSQL: Servidor flexible
- Azure Database for PostgreSQL: redes de servidor flexible con Private Link