Esta página descreve como configurar e usar o encaminhamento TCP do Identity-Aware Proxy (IAP) com uma funcionalidade de endereço IP ou nome de anfitrião.
Vista geral
Pode usar a CLI do Google Cloud para criar túneis para recursos através do endereço IP privado ou do nome do anfitrião do recurso. Se tiver recursos externos que não estejamGoogle Cloud ligados Google Cloud através do Cloud Interconnect ou de uma VPN, pode usar o encaminhamento TCP do IAP com esses recursos.
Antes de começar
Se precisar de criar um túnel para recursos fora de Google Cloud, tem de ter a conetividade híbrida configurada. É necessária uma conetividade híbrida para ligar os seus recursos externos que não sejam da Google Cloud aGoogle Cloud.Google Cloud Para mais informações, consulte a documentação do Cloud Interconnect ou do Cloud VPN.
O seu router na nuvem tem de anunciar o intervalo de IPs IAP-TCP
35.235.240.0/20
, para que os destinos enviem tráfego de resposta através do
Cloud VPN ou Cloud Interconnect e não através da Internet. Se não tiver esta configuração, não pode criar túneis para recursos externos ao seu projeto do Google Cloud .
Para configurar o router na nuvem para anunciar o intervalo de IPs IAP-TCP 35.235.240.0/20
, siga as instruções em Anunciar intervalos de IPs personalizados.
Os procedimentos seguintes fornecem exemplos do gcloud para concluir as tarefas. Para obter informações sobre como interagir com grupos de destinos através das APIs, consulte o recurso REST: projects.iap_tunnel.locations.destGroups
Criar um grupo de destinos de túnel
Quando configura um túnel, especifica um grupo de destino a usar para verificações de autorização. Os grupos de destinos de túnel representam recursos que têm as mesmas restrições de acesso ao túnel. Pode criar qualquer número de grupos de destino, cada um com qualquer número de intervalos de IP ou FQDN correspondentes. Os grupos de destinos podem sobrepor-se para maior flexibilidade.
Quando cria um grupo de destinos, tem de especificar uma região. Para obter os melhores resultados, a região especificada deve corresponder à localização dos recursos de destino. Por exemplo, se os recursos estiverem ligados por uma VPN, deve usar a região do gateway de VPN.
Para criar um grupo de destinos, tem de ter a autorização iap.tunnelDestGroups.create
, que pode conceder através da função iap.tunnelDestGroupEditor
. Para conceder uma única função, consulte o artigo Conceda uma única função na documentação do IAM.
Consola
Aceda à página de IAPs e selecione um projeto, se ainda não tiver sido selecionado.
No separador Recursos de SSH e TCP, clique em Criar grupo de destino.
Introduza um nome para o nome do grupo. O nome do grupo só pode conter letras minúsculas (a-z) e travessões (-).
Na lista pendente, selecione a região na qual quer criar o grupo de destino.
Na secção Endereço IP, clique em Adicionar linha e, de seguida, introduza os endereços IP ou os nomes de domínio totalmente qualificados (FQDN) dos recursos.
Um intervalo de IPs consiste em intervalos separados por vírgulas que usam a notação CIDR, como
10.1.2.0/24,172.0.0.0/8
.Uma lista de FQDNs é uma lista de nomes de anfitriões separados por vírgulas, como
*.internal.company.com
. Pode usar carateres universais com a sua entrada FQDN.Clique em Criar grupo de destinos.
CLI gcloud
gcloud iap tcp dest-groups create YOUR_GROUP_NAME \ --region=REGION \ --ip-range-list=IP_RANGE_LIST \ --fqdn-list=FQDN_LIST
Substitua o seguinte:
- YOUR_GROUP_NAME: o nome do seu grupo. Um nome de grupo só pode conter letras minúsculas (a-z) e travessões (-).
- REGION: a região na qual criar o grupo de destino, como
us-central1
. - IP_RANGE_LIST: opcional. A lista de intervalos de IP, que consiste em intervalos separados por vírgulas através da notação CIDR, como
10.1.2.0/24,172.0.0.0/8
. - FQDN_LIST: opcional. A lista de FQDNs é uma lista separada por vírgulas de nomes de anfitriões, como
*.internal.company.com
. Se uma entrada FQDN tiver um prefixo de carater universal, corresponde a qualquer nome de anfitrião com o final especificado. Caso contrário, é necessária uma correspondência exata. Se um pedido corresponder a qualquer intervalo de IP ou FQDN, é considerado uma correspondência.
Se não tiver a certeza dos grupos que já existem, execute o seguinte comando para os listar:
gcloud iap tcp dest-groups list \ --region=REGION
Gerir grupos de destinos de túneis
Pode ver os detalhes de um grupo de destino, modificá-lo e removê-lo.
Consola
Aceda à página IAP e clique no separador Recursos SSH e TCP.
Para ver os detalhes de um grupo de destinos, clique no nome do grupo de destinos.
Para modificar um grupo de destinos, selecione o grupo de destinos e, de seguida, clique no ícone de lápis para abrir o painel Editar grupo de destinos. Também pode eliminar o grupo de destinos a partir deste painel.
Para remover um grupo de destinos, selecione o grupo de destinos e, de seguida, clique no ícone do caixote do lixo.
CLI gcloud
Para ver detalhes sobre como gerir grupos de destino através da CLI gcloud, consulte os comandos gcloud do grupo de destino.
Configurar autorizações de túnel
Para criar um túnel, tem de ter a autorização iap.tunnelDestGroups.accessViaIAP
no grupo de destino relevante. Pode conceder a autorização através da função iap.tunnelResourceAccessor
.
Para configurar autorizações em grupos de destinos, tem de ter a autorização iap.tunnelDestGroups.setIamPolicy
, que pode conceder através da função iap.admin
.
Consola
Aceda à página de compras na app.
No separador Recursos de SSH e TCP, selecione o grupo de destino para o qual quer configurar autorizações.
No painel apresentado, clique em Adicionar principal e introduza um endereço de email para o utilizador.
Na secção Atribuir funções, selecione uma função para atribuir ao principal.
Clique em Guardar.
CLI gcloud
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
Substitua o seguinte:
- MEMBER: o endereço de email do utilizador, como
user:exampleuser@company.com
. - ROLE: a função de CNA necessária,
roles/iap.tunnelResourceAccessor
. - GROUP_NAME: o nome do grupo de destino.
- REGION: o nome da região, como
us-central1
.
Compreender a utilização de túneis
Existem três comandos da CLI gcloud que pode usar quando trabalha com o IAP-TCP: start-iap-tunnel, ssh e scp.
Os comandos IAP-TCP foram atualizados para suportar o tunneling baseado em IP e FQDN. Para mudar para o endereço IP ou o FQDN, faça o seguinte quando usar os comandos:
- Especifique um endereço IP ou um FQDN em vez do nome da instância.
- Use
--region
em vez de--zone
. - Use
--dest-group
para especificar o grupo de destino a usar. - Use
--network
para especificar o nome da rede VPC a usar.
O endereço IP que especificar tem de ser o endereço IP privado do destino.
Não pode usar o IAP-TCP com endereços IP públicos. Se usar o FQDN, tem de ser resolvido para o endereço IP privado do destino. Tenha em atenção que a resolução de nomes é feita a partir da rede VPC que especificar e não a partir da rede do cliente. Por exemplo, se estiver a tentar criar um túnel para vm.corp.company.com
, o passo que converte vm.corp.company.com
num endereço IP ocorre no contexto da rede de VPC.
A região que especificar tem de corresponder à região do grupo de destino.
A rede que especificar tem de corresponder ao nome da rede VPC que tem acesso ao destino. Um nome de rede típico é default
. Pode ver a lista de nomes de redes na página de redes VPC na Google Cloud consola ou pode obter a lista de nomes de redes executando o seguinte comando:
gcloud compute networks list --format='value(name)'
Exemplos
Os exemplos seguintes usam um endereço IP de exemplo de 172.16.1.2
. Cada comando também pode usar um FQDN (por exemplo, example.internal.company.com
) em vez do endereço IP.
Exemplo de SSH
Para iniciar uma sessão SSH para 172.16.1.2
, execute o seguinte comando:
gcloud compute ssh 172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Substitua DESTINATION_GROUP_NAME pelo nome do grupo de destino.
Tenha em atenção que --plain
está implícito, pelo que não existe qualquer tentativa de gerir e enviar automaticamente chaves SSH quando usa um endereço IP.
Se receber o erro Permission denied (publickey)
, o comando não encontrou o ficheiro que contém as chaves SSH. Para resolver este problema, adicione o caminho para o ficheiro que contém as chaves privadas SSH como um parâmetro para o comando SSH, conforme mostrado no exemplo seguinte:
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
Substitua DESTINATION_GROUP_NAME pelo nome do grupo de destino.
Se quiser iniciar sessão como um utilizador específico, use o formato USER@IP em vez de especificar apenas o IP:
gcloud compute ssh user@172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Se a conta estiver protegida por palavra-passe, tem de introduzir uma palavra-passe. Se a conta estiver protegida por um par de chaves SSH privadas ou públicas, tem de o especificar através da flag -- -i
, conforme especificado acima.
Exemplo de túnel
Para estabelecer um túnel para uma porta TCP diferente, use o comando start-iap-tunnel
.
Para criar um túnel de localhost:8022
para a porta 172.16.1.2:8085
, execute o seguinte 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
Tenha em atenção que a máquina de destino tem de estar a ouvir a porta 8085
neste exemplo.
Depois de estabelecer um túnel, pode usar qualquer ferramenta, como o PuTTy, para estabelecer uma ligação.
Exemplo de SCP
Para SCP um ficheiro para 172.16.1.2
, execute o seguinte comando:
gcloud compute scp file.txt 172.16.1.2:~/ \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default \ --tunnel-through-iap
Tenha em atenção que --plain
está implícito, pelo que não existe qualquer tentativa de gerir e enviar automaticamente chaves SSH quando usa um endereço IP.
Exemplo de SSH ProxyCommand
Para usar o comando como um ProxyCommand que encaminha sempre para 172.16.1.2
, adicione uma entrada à sua configuração ~/.ssh/config
ou equivalente, conforme mostrado no exemplo seguinte:
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
O ProxyCommand entra em vigor quando executa o seguinte comando: ssh example
Também pode configurar o ProxyCommand para processar muitos nomes de anfitriões, como mostrado no exemplo seguinte:
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
O ProxyCommand entra em vigor quando executa o seguinte comando: ssh example.internal.company.com