En esta página, se describe cómo configurar un host de bastión en tu implementación conectada de Google Distributed Cloud para permitir que los ingenieros de Google accedan a los nodos de tu zona conectada de Distributed Cloud y solucionen problemas en ellos a través de Secure Shell (SSH).
Google proporciona el código fuente completo con el que puedes compilar una máquina virtual de host de bastión personalizada según los requisitos de tu empresa.
Requisitos previos
En esta sección, se enumeran los requisitos previos para implementar la solución de host de bastión conectado de Distributed Cloud.
Habilitar la aprobación de acceso
La función de host de bastión usa la función de Aprobación de acceso de Transparencia de acceso para permitir que Google solicite acceso a tus datos. Debes habilitar la Transparencia de acceso y la Aprobación de acceso en tu proyecto Google Cloud antes de implementar máquinas virtuales de host bastión. Si deseas obtener más información, consulta las siguientes páginas:
Especificaciones de la máquina virtual
La solución de host de bastión conectado de Distributed Cloud requiere el equivalente a una implementación de OpenStack de tamaño small con las siguientes especificaciones:
- CPU: 1 CPU virtual
- RAM: 2 GB
- Disco: 20 GB
Google recomienda implementar N+1 máquinas virtuales de host de bastión por Google Cloud región para aumentar la confiabilidad.
Requisitos de Herramientas de redes
La solución de host de bastión conectado de Distributed Cloud requiere que configures las siguientes sesiones de intercambio de tráfico de red para cada máquina virtual del host de bastión:
- Sentido norte. Conecta la máquina virtual del host de bastión a Internet. Requiere acceso a Internet y debe permitir conexiones en el puerto 22 desde direcciones IP específicas que Google proporciona como parte de la imagen de disco de la solución de host de bastión y el paquete de código fuente.
- Hacia el sur. Conecta la máquina virtual del host de bastión a través del puerto 22 a las zonas conectadas de Distributed Cloud correspondientes en una sola región Google Cloud .
- Administración: Conecta la máquina virtual del host de bastión a tu red local para fines de operación y mantenimiento. Configura esta sesión de peering según la política de seguridad de tu organización.
Prácticas recomendadas en materia de seguridad
Google recomienda que sigas las prácticas recomendadas de seguridad que se describen en esta sección cuando configures una solución de host de bastión en tu implementación conectada de Distributed Cloud, además de las políticas de seguridad de tu organización:
- Sigue la regla de privilegio mínimo y mantén una separación clara de las obligaciones de los usuarios.
- Para todas las cuentas de usuario que no sean la del administrador, usa solo la autenticación basada en certificados; inhabilita la autenticación basada en contraseñas y el acceso raíz a las máquinas virtuales del host de bastión.
- Rechaza el acceso desde todas las IPs de la sesión de interconexión de salida que no formen parte de la lista de direcciones IP de asistencia proporcionada por Google.
- Cierra todos los puertos de la sesión de peering de salida, excepto el puerto 22 (SSH), y permítelo solo para las direcciones IP de la lista de direcciones IP de asistencia proporcionada por Google.
- Mantén actualizadas todas las máquinas virtuales del host de bastión. Google proporciona un nuevo paquete de código fuente con cada parche de seguridad y actualización de versión.
- Configura una solución de alertas y auditorías que satisfaga las políticas de seguridad de tu organización.
Habilita la compatibilidad con el host de bastión
Para habilitar la compatibilidad con el host de bastión en tu implementación conectada de Distributed Cloud, envía una solicitud.
Debes habilitar y configurar individualmente la compatibilidad con el host de bastión para cada una de tus zonas conectadas de Distributed Cloud. Esto te permite implementar diferentes configuraciones de acceso y de red que se adapten mejor a las necesidades comerciales de tu organización para cada zona conectada de Distributed Cloud.
Obtén el software del host de bastión
El paquete de software del host de bastión se te envía después de que el Atención al cliente de Google activa la función del host de bastión para tu implementación conectada de Distributed Cloud. El paquete contiene lo siguiente:
- Código fuente: Puedes personalizar y compilar tus propias imágenes de máquina virtual de host de bastión según tus requisitos comerciales.
- Documentación: Documentación adicional para tareas como la configuración de certificados
Compila una imagen de máquina virtual host de bastión
En esta sección, se proporciona una descripción general de los pasos necesarios para compilar una imagen de máquina virtual de host de bastión a partir del código fuente proporcionado por Google. Se proporcionan instrucciones completas en el archivo README que se incluye con el código fuente.
Requisitos previos
Necesitas los siguientes elementos para compilar una imagen de máquina virtual de host de bastión:
- Una máquina que ejecuta Debian 11
- Es la imagen más reciente del servidor en la nube de Debian.
- El software
qemu-img,qemu-system-x86_x64y GNUmtoolsinstalado en la máquina - Un archivo llamado
host-user-key.pubque contiene una clave SSH pública para acceder a la instancia del host de bastión y, luego, iniciar una sesión dehost-userEsta clave se puede usar para la autenticación directa o como clave de firma de la autoridad certificadora. La instancia del host de bastión debe confiar en esta CA. - Un archivo llamado
admin-user-key.pubque contiene una clave SSH pública para realizar tareas administrativas en la instancia de host de bastión de destino. Esta clave se puede usar para la autenticación directa o como clave de firma de la autoridad certificadora. La instancia del host de bastión debe confiar en esta CA. - Un archivo llamado
guest-user-key.pubque contiene una clave de firma de autoridad certificadora de SSH pública proporcionada por Google que permite que el Atención al cliente de Google se autentique comoguest-usercuando se conecta a la instancia del host de bastión.
Compila la imagen de la máquina virtual
Sigue las instrucciones proporcionadas en el archivo README que se incluye con el código fuente para compilar la imagen de la máquina virtual del host de bastión a partir del código fuente proporcionado por Google. En los ejemplos de esta guía, se hace referencia al archivo de imagen resultante como bastion-host.img.
Compila el paquete de HIBA
Compila el paquete de instalación de Debian para la capa de software de autenticación de la autorización basada en la identidad del host para SSH (HIBA) de la siguiente manera:
Instala las dependencias requeridas con el siguiente comando:
sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
Compila el paquete de instalación con el siguiente comando:
./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir
El paquete de instalación se deposita en el directorio /tmp/hiba-build-workdir y se denomina hiba_x.y-z_amd64.deb, donde x, y y z denotan el número de versión de HIBA.
Genera los parámetros de configuración de cloud-init
Usa la secuencia de comandos generate-cloud-init.py para generar las configuraciones cloud-init necesarias.
También puedes generar estas configuraciones con tus propias herramientas. Estas configuraciones hacen lo siguiente:
- Crea las cuentas de usuario necesarias en la imagen de máquina virtual del host de bastión y configura esas cuentas con las claves SSH que se describieron anteriormente.
- Agrega un script que limite los privilegios de la cuenta
guest-userpara que solo pueda unirse a una sesión de multiplexor de terminal establecida. - Agrega secuencias de comandos que creen y administren una sesión de multiplexor de terminal.
- Prepara los archivos de configuración de HIBA.
La secuencia de comandos generate-cloud-init.py requiere el paquete de HIBA que compilaste anteriormente y los tres archivos que contienen las claves SSH requeridas. Ejecuta la secuencia de comandos de la siguiente manera:
./generate-cloud-init.py \ --hiba-package="${WORK_DIR}/hiba_1.0-1_amd64.deb" \ --host-user-key="HOST_USER_KEY_FILE" \ --manager-user-key="ADMIN_USER_KEY_FILE" \ --guest-user-ca="GUEST_USER_KEY_FILE" \ "${WORK_DIR}/cloud-init/"
Reemplaza lo siguiente:
HOST_USER_KEY_FILE: Es la ruta de acceso y el nombre completos del archivohost-user-key.pub.ADMIN_USER_KEY_FILE: Es la ruta de acceso y el nombre completos del archivoadmin-user-key.pub.GUEST_USER_KEY_FILE: Es la ruta de acceso y el nombre completos del archivoguest-user-key.pub.
La secuencia de comandos deposita el archivo cloud-init.img en el directorio cloud-init dentro de tu directorio de trabajo local.
Aplica las configuraciones de cloud-init a la imagen de la máquina virtual del host de bastión
Usa la herramienta qemu-system-x86_64 para aplicar las configuraciones de cloud-init que generaste antes al archivo de imagen de la máquina virtual del host de bastión de la siguiente manera:
qemu-system-x86_64 \ -nographic \ -enable-kvm \ -smp 1 \ -m 1g \ -drive format=qcow2,index=0,file=${WORK_DIR}/bastion-host.img \ -drive format=raw,index=1,file=${WORK_DIR}/cloud-init/cloud-init.img \ -nic user,hostfwd=tcp::10022-:22
Si este comando devuelve un error, es posible que debas cambiar el tamaño del disco en la imagen de la máquina virtual del host de bastión.
Puedes verificar que los parámetros de configuración se hayan aplicado correctamente una vez que se inicie la máquina virtual. Verás un resultado similar al siguiente en los registros de auditd:
[ 52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.
También puedes examinar manualmente sus cuentas de usuario y la configuración de sshd para verificarlas.
Importa la imagen de máquina virtual del host de bastión
Antes de importar la imagen de máquina virtual del host de bastión completamente configurado a tu infraestructura de implementación, debes crear una instantánea con la herramienta qemu-img de la siguiente manera:
qemu-img snapshot -c installed bastion-image.img
Sigue los procesos establecidos por tu organización para importar la imagen de máquina virtual del host de bastión a tu infraestructura de implementación.
Configura la máquina virtual del host de bastión
Sigue los pasos de esta sección para configurar una máquina virtual de host de bastión.
Configura las cuentas de usuario necesarias
La función de host de bastión de Distributed Cloud Connected requiere una o más cuentas de usuario en cada una de las siguientes categorías:
- Administración Esta es la cuenta de administrador de la máquina virtual del host de bastión. Tiene acceso de administrador.
- Usuario host. Esta es la cuenta del ingeniero de operaciones. Puede iniciar y administrar sesiones de multiplexor de terminal para el Atención al cliente de Google, pero no puede ingresar ningún comando en esas sesiones.
- Usuario invitado. Esta es la cuenta del ingeniero de Atención al cliente de Google. Puede establecer una conexión SSH dentro de una sesión de multiplexor de terminal compartida con tu ingeniero de operaciones en una máquina virtual de host de bastión. No tiene otros privilegios.
- Usuario conjunto. Esta cuenta establece la sesión del multiplexor de terminal en la máquina virtual del host de bastión. Tu ingeniero de operaciones y un ingeniero de asistencia de Google se conectarán de forma conjunta a esta sesión.
Configura certificados
Debes configurar certificados que permitan que las cuentas descritas en la sección anterior accedan a la máquina virtual del host de bastión. El paquete de software del host de bastión incluye una secuencia de comandos llamada generate-cloud-init.py que genera la configuración cloud-init requerida con las cuentas, las claves SSH y los certificados necesarios para cada cuenta.
Para obtener instrucciones, consulta Cómo generar las configuraciones de cloud-init.
Configura el registro
Los registros del host de bastión están disponibles en tiempo real y a pedido desde el daemon audit.
Puedes administrar la configuración de registro a través del archivo auditd.conf. Eres responsable de rotar y exportar los registros de las máquinas virtuales del host de bastión según tus requisitos comerciales. También debes mantener suficiente espacio en el disco para almacenarlos en la máquina virtual.
Prueba la configuración
Completa los pasos de esta sección para probar la implementación de la máquina virtual del host de bastión, incluida la conectividad desde ambos extremos y el control de acceso adecuado para las cuentas de usuario requeridas. También te recomendamos que trabajes con el Atención al cliente de Google para realizar pruebas en vivo.
Prueba tu implementación de forma local
Verifica que puedas establecer una sesión SSH como
host-usercon la máquina virtual del host de bastión. Si esto falla, verifica tus claves y certificados SSH.Verifica que puedes iniciar una sesión de multiplexor de terminales con el siguiente comando:
./opt/create-shared-tmux-session
Verifica que se pueda acceder a tu implementación conectada de Distributed Cloud desde la máquina virtual del host de bastión con el siguiente comando:
ssh -vv bastion-user@TARGET_ADDRESS
Reemplaza
TARGET_ADDRESSpor la dirección IP de la máquina de Distributed Cloud o el conmutador ToR de destino.La autenticación por SSH rechazará la solicitud, pero las solicitudes de autenticación y transporte por SSH aún deben llegar a tu implementación conectada de Distributed Cloud. Si esto falla, verifica la configuración del firewall.
Verifica que tanto la Transparencia de acceso como la Aprobación de acceso estén habilitadas en tu organización Google Cloud y en el proyecto de destino, como se describió anteriormente en esta guía.
Prueba tu implementación en vivo con el Atención al cliente de Google
Después de probar con éxito la implementación del host de bastión de forma local, comunícate con el Atención al cliente de Google para programar una sesión de prueba en vivo. Antes de la sesión, el Atención al cliente de Google te enviará una solicitud de aprobación de acceso. Durante la sesión de prueba en vivo, tú y Google analizarán lo siguiente:
- Generación y aprobación de solicitudes de aprobación de acceso
- Flujo de trabajo de acceso integral para la implementación de tu host de bastión.
- Registros de Aprobación de acceso y Transparencia de acceso
- Cómo solucionar los problemas en las siguientes situaciones:
- Google intenta conectarse a una instancia de host de bastión que no se especificó en una solicitud de aprobación de acceso.
- Google intenta conectarse a una instancia de host de bastión cuando no iniciaste una sesión de multiplexor de terminal.
- Google intenta conectarse a una instancia de host de bastión después de que se rechazó o revocó la solicitud de aprobación de acceso correspondiente.
- Te desconectas o finalizas la sesión del multiplexor de terminal.
¿Qué sigue?
- Implementa cargas de trabajo en Distributed Cloud conectado
- Administrar máquinas
- Cómo crear y administrar clústeres
- Crea y administra redes
- Crear y administrar grupos de nodos