Questa pagina descrive come configurare un bastion host nel deployment connesso di Google Distributed Cloud per consentire agli ingegneri Google di accedere ai nodi nella zona connessa di Distributed Cloud e risolvere i relativi problemi tramite Secure Shell (SSH).
Google fornisce il codice sorgente completo da cui puoi creare una macchina virtuale bastion host personalizzata in base ai requisiti aziendali.
Prerequisiti
Questa sezione elenca i prerequisiti per il deployment della soluzione di bastion host connesso a Distributed Cloud.
Attiva Access Approval
La funzionalità Bastion Host utilizza la funzionalità Approvazione accesso di Access Transparency per consentire a Google di richiedere l'accesso ai tuoi dati. Prima di eseguire il deployment delle macchine virtuali host bastion, devi attivare Access Transparency e Access Approval nel tuo progetto Google Cloud . Per saperne di più, consulta le pagine seguenti:
Specifiche della macchina virtuale
La soluzione bastion host di Distributed Cloud connesso richiede l'equivalente di
un deployment OpenStack di dimensioni small con le seguenti specifiche:
- CPU: 1 vCPU
- RAM: 2GB
- Disco: 20 GB
Google consiglia di eseguire il deployment di macchine virtuali bastion host N+1 per Google Cloud regione per una maggiore affidabilità.
Requisiti di networking
La soluzione Distributed Cloud connected bastion host richiede la configurazione delle seguenti sessioni di peering di rete per ogni macchina virtuale bastion host:
- Direzione nord. Connette la macchina virtuale bastion host a internet. Richiede l'accesso a internet e deve consentire le connessioni sulla porta 22 da indirizzi IP specifici che Google fornisce come parte del pacchetto di codice sorgente e dell'immagine del disco della soluzione bastion host.
- Direzione sud. Connette la macchina virtuale bastion host sulla porta 22 alle zone connesse Distributed Cloud corrispondenti in una singola regione. Google Cloud
- Gestione. Collega la macchina virtuale bastion host alla rete locale per scopi di funzionamento e manutenzione. Configura questa sessione di peering in base alle norme di sicurezza della tua organizzazione.
Best practice per la sicurezza
Google consiglia vivamente di seguire le best practice per la sicurezza descritte in questa sezione quando configuri una soluzione bastion host nel deployment connesso di Distributed Cloud, oltre alle norme di sicurezza della tua organizzazione:
- Segui la regola del privilegio minimo e mantieni una chiara separazione dei compiti per gli utenti.
- Per tutti gli account utente diversi dall'amministratore, utilizza solo l'autenticazione basata su certificati; disattiva l'autenticazione basata su password e l'accesso root alle macchine virtuali bastion host.
- Rifiuta l'accesso da tutti gli IP della sessione di peering in direzione nord che non fanno parte dell'elenco di indirizzi IP di assistenza fornito da Google.
- Chiudi tutte le porte nella sessione di peering in uscita, ad eccezione della porta 22 (SSH), e consentila solo per gli indirizzi IP nell'elenco degli indirizzi IP di assistenza forniti da Google.
- Mantieni aggiornate tutte le macchine virtuali bastion host. Google fornisce un nuovo pacchetto di codice sorgente con ogni patch di sicurezza e aggiornamento della versione.
- Configura una soluzione di avviso e controllo che soddisfi le norme di sicurezza della tua organizzazione.
Attiva il supporto del bastion host
Per abilitare il supporto dell'bastion host nella tua implementazione di Distributed Cloud connesso, invia una richiesta.
Devi abilitare e configurare individualmente il supporto dell'bastion host per ciascuna delle tue zone connesse a Distributed Cloud. In questo modo puoi implementare diverse configurazioni di accesso e di rete che si adattano meglio alle esigenze aziendali della tua organizzazione per ogni zona connessa a Distributed Cloud.
Ottieni il software bastion host
Il pacchetto software dell&#bastion host ti viene inviato dopo che l'assistenza Google attiva la funzionalità dell'bastion hostn per il deployment connesso a Distributed Cloud. Il pacchetto contiene quanto segue:
- Codice sorgente. Puoi personalizzare e creare le tue immagini di macchine virtuali bastion host in base alle tue esigenze aziendali.
- Documentazione. Documentazione aggiuntiva per attività come la configurazione dei certificati.
Crea un'immagine di macchina virtuale bastion host
Questa sezione fornisce una panoramica dei passaggi necessari per creare un'immagine macchina virtuale bastion host dal codice sorgente fornito da Google. Le istruzioni complete sono fornite
nel file README fornito con il codice sorgente.
Prerequisiti
Per creare un'immagine macchina virtuale bastion host, sono necessari i seguenti elementi:
- Una macchina che esegue Debian 11.
- L'ultima immagine del server cloud Debian.
- I software
qemu-img,qemu-system-x86_x64e GNUmtoolsinstallati sul computer. - Un file denominato
host-user-key.pubcontenente una chiave SSH pubblica per accedere all'istanza bastion host e avviare una sessionehost-user. Questa chiave può essere utilizzata per l'autenticazione diretta o come chiave di firma dell'autorità di certificazione. L'istanza bastion host deve considerare attendibile questa CA. - Un file denominato
admin-user-key.pubcontenente una chiave SSH pubblica per l'esecuzione di attività amministrative sull'istanzabastion hostn di destinazione. Questa chiave può essere utilizzata per l'autenticazione diretta o come chiave di firma dell'autorità di certificazione. L'istanza bastion host deve considerare attendibile questa CA. - Un file denominato
guest-user-key.pubcontenente una chiave di firma dell'autorità di certificazione SSH pubblica fornita da Google che consente all'assistenza Google di autenticarsi comeguest-userquando si connette all'istanza bastion host.
Crea l'immagine della macchina virtuale
Segui le istruzioni fornite nel file README incluso nel codice sorgente per
creare l'immagine della macchina virtuale bastion host dal codice sorgente fornito da Google. Gli
esempi in questa guida fanno riferimento al file immagine risultante come bastion-host.img.
Crea il pacchetto HIBA
Crea il pacchetto di installazione Debian per il livello software di autenticazione Host Identity-Based Authorization for SSH (HIBA) nel seguente modo:
Installa le dipendenze richieste utilizzando il seguente comando:
sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
Crea il pacchetto di installazione utilizzando il seguente comando:
./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir
Il pacchetto di installazione viene inserito nella directory /tmp/hiba-build-workdir e viene
denominato hiba_x.y-z_amd64.deb, dove x, y e z indicano il numero di versione di HIBA.
Genera le configurazioni cloud-init
Utilizza lo script generate-cloud-init.py per generare le configurazioni cloud-init richieste.
Puoi anche generare queste configurazioni utilizzando i tuoi strumenti. Queste configurazioni
fanno quanto segue:
- Crea gli account utente richiesti all'interno dell'immagine della macchina virtuale bastion host e configura questi account con le chiavi SSH descritte in precedenza.
- Aggiungi uno script che limiti i privilegi dell'account
guest-useralla sola partecipazione a una sessione di multiplexer terminale stabilita. - Aggiungi script che creano e gestiscono una sessione di multiplexer del terminale.
- Prepara i file di configurazione HIBA.
Lo script generate-cloud-init.py richiede il pacchetto HIBA creato in precedenza e
i tre file contenenti le chiavi SSH richieste. Esegui lo script nel seguente modo:
./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/"
Sostituisci quanto segue:
HOST_USER_KEY_FILE: il percorso completo e il nome del filehost-user-key.pub.ADMIN_USER_KEY_FILE: il percorso completo e il nome del fileadmin-user-key.pub.GUEST_USER_KEY_FILE: il percorso completo e il nome del fileguest-user-key.pub.
Lo script inserisce il file cloud-init.img nella directory cloud-init all'interno della tua
directory di lavoro locale.
Applica le configurazioni cloud-init all'immagine della macchina virtuale bastion host
Utilizza lo strumento qemu-system-x86_64 per applicare le configurazioni cloud-init generate in precedenza
al file immagine della macchina virtuale bastion host nel seguente modo:
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
Se questo comando restituisce un errore, potrebbe essere necessario ridimensionare la dimensione del disco nell'immagine della macchina virtuale bastion host.
Puoi verificare che le configurazioni siano state applicate correttamente dopo l'avvio della macchina virtuale. Nei log di auditd vedrai un output simile al seguente:
[ 52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.
Puoi anche esaminare manualmente i suoi account utente e la configurazione di sshd per verificarli.
Importa l'immagine della macchina virtuale bastion host
Prima di importare l'immagine della macchina virtuale bastion host completamente configurata nell'infrastruttura di deployment, devi creare uno snapshot utilizzando lo strumento qemu-img nel seguente modo:
qemu-img snapshot -c installed bastion-image.img
Segui le procedure stabilite dalla tua organizzazione per importare l'immagine della macchina virtuale bastion host nell'infrastruttura di deployment.
Configura la macchina virtuale bastion host
Segui i passaggi descritti in questa sezione per configurare una macchina virtuale bastion host.
Configura gli account utente richiesti
La funzionalità di bastion host di Distributed Cloud Connected richiede uno o più account utente in ciascuna delle seguenti categorie:
- Gestione. Questo è l'account amministratore della macchina virtuale bastion host. Ha accesso root.
- Utente host. Questo è l'account dell'ingegnere delle operazioni. Può avviare e gestire sessioni di multiplexer del terminale per l'assistenza Google, ma non può inserire comandi in queste sessioni.
- Utente ospite. Questo è l'account dell'ingegnere dell'Assistenza Google. Può stabilire una connessione SSH all'interno di una sessione di multiplexer del terminale condivisa con l'ingegnere delle operazioni su una macchina virtuale bastion host. Non ha altri privilegi.
- Utente congiunto. Questo account stabilisce la sessione del multiplexer del terminale sulla macchina virtuale bastion host. Il tuo ingegnere delle operazioni e un ingegnere dell'assistenza Google si connettono congiuntamente a questa sessione.
Configurare i certificati
Devi configurare i certificati che consentono agli account descritti nella sezione precedente
di accedere alla macchina virtuale bastion host. Il pacchetto software bastion host include
uno script denominato generate-cloud-init.py che genera la configurazione cloud-init richiesta
con gli account, le chiavi SSH e i certificati richiesti per ogni account.
Per le istruzioni, vedi Generare le configurazioni cloud-init.
Configura logging
I log dell'host bastion sono disponibili in tempo reale e on demand dal daemon audit.
Puoi gestire la configurazione della registrazione tramite il file auditd.conf. Sei
responsabile della rotazione e dell'esportazione dei log dalle macchine virtuali bastion host in base
ai requisiti aziendali. Devi anche mantenere uno spazio su disco adeguato per archiviarli
sulla macchina virtuale.
Test della configurazione
Completa i passaggi descritti in questa sezione per testare il deployment della macchina virtuale bastion host, inclusa la connettività da entrambe le estremità econtrollo dell'accessoo appropriato per gli account utente richiesti. Ti consigliamo inoltre di collaborare con l'assistenza Google per eseguire test in tempo reale.
Testare il deployment localmente
Verifica di poter stabilire una sessione SSH come
host-usercon la macchina virtuale bastion host. Se l'operazione non va a buon fine, controlla le chiavi e i certificati SSH.Verifica di poter avviare una sessione di multiplexer del terminale utilizzando il comando seguente:
./opt/create-shared-tmux-session
Verifica che il deployment connesso a Distributed Cloud sia raggiungibile dalla macchina virtuale bastion host utilizzando il seguente comando:
ssh -vv bastion-user@TARGET_ADDRESS
Sostituisci
TARGET_ADDRESScon l'indirizzo IP della macchina Distributed Cloud o dello switch ToR di destinazione.La richiesta verrà rifiutata dall'autenticazione SSH, ma le richieste di autenticazione e trasporto SSH devono comunque raggiungere il deployment connesso a Distributed Cloud. Se questa operazione non va a buon fine, controlla la configurazione del firewall.
Verifica che sia Access Transparency sia Access Approval siano stati attivati nella tua organizzazione e nel progetto di destinazione, come descritto in precedenza in questa guida. Google Cloud
Testare l'implementazione dal vivo con l'assistenza Google
Dopo aver testato correttamente il deployment dell'bastion host in locale, contatta l'Assistenza Google per pianificare una sessione di test dal vivo. Prima della sessione, l'Assistenza Google ti invierà una richiesta di approvazione dell'accesso. Durante la sessione di test in tempo reale, tu e Google tratterete i seguenti argomenti:
- Generazione e approvazione delle richieste di Access Approval.
- Flusso di lavoro di accesso end-to-end per il deployment dell'bastion host.
- Log di Access Approval e Access Transparency.
- Come risolvere i problemi relativi ai seguenti scenari:
- Google tenta di connettersi a un'istanza bastion host non specificata in una richiesta di approvazione dell'accesso.
- Google tenta di connettersi a un'istanza bastion host quando non hai avviato una sessione di multiplexer del terminale.
- Google tenta di connettersi a un'istanza bastion host dopo che la richiesta di approvazione dell'accesso corrispondente è stata rifiutata o revocata.
- La disconnessione o la chiusura della sessione del multiplexer del terminale.
Passaggi successivi
- Esegui il deployment dei carichi di lavoro su Distributed Cloud connected
- Gestisci macchine
- Creare e gestire i cluster
- Creare e gestire le reti
- Creare e gestire i pool di nodi