Nesta página, descrevemos como configurar e usar o Identity-Aware Proxy (IAP) Encaminhamento de TCP com um endereço IP ou atributo de nome do host.
Para usar o encaminhamento TCP do IAP com um endereço IP ou um recurso de nome do host, é necessário ter uma licença do Chrome Enterprise Premium.
Visão geral
É possível usar a CLI do Google Cloud para criar túneis para recursos usando o endereço IP particular ou o nome do host do recurso. Se você tiver recursos externos que não sejam do Google Cloud conectados ao Google Cloud por meio de no Cloud Interconnect ou em uma VPN, é possível usar e encaminhá-los com esses recursos.
Antes de começar
Se você precisar criar túneis para recursos fora do Google Cloud, será necessário configurar a conectividade híbrida. A conectividade híbrida é necessária para conectar seus recursos externos que não são do Google Cloud ao Google Cloud. Para mais informações, consulte a documentação do Cloud Interconnect ou do Cloud VPN.
Seu roteador na nuvem precisa anunciar o intervalo de IP IAP-TCP
35.235.240.0/20
para que os destinos enviem o tráfego de resposta de volta pelo
Cloud VPN ou Cloud Interconnect, e não pela Internet. Se você não tiver essa configuração, não será possível criar túneis para recursos externos ao seu projeto do Google Cloud.
Se quiser configurar o Cloud Router para divulgar o intervalo de IP IAP-TCP 35.235.240.0/20
, siga as instruções em Como divulgar intervalos de IP personalizados.
Os procedimentos a seguir fornecem exemplos de gcloud para concluir as tarefas. Para informações sobre como interagir com grupos de destino usando as APIs, consulte Recurso REST: projects.iap_tunnel.locations.destGroups
Como criar um grupo de destino de túnel
Ao configurar um túnel, você especifica um grupo de destino a ser usado para verificações de permissão. Os grupos de destino de túnel representam recursos que têm as mesmas restrições de acesso a túnel. Você pode criar quantos quiser grupos, cada um com qualquer número de intervalos de IP ou FQDN correspondentes. Os grupos de destino podem se sobrepor para mais flexibilidade.
Ao criar um grupo de destino, você precisa especificar uma região. Para o melhores resultados, a região especificada deve corresponder ao local do aos recursos de destino. Por exemplo, se os recursos estiverem conectados por uma VPN, você devem usar a região do gateway da VPN.
Para criar um grupo de destino, você precisa ter a permissão iap.tunnelDestGroups.create
, que pode ser concedida pelo papel iap.tunnelDestGroupEditor
. Para conceder um único
função, consulte Conceder um único papel
na documentação do IAM.
Console
Acesse a página do IAP e selecione um projeto, se ainda não tiver feito isso.
Na guia Recursos SSH e TCP, clique em Criar grupo de destino.
Digite um nome para o grupo. O nome do grupo só pode conter letras minúsculas letras (a-z) e traços (-).
Na lista suspensa, selecione a região em que o grupo de destino será criado.
Na seção Endereço IP, clique em Adicionar linha e insira o IP. ou nomes de domínio totalmente qualificados (FQDN, na sigla em inglês) de recursos.
Um intervalo de IP consiste em intervalos separados por vírgulas usando a notação CIDR, como
10.1.2.0/24,172.0.0.0/8
.Uma lista FQDN é uma lista separada por vírgulas de nomes de host, como
*.internal.company.com
: Você pode usar caracteres curinga com a entrada de FQDN.Clique em Criar grupo de destino.
CLI da gcloud
gcloud iap tcp dest-groups create YOUR_GROUP_NAME \ --region=REGION \ --ip-range-list=IP_RANGE_LIST \ --fqdn-list=FQDN_LIST
Substitua:
- YOUR_GROUP_NAME: o nome do seu grupo. O nome de um grupo pode conter apenas letras minúsculas (a-z) e traços (-).
- REGION: a região em que o grupo de destino
vai ser criado, como
us-central1
. - IP_RANGE_LIST: opcional. A lista de intervalos de IPs, que consiste em
intervalos separados por vírgula usando a notação CIDR, como
10.1.2.0/24,172.0.0.0/8
. - FQDN_LIST: opcional. A lista de FQDN é uma lista de nomes de host separados por vírgulas, como
*.internal.company.com
. Se uma entrada de FQDN tiver um prefixo curinga, ela vai corresponder a qualquer nome de host com o final especificado. Caso contrário, requer uma correspondência exata. Se uma solicitação corresponder a qualquer intervalo de IP ou FQDN, considerada uma correspondência.
Se você não tiver certeza de quais grupos já existem, execute o seguinte comando para listá-los:
gcloud iap tcp dest-groups list \ --region=REGION
Como gerenciar grupos de destino do túnel
Você pode conferir os detalhes de um grupo de destino, modificá-lo e removê-lo.
Console
Acesse a página do IAP. e clique na guia Recursos SSH e TCP.
Para conferir os detalhes de um grupo de destino, clique no nome dele.
Para modificar um grupo de destino, selecione o grupo de destino e clique em Clique no ícone de lápis para abrir o painel Editar grupo de destino. Também é possível excluir o grupo de destino nesse painel.
Para remover um grupo de destino, selecione-o e clique no ícone de lixeira.
CLI da gcloud
Para saber como gerenciar grupos de destino usando a CLI gcloud, consulte comandos gcloud do grupo de destino.
Como configurar permissões de túnel
Para criar um túnel, é preciso ter a permissão iap.tunnelDestGroups.accessViaIAP
no grupo de destino relevante. É possível conceder a permissão pelo papel iap.tunnelResourceAccessor
.
Para configurar permissões em grupos de destinos, é necessário ter o
iap.tunnelDestGroups.setIamPolicy
, que pode ser concedida por meio do
papel iap.admin
.
Console
Acesse a página do IAP.
Na guia Recursos SSH e TCP, selecione o grupo de destino para o qual você quer configurar as permissões.
No painel que é aberto, clique em Adicionar principal e insira um endereço de e-mail. para o usuário.
Na seção Atribuir papéis, selecione um papel para atribuir ao principal.
Clique em Salvar.
CLI da gcloud
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
Substitua:
- MEMBER: o endereço de e-mail do usuário, como
user:exampleuser@company.com
. - ROLE: o papel do IAP necessário,
roles/iap.tunnelResourceAccessor
. - GROUP_NAME: o nome do grupo de destino.
- REGION: o nome da região, como
us-central1
.
Noções básicas sobre o uso de túneis
Há três comandos da CLI gcloud que podem ser usados ao trabalhar com IAP-TCP: start-iap-tunnel, ssh e scp.
Os comandos IAP-TCP foram atualizados para dar suporte ao encapsulamento baseado em IP e FQDN. Para mudar para o endereço IP ou FQDN, faça o seguinte ao usar os comandos:
- Especifique um endereço IP ou FQDN em vez do nome da instância.
- Use
--region
, em vez de--zone
. - Use
--dest-group
para especificar o grupo de destino a ser usado. - Use
--network
para especificar o nome da rede VPC a ser usada.
O endereço IP especificado precisa ser o endereço IP particular do destino.
Não é possível usar o IAP-TCP com endereços IP públicos. Se você usar
FQDN, ele precisa ser resolvido para o endereço IP particular do destino. A resolução de nomes é feita na rede VPC especificada, não na rede do cliente. Por exemplo, se você estiver tentando criar um túnel para
vm.corp.company.com
, a etapa que converte vm.corp.company.com
em um IP.
de rede ocorre no contexto da rede VPC.
A região especificada precisa corresponder à região do grupo de destino.
A rede especificada precisa corresponder ao nome da rede VPC que tem acesso a
ao destino. Um nome de rede típico é default
. É possível conferir a lista de nomes de rede na página "Redes VPC" do console do Google Cloud ou extrair a lista de nomes de rede executando o seguinte comando:
gcloud compute networks list --format='value(name)'
Exemplos
Os exemplos a seguir usam um endereço IP de exemplo de 172.16.1.2
. Cada comando
também pode aceitar um FQDN (por exemplo, example.internal.company.com
) no
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.
O --plain
é implícito, então não há tentativa de gerenciar e enviar chaves SSH automaticamente ao usar um endereço IP.
Se você receber o erro Permission denied (publickey)
, isso significa que o comando não encontrou o arquivo que contém as chaves SSH. Para resolver esse problema, adicione o caminho para o arquivo que contém as chaves privadas SSH como um parâmetro para o comando SSH, conforme mostrado no exemplo a seguir:
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 você quiser fazer login como um usuário 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 senha, será necessário inserir uma senha. Se a conta estiver protegida por um par de chaves SSH privada ou pública, especifique-a usando a sinalização -- -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
A máquina de destino precisa estar detectando a porta 8085
neste exemplo.
Depois de estabelecer um túnel, você pode usar qualquer ferramenta, como a PuTTy, para estabelecer uma conexão.
Exemplo de SCP
Para SCP um arquivo 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
O --plain
é implícito, então não há nenhuma tentativa de gerenciar e enviar chaves SSH automaticamente ao usar um endereço IP.
Exemplo de ProxyCommand do SSH
Se você quiser usar o comando como um ProxyCommand que sempre faz túneis para 172.16.1.2
, adicione uma entrada
à configuração ~/.ssh/config
ou equivalente, conforme mostrado no exemplo a seguir:
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 você executa este comando: ssh example
Também é possível configurar ProxyCommand para tratar de diversos nomes de host, como exemplo a seguir:
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 você executa este comando: ssh example.internal.company.com