Cette page explique comment configurer un hôte bastion sur votre déploiement Google Distributed Cloud connecté pour permettre aux ingénieurs Google d'accéder aux nœuds de votre zone Distributed Cloud connectée et de résoudre les problèmes les concernant via Secure Shell (SSH).
Google fournit le code source complet à partir duquel vous pouvez créer une machine virtuelle hôte bastion personnalisée en fonction des besoins de votre entreprise.
Prérequis
Cette section liste les prérequis pour déployer la solution d'hôte bastion connecté Distributed Cloud.
Activer les autorisations d'accès
La fonctionnalité d'hôte bastion utilise la fonctionnalité Access Approval d'Access Transparency pour permettre à Google de demander l'accès à vos données. Vous devez activer Access Transparency et Access Approval sur votre projet Google Cloud avant de déployer des machines virtuelles hôtes bastion. Pour en savoir plus, consultez les pages suivantes :
Spécifications des machines virtuelles
La solution d'hôte bastion connecté Distributed Cloud nécessite l'équivalent d'un déploiement OpenStack de taille small avec les spécifications suivantes :
- Processeur : 1 vCPU
- Mémoire RAM : 2 Go
- Disque : 20 Go
Google recommande de déployer des machines virtuelles hôtes bastion N+1 par région Google Cloud pour une fiabilité accrue.
Exigences de mise en réseau
La solution d'hôte bastion connecté au cloud distribué nécessite que vous configuriez les sessions d'appairage de réseau suivantes pour chaque machine virtuelle d'hôte bastion :
- Northbound : Connecte la machine virtuelle de l'hôte bastion à Internet. Nécessite un accès à Internet et doit autoriser les connexions sur le port 22 à partir d'adresses IP spécifiques que Google fournit dans le package de code source et l'image de disque de la solution d'hôte bastion.
- Southbound : Connecte la machine virtuelle hôte bastion sur le port 22 aux zones connectées Distributed Cloud correspondantes dans une seule région Google Cloud .
- Gestion Connecte la machine virtuelle hôte bastion à votre réseau local à des fins d'opération et de maintenance. Configurez cette session de peering conformément à la règle de sécurité de votre organisation.
Bonnes pratiques concernant la sécurité
Google vous recommande vivement de suivre les bonnes pratiques de sécurité décrites dans cette section lorsque vous configurez une solution d'hôte bastion sur votre déploiement Distributed Cloud connecté, en plus des règles de sécurité de votre organisation :
- Suivez la règle du moindre privilège et séparez clairement les tâches des utilisateurs.
- Pour tous les comptes utilisateur autres que celui de l'administrateur, utilisez uniquement l'authentification basée sur les certificats. Désactivez l'authentification basée sur les mots de passe et l'accès racine aux machines virtuelles de l'hôte bastion.
- Refusez l'accès à partir de toutes les adresses IP de la session d'appairage Northbound qui ne font pas partie de la liste d'adresses IP d'assistance fournie par Google.
- Fermez tous les ports de la session d'appairage en aval, à l'exception du port 22 (SSH), et autorisez-le uniquement pour les adresses IP figurant dans la liste des adresses IP d'assistance fournies par Google.
- Maintenez à jour toutes les machines virtuelles de l'hôte bastion. Google fournit un nouveau package de code source à chaque correctif de sécurité et mise à jour de version.
- Configurez une solution d'alerte et d'audit qui respecte les règles de sécurité de votre organisation.
Activer la prise en charge de l'hôte bastion
Pour activer la prise en charge de l'hôte bastion sur votre déploiement Distributed Cloud connecté, envoyez une demande.
Vous devez activer et configurer individuellement la prise en charge de l'hôte bastion pour chacune de vos zones connectées Distributed Cloud. Cela vous permet de déployer différentes configurations d'accès et de réseau qui répondent le mieux aux besoins de votre organisation pour chaque zone connectée Distributed Cloud.
Obtenir le logiciel de l'hôte bastion
Le package logiciel de l'hôte bastion vous est envoyé une fois que l'assistance Google a activé la fonctionnalité d'hôte bastion pour votre déploiement Distributed Cloud connecté. Le package contient les éléments suivants :
- Code source Vous pouvez personnaliser et créer vos propres images de machine virtuelle hôte bastion en fonction des besoins de votre entreprise.
- Documentation Documentation supplémentaire pour les tâches telles que la configuration des certificats.
Créer une image de machine virtuelle d'hôte bastion
Cette section présente les étapes requises pour créer une image de machine virtuelle d'hôte bastion à partir du code source fourni par Google. Des instructions complètes sont fournies dans le fichier README fourni avec le code source.
Prérequis
Pour créer une image de machine virtuelle d'hôte bastion, vous avez besoin des éléments suivants :
- Une machine exécutant Debian 11.
- La dernière image de serveur cloud Debian.
- Les logiciels
qemu-img,qemu-system-x86_x64et GNUmtoolsinstallés sur la machine. - Un fichier nommé
host-user-key.pubcontenant une clé SSH publique pour se connecter à l'instance d'hôte bastion et lancer une sessionhost-user. Cette clé peut être utilisée pour l'authentification directe ou comme clé de signature de l'autorité de certification. L'instance d'hôte bastion doit approuver cette autorité de certification. - Fichier nommé
admin-user-key.pubcontenant une clé SSH publique permettant d'effectuer des tâches administratives sur l'instance d'hôte bastion cible. Cette clé peut être utilisée pour l'authentification directe ou comme clé de signature d'autorité de certification. L'instance d'hôte bastion doit approuver cette autorité de certification. - Fichier nommé
guest-user-key.pubcontenant une clé de signature d'autorité de certification SSH publique fournie par Google, qui permet à l'assistance Google de s'authentifier en tant queguest-userlors de la connexion à l'instance d'hôte bastion.
Créer l'image de la machine virtuelle
Suivez les instructions fournies dans le fichier README fourni avec le code source pour créer l'image de la machine virtuelle de l'hôte bastion à partir du code source fourni par Google. Les exemples de ce guide font référence au fichier image résultant sous le nom bastion-host.img.
Créer le package HIBA
Créez le package d'installation Debian pour la couche logicielle d'authentification HIBA (Host Identity-Based Authorization for SSH) comme suit :
Installez les dépendances requises à l'aide de la commande suivante :
sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
Créez le package d'installation à l'aide de la commande suivante :
./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir
Le package d'installation est déposé dans le répertoire /tmp/hiba-build-workdir et est nommé hiba_x.y-z_amd64.deb, où x, y et z désignent le numéro de version HIBA.
Générer les configurations cloud-init
Utilisez le script generate-cloud-init.py pour générer les configurations cloud-init requises.
Vous pouvez également générer ces configurations à l'aide de vos propres outils. Ces configurations effectuent les opérations suivantes :
- Créez les comptes utilisateur requis dans l'image de machine virtuelle de l'hôte bastion et configurez ces comptes avec les clés SSH décrites précédemment.
- Ajoutez un script qui limite les droits d'accès du compte
guest-userà la participation à une session de multiplexeur de terminal établie. - Ajoutez des scripts qui créent et gèrent une session de multiplexeur de terminal.
- Préparez les fichiers de configuration HIBA.
Le script generate-cloud-init.py nécessite le package HIBA que vous avez créé précédemment, ainsi que les trois fichiers contenant les clés SSH requises. Exécutez le script comme suit :
./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/"
Remplacez les éléments suivants :
HOST_USER_KEY_FILE: chemin d'accès complet et nom du fichierhost-user-key.pub.ADMIN_USER_KEY_FILE: chemin d'accès complet et nom du fichieradmin-user-key.pub.GUEST_USER_KEY_FILE: chemin d'accès complet et nom du fichierguest-user-key.pub.
Le script dépose le fichier cloud-init.img dans le répertoire cloud-init de votre répertoire de travail local.
Appliquez les configurations cloud-init à l'image de machine virtuelle de l'hôte bastion.
Utilisez l'outil qemu-system-x86_64 pour appliquer les configurations cloud-init que vous avez générées précédemment à votre fichier image de machine virtuelle hôte bastion comme suit :
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 cette commande renvoie une erreur, vous devrez peut-être redimensionner la taille du disque dans l'image de la machine virtuelle de l'hôte bastion.
Vous pouvez vérifier que les configurations ont bien été appliquées une fois que vous avez démarré la machine virtuelle. Un résultat semblable aux lignes suivantes s'affichera dans les journaux auditd :
[ 52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.
Vous pouvez également examiner manuellement ses comptes utilisateur et sa configuration sshd pour les vérifier.
Importer l'image de machine virtuelle de l'hôte bastion
Avant d'importer l'image de machine virtuelle de l'hôte bastion entièrement configurée dans votre infrastructure de déploiement, vous devez créer un instantané à l'aide de l'outil qemu-img comme suit :
qemu-img snapshot -c installed bastion-image.img
Suivez les procédures établies par votre organisation pour importer l'image de machine virtuelle de l'hôte bastion dans votre infrastructure de déploiement.
Configurer la machine virtuelle de l'hôte bastion
Suivez les étapes de cette section pour configurer une machine virtuelle hôte bastion.
Configurer les comptes utilisateur requis
La fonctionnalité d'hôte bastion de Distributed Cloud Connected nécessite un ou plusieurs comptes utilisateur dans chacune des catégories suivantes :
- Gestion Il s'agit du compte administrateur de la machine virtuelle de l'hôte bastion. Il dispose d'un accès root.
- Utilisateur hôte. Il s'agit du compte de l'ingénieur des opérations. Il peut démarrer et gérer des sessions de multiplexeur de terminal pour l'assistance Google, mais ne peut saisir aucune commande dans ces sessions.
- Utilisateur invité : Il s'agit du compte de l'ingénieur de l'assistance Google. Il peut établir une connexion SSH dans une session de multiplexeur de terminal partagée avec votre ingénieur des opérations sur une machine virtuelle hôte bastion. Il ne dispose d'aucun autre droit.
- Utilisateur conjoint. Ce compte établit la session du multiplexeur de terminal sur la machine virtuelle hôte bastion. Votre ingénieur des opérations et un ingénieur de l'assistance Google se connecteront ensemble à cette session.
Configurer des certificats
Vous devez configurer des certificats qui permettent aux comptes décrits dans la section précédente d'accéder à la machine virtuelle hôte bastion. Le package logiciel de l'hôte bastion inclut un script nommé generate-cloud-init.py qui génère la configuration cloud-init requise avec les comptes, les clés SSH et les certificats requis pour chaque compte.
Pour obtenir des instructions, consultez Générer les configurations cloud-init.
Configurer la journalisation
Les journaux de l'hôte bastion sont disponibles en temps réel et à la demande à partir du démon audit.
Vous pouvez gérer votre configuration de journalisation à l'aide du fichier auditd.conf. Vous êtes responsable de la rotation et de l'exportation des journaux des machines virtuelles hôtes bastion en fonction des besoins de votre entreprise. Vous devez également disposer de suffisamment d'espace disque pour les stocker sur la machine virtuelle.
Tester votre configuration
Suivez les étapes de cette section pour tester le déploiement de votre machine virtuelle hôte bastion, y compris la connectivité des deux côtés et le contrôle des accès approprié pour les comptes utilisateur requis. Nous vous recommandons également de contacter l'assistance Google pour effectuer des tests en direct.
Tester votre déploiement en local
Vérifiez que vous pouvez établir une session SSH en tant que
host-useravec votre machine virtuelle hôte bastion. Si cela ne fonctionne pas, vérifiez vos clés et certificats SSH.Vérifiez que vous pouvez démarrer une session de multiplexeur de terminal à l'aide de la commande suivante :
./opt/create-shared-tmux-session
Vérifiez que votre déploiement Distributed Cloud connecté est accessible depuis la machine virtuelle de l'hôte bastion à l'aide de la commande suivante :
ssh -vv bastion-user@TARGET_ADDRESS
Remplacez
TARGET_ADDRESSpar l'adresse IP de la machine Distributed Cloud ou du commutateur ToR cible.La requête sera rejetée par l'authentification SSH, mais les requêtes de transport et d'authentification SSH doivent toujours atteindre votre déploiement Distributed Cloud connecté. Si cela ne fonctionne pas, vérifiez la configuration de votre pare-feu.
Vérifiez que Access Transparency et Access Approval ont été activés dans votre organisation Google Cloud et votre projet cible, comme décrit précédemment dans ce guide.
Tester votre déploiement en direct avec l'assistance Google
Une fois que vous avez testé le déploiement de votre hôte bastion en local, contactez l'assistance Google pour planifier une session de test en direct. Avant la session, l'assistance Google vous enverra une demande d'approbation d'accès. Lors de la session de test en direct, vous et Google aborderez les points suivants :
- Génération et approbation des demandes Access Approval.
- Flux de travail d'accès de bout en bout pour le déploiement de votre hôte bastion.
- Les journaux Access Approval et Access Transparency.
- Voici comment résoudre les problèmes dans les scénarios suivants :
- Google tente de se connecter à une instance d'hôte bastion non spécifiée dans une demande d'approbation d'accès.
- Google tente de se connecter à une instance d'hôte bastion alors que vous n'avez pas démarré de session de multiplexeur de terminal.
- Google tente de se connecter à une instance d'hôte bastion après que la demande Access Approval correspondante a été refusée ou révoquée.
- Vous vous déconnectez de la session du multiplexeur de terminal ou vous y mettez fin.
Étapes suivantes
- Déployer des charges de travail sur Distributed Cloud connecté
- Gérer les machines
- Créer et gérer des clusters
- Créer et gérer des réseaux
- Créer et gérer des pools de nœuds