In questa pagina viene descritto come configurare e utilizzare Identity-Aware Proxy (IAP) Inoltro TCP con una funzione di indirizzo IP o nome host.
Per utilizzare l'inoltro TCP IAP con un indirizzo IP o un nome host devi avere una licenza Chrome Enterprise Premium.
Panoramica
Puoi utilizzare Google Cloud CLI per creare tunnel alle risorse utilizzando l'indirizzo IP privato o il nome host della risorsa. Se hai risorse esterne in non Google Cloud collegate a Google Cloud tramite Cloud Interconnect o VPN, puoi usare il protocollo TCP IAP l'inoltro con queste risorse.
Prima di iniziare
Se devi eseguire il tunneling a risorse esterne a Google Cloud, devi aver configurato la connettività ibrida. La connettività ibrida è obbligatoria per connettere le tue risorse esterne non Google Cloud in Google Cloud. Per ulteriori informazioni, consulta Cloud Interconnect o Cloud VPN documentazione.
Il router cloud deve pubblicizzare l'intervallo IP IAP-TCP35.235.240.0/20
, in modo che le destinazioni inviino nuovamente il traffico di risposta tramite Cloud VPN o Cloud Interconnect e non tramite internet. Se sì
configurazione, non puoi creare tunnel per risorse esterne
del tuo progetto Google Cloud.
Per configurare il router Cloud in modo che pubblicizzi l'intervallo IP IAP-TCP 35.235.240.0/20
, segui le istruzioni riportate in Pubblicità di intervalli IP personalizzati.
Le seguenti procedure forniscono esempi di gcloud per il completamento delle attività. Per informazioni su come interagire con i gruppi di destinazione utilizzando le API, vedi Risorsa REST: projects.iap_tunnel.locations.destGroups
Creazione di un gruppo di destinazione del tunnel
Quando configuri un tunnel, specifichi un gruppo di destinazione da utilizzare controlli delle autorizzazioni. I gruppi di destinazione del tunnel rappresentano le risorse con le stesse restrizioni di accesso al tunnel. Puoi creare un numero qualsiasi di gruppi di destinazione, ciascuno con un numero qualsiasi di intervalli IP o FQDN corrispondenti. I gruppi di destinazione possono sovrapporsi per una maggiore flessibilità.
Quando crei un gruppo di destinazione, devi specificare una regione. Per risultati ottimali, la regione specificata deve corrispondere alla posizione delle risorse di destinazione. Ad esempio, se le risorse sono connesse tramite VPN, deve utilizzare la regione del gateway VPN.
Per creare un gruppo di destinazione, devi disporre dell'autorizzazione iap.tunnelDestGroups.create
, che puoi concedere tramite il ruolo iap.tunnelDestGroupEditor
. Per concedere a un singolo utente
consulta l'articolo Concedere un singolo ruolo
nella documentazione di IAM.
Console
Vai alla pagina IAP. e selezionare un progetto, se non ne è già selezionato uno.
Nella scheda Risorse SSH e TCP, fai clic su Crea gruppo di destinazione.
Inserisci un nome per il gruppo. Il nome del gruppo può contenere solo lettere minuscole lettere (a-z) e trattini (-).
Nell'elenco a discesa, seleziona la regione in cui creare il gruppo di destinazione.
Nella sezione Indirizzo IP, fai clic su Aggiungi riga e inserisci l'indirizzo indirizzi IP o nomi di dominio completi delle risorse.
Un intervallo IP è costituito da intervalli separati da virgole che utilizzano la notazione CIDR, come
10.1.2.0/24,172.0.0.0/8
.Un elenco di nome host è un elenco di nomi host separati da virgole, come
*.internal.company.com
. Puoi utilizzare caratteri jolly con la voce FQDN.Fai clic su Crea gruppo di destinazione.
Interfaccia a riga di comando gcloud
gcloud iap tcp dest-groups create YOUR_GROUP_NAME \ --region=REGION \ --ip-range-list=IP_RANGE_LIST \ --fqdn-list=FQDN_LIST
Sostituisci quanto segue:
- YOUR_GROUP_NAME: il nome del tuo gruppo. Un nome di gruppo può contenere solo lettere minuscole (a-z) e trattini (-).
- REGION: la regione in cui creare il gruppo di destinazione, ad esempio
us-central1
. - IP_RANGE_LIST: facoltativo. L'elenco di intervalli IP, composto da
intervalli separati da virgole utilizzando la notazione CIDR, come
10.1.2.0/24,172.0.0.0/8
. - FQDN_LIST: facoltativo. L'elenco FQDN è un elenco di hostname separati da virgole, ad esempio
*.internal.company.com
. Se una voce FQDN contiene un carattere jolly corrisponderà a qualsiasi nome host con il suffisso specificato. Altrimenti, richiede una corrispondenza esatta. Se una richiesta corrisponde a qualsiasi intervallo IP o FQDN, viene considerata una corrispondenza.
Se non sai con certezza quali gruppi esistono già, esegui questo comando per elencare i gruppi:
gcloud iap tcp dest-groups list \ --region=REGION
Gestione dei gruppi di destinazione dei tunnel
Puoi visualizzare i dettagli di un gruppo di destinazione, modificarlo e rimuoverlo.
Console
Vai alla pagina IAP. e fai clic sulla scheda Risorse SSH e TCP.
Per visualizzare i dettagli di un gruppo di destinazione, fai clic sul suo nome.
Per modificare un gruppo di destinazione, selezionalo e fai clic su sull'icona a forma di matita per aprire il riquadro Modifica gruppo di destinazione. Puoi anche elimina il gruppo di destinazione da questo riquadro.
Per rimuovere un gruppo di destinazione, selezionalo e fai clic sull'icona del cestino.
Interfaccia a riga di comando gcloud
Per maggiori dettagli su come gestire i gruppi di destinazione utilizzando gcloud CLI, consulta comandi gcloud del gruppo di destinazione.
Configurazione delle autorizzazioni del tunnel
Per creare un tunnel, devi disporre dell'autorizzazione iap.tunnelDestGroups.accessViaIAP
sul gruppo di destinazione pertinente. Puoi concedere l'autorizzazione tramite la
Ruolo iap.tunnelResourceAccessor
.
Per configurare le autorizzazioni per i gruppi di destinazione, devi disporre delle
iap.tunnelDestGroups.setIamPolicy
, che puoi concedere tramite
Ruolo iap.admin
.
Console
Vai alla pagina IAP.
Nella scheda Risorse SSH e TCP, seleziona il gruppo di destinazione per per cui vuoi configurare le autorizzazioni.
Nel riquadro che si apre, fai clic su Aggiungi entità e inserisci un indirizzo email per l'utente.
Nella sezione Assegna ruoli, seleziona un ruolo da assegnare all'entità.
Fai clic su Salva.
Interfaccia a riga di comando gcloud
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
Sostituisci quanto segue:
- MEMBER: l'indirizzo email dell'utente, ad esempio
user:exampleuser@company.com
. - ROLE: il ruolo IAP richiesto,
roles/iap.tunnelResourceAccessor
. - GROUP_NAME: il nome del gruppo di destinazione.
- REGION: il nome della regione, ad esempio
us-central1
.
Informazioni sull'utilizzo del tunnel
Esistono tre comandi della gcloud CLI che puoi utilizzare quando lavori con IAP-TCP: start-iap-tunnel, ssh e scp.
I comandi IAP-TCP sono stati aggiornati per supportare il tunneling basato su IP e FQDN. Per passare all'indirizzo IP o al nome di dominio completo, procedi nel seguente modo: a seguire quando si utilizzano i comandi:
- Specifica un indirizzo IP o un nome di dominio completo anziché il nome dell'istanza.
- Usa
--region
anziché--zone
. - Usa
--dest-group
per specificare il gruppo di destinazione da utilizzare. - Utilizza
--network
per specificare il nome della rete VPC da utilizzare.
L'indirizzo IP specificato deve essere l'indirizzo IP privato della destinazione.
Non puoi utilizzare IAP-TCP con indirizzi IP pubblici. Se utilizzi
Il nome di dominio completo deve risolversi nell'indirizzo IP privato della destinazione. Tieni presente che la risoluzione dei nomi viene eseguita all'interno della rete VPC specificata, non nella rete del cliente. Ad esempio, se stai tentando di creare un tunnel
vm.corp.company.com
, il passaggio che converte vm.corp.company.com
in un IP
avviene nel contesto della rete VPC.
La regione specificata deve corrispondere a quella del gruppo di destinazione.
La rete specificata deve corrispondere al nome della rete VPC che ha accesso a
la destinazione. Un nome di rete tipico è default
. Puoi visualizzare l'elenco delle reti
nella pagina Reti VPC della console Google Cloud oppure recuperare
l'elenco dei nomi di rete eseguendo questo comando:
gcloud compute networks list --format='value(name)'
Esempi
Gli esempi riportati di seguito utilizzano un indirizzo IP di esempio 172.16.1.2
. Ogni comando può anche accettare un FQDN (ad esempio example.internal.company.com
) al posto dell'indirizzo IP.
Esempio di SSH
Per avviare una sessione SSH per 172.16.1.2
, esegui questo comando:
gcloud compute ssh 172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Sostituisci DESTINATION_GROUP_NAME con il nome del gruppo di destinazione.
Tieni presente che --plain
è implicito, quindi non c'è alcun tentativo di inserimento automatico
gestire le chiavi SSH ed eseguirne il push quando utilizzi un indirizzo IP.
Se ricevi l'errore Permission denied (publickey)
, il comando non ha trovato il file contenente le chiavi SSH. Per risolvere il problema, aggiungi il percorso al file contenente le chiavi private SSH come parametro per il comando SSH, come illustrato nell'esempio seguente:
gcloud compute ssh 172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap \ -- -i ~/.ssh/google_compute_engine
Sostituisci DESTINATION_GROUP_NAME con il nome del gruppo di destinazione.
Se vuoi accedere come utente specifico, utilizza il formato USER@IP anziché specificare solo l'IP:
gcloud compute ssh user@172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Se l'account è protetto da password, devi inserire una password. Se l'account è protetto da una coppia di chiavi SSH pubbliche o private, devi specificarlo utilizzando il flag -- -i
, come specificato sopra.
Esempio di tunnel
Per stabilire un tunnel verso una porta TCP diversa, utilizza il comando start-iap-tunnel
.
Per creare un tunnel da localhost:8022
alla porta 172.16.1.2:8085
, esegui il
seguente comando:
gcloud compute start-iap-tunnel 172.16.1.2 8085 \ --local-host-port=localhost:8022 \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default
Tieni presente che in questo esempio la macchina di destinazione deve essere in ascolto sulla porta 8085
.
Dopo aver stabilito un tunnel, puoi utilizzare qualsiasi strumento, come PuTTy, per stabilire una connessione.
Esempio di SCP
Per SCP un file in 172.16.1.2
, esegui questo comando:
gcloud compute scp file.txt 172.16.1.2:~/ \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default \ --tunnel-through-iap
Tieni presente che --plain
è implicito, quindi non c'è alcun tentativo di inserimento automatico
gestire le chiavi SSH ed eseguirne il push quando utilizzi un indirizzo IP.
Esempio di SSH ProxyCommand
Per utilizzare il comando come ProxyCommand che esegue sempre il tunneling a 172.16.1.2
, aggiungi una voce
alla tua configurazione ~/.ssh/config
o equivalente, come mostrato nell'esempio seguente:
Host example ProxyCommand gcloud compute start-iap-tunnel 172.16.1.2 '%p' \ --listen-on-stdin \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default \ --verbosity=warning
Il ProxyCommand diventa effettivo quando esegui il comando seguente: ssh example
Puoi anche impostare ProxyCommand in modo che gestisca molti nomi host, come illustrato nell'esempio seguente:
Host *.internal.company.com ProxyCommand gcloud compute start-iap-tunnel '%h' '%p'
--listen-on-stdin
--region=us-central1
--dest-group=destination-group-name
--network=default --verbosity=warning
Il ProxyCommand diventa effettivo quando esegui il comando seguente: ssh example.internal.company.com