Despliegue Azure Bastion mediante una Logic App para su automatización

Cuando queremos conectar a nuestras máquinas virtuales en un entorno Azure podemos hacerlo de muchas maneras, pero quizá una de las más seguras es con el uso de Azure Bastion. Bastion es un servicio PaaS que nos permite conectar a nuestras maquinas virtuales mediante SSH y RDP desde nuestro portal de Azure. Bastion se aprovisiona en una red virtual y nos dará acceso a cualquier maquina virtual que forme parte de ella.

En este tutorial voy a mostrar como desplegar un Bastion usando el portal con una Logic App con un trigger de HTTP para automatizar su creación y eliminación, y con ello ahorrar costes.

Preparación estructura

Red virtual

Necesitaremos una red virtual con una subnet llamada AzureBastionSubnet a la que Bastion se conectara en su despliegue

Ip publica para Bastion

El siguiente paso será crear un recurso nuevo que sea una ip publica de tipo Standard ya que Basic no es soportada para Bastion.

Configuración de automatización

Como ultimo recurso, crearemos una Logic App que usaremos para automatizar.

Permisos para Logic app

Dentro de la Logic app recién creada, iremos al apartado Identity.

Después activaremos la casilla de Status y guardamos.

Pincharemos en Azure Role Assignments y Add role Assignments. Desde aquí le daremos los permisos necesarios que necesita para crear y editar recursos.

Elegimos nuestra suscripción y el rol de Contributor.

Diseñando el esquema.

Nos iremos a Logic App Designer. Elegiremos una plantilla en blanco.

Buscaremos por el connector “Request” y elegimos “When a HTTP request is received».

En el cuadro donde pone “Request Body JSON Schema”, pegaremos lo siguiente:

Esto servirá para para definir el input que necesita recibir tanto para crear como para eliminar el recurso.

Si en la petición pone Action:Deploy, esta actuara dependiendo de la acción que hayamos configurado.

Le daremos a “Next step” y elegiremos Control-Switch-Action. Esto nos permitirá que podamos elegir que queremos hacer cuando hagamos la petición.

Le damos un nombre, por ejemplo deploy, y le agregamos una acción. Buscamos Azure Resource Manager y Create or Update a template deployment.

Nos pedirá que los loguemos.

Después rellenamos con los datos en nuestro caso.

Añadimos dos nuevos parámetros que serán Parameters y Template Content.

En el parámetro Parameters, rellenaremos lo siguiente con nuestros datos.

En el parámetro Template Content, pegaremos lo siguiente:

Veremos algo así:

Pinchamos en + para agregar una nueva fase.

En el nuevo paso, lo nombramos como Delete y buscamos http. Pinchamos en HTTP.

Elegimos en Method, DELETE. La url será la direccion de donde estará el Bastion Hosst, una vez que se haya creado. Usaremos la siguiente direccion con nuestros datos.

https://management.azure.com/subscriptions/$Sub_ID/resourceGroups/$nombreRG/providers/Microsoft.Network/bastionHosts/$nombreBastion}/?api-version=2020-06-01

Añadimos un nuevo parámetro llamado  «Authentication». Lo configuramos de esta manera.

Comprobación.

Guardamos y usaremos el siguiente script de Powershell para triggear la Logic App.

$ResquestURL será la url de nuestro trigger http, es decir:

Donde pone Deploy en $body, podríamos cambiarlo por Delete para elegir la segunda fase y eliminar el Bastion.

Si al usar el script no se despliega, podemos ir a Run History de la Logic App o Activity Log del grupo de recursos donde lo desplegamos para ver posibles errores.

Si tienes alguna duda puedes preguntarnos a través de un comentario o de nuestro formulario.

Alvaro Cañas
Cloud Consultant at myCloudDoor

Leave a Reply

Your email address will not be published.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Share This

Copy Link to Clipboard

Copy