En esta página, se describe cómo configurar y usar Identity-Aware Proxy (IAP) Reenvío de TCP con una función de dirección IP o nombre de host.
Para usar el reenvío de TCP de IAP con una dirección IP o nombre de host debes tener una licencia de Chrome Enterprise Premium.
Descripción general
Puedes usar Google Cloud CLI para crear túneles para recursos con el la dirección IP privada del recurso o el nombre de host. Si tienes recursos externos en un entorno que no es de Google Cloud conectados a Google Cloud a través de Cloud Interconnect o una VPN, puedes usar IAP TCP reenviar con esos recursos.
Antes de comenzar
Si necesitas hacer un túnel hacia recursos fuera de Google Cloud, debes tener configurada la conectividad híbrida. La conectividad híbrida es obligatoria para conectar tus recursos externos que no sean de Google Cloud a en Google Cloud. Para obtener más información, consulta Cloud Interconnect o Cloud VPN en la documentación de Google Cloud.
Tu Cloud Router debe anunciar el rango de IP de IAP-TCP
35.235.240.0/20
, para que los destinos envíen tráfico de respuesta a través de
Cloud VPN o Cloud Interconnect
y no a través de Internet. Si lo haces
no tienes esta configuración, no puedes crear túneles para recursos externos
tu proyecto de Google Cloud.
Si quieres configurar tu Cloud Router para que anuncie el rango de IP de IAP-TCP 35.235.240.0/20
, sigue las instrucciones que se indican en Cómo anunciar rangos de IP personalizados.
Los siguientes procedimientos proporcionan ejemplos de gcloud para completar las tareas. Para sobre cómo interactuar con los grupos de destino a través de las APIs, consulte Recurso de REST: projects.iap_tunnel.locations.destGroups
Crea un grupo de destino de túnel
Cuando configuras un túnel, especificas un grupo de destino para usar y verificaciones de permisos. Los grupos de destino de túneles representan recursos que tienen la las mismas restricciones de acceso al túnel. Puedes crear cualquier cantidad de grupos de destino, cada uno con cualquier cantidad de rangos de IP o FQDN coincidentes. Grupos de destino pueden superponerse para brindar más flexibilidad.
Cuando creas un grupo de destino, debes especificar una región. Para el resultados óptimos, la región que especifiques debe coincidir con la ubicación de la los recursos de destino. Por ejemplo, si los recursos están conectados por una VPN, debe usar la región de la puerta de enlace de VPN.
Para crear un grupo de destino, debes tener el permiso iap.tunnelDestGroups.create
, que puedes otorgar a través del rol iap.tunnelDestGroupEditor
. Para otorgar un solo
consulta Cómo otorgar un solo rol
en la documentación de IAM.
Console
Ve a la página de IAP y selecciona un proyecto si aún no está seleccionado.
En la pestaña Recursos SSH y TCP, haz clic en Crear grupo de destino.
Ingresa un nombre para tu grupo. El nombre del grupo solo puede contener minúsculas letras (a-z) y guiones (-).
En la lista desplegable, selecciona la región en la que deseas crear el destino. grupo.
En la sección Dirección IP, haz clic en Agregar fila y, luego, ingresa la dirección IP. direcciones IP o nombres de dominio completamente calificados (FQDN) de los recursos.
Un rango de IP consiste en rangos separados por comas utilizando la notación CIDR, como
10.1.2.0/24,172.0.0.0/8
Una lista de FQDN es una lista separada por comas de nombres de host, como
*.internal.company.com
Puedes usar comodines con la entrada del FQDN.Haz clic en Crear grupo de destino.
gcloud CLI
gcloud iap tcp dest-groups create YOUR_GROUP_NAME \ --region=REGION \ --ip-range-list=IP_RANGE_LIST \ --fqdn-list=FQDN_LIST
Reemplaza lo siguiente:
- YOUR_GROUP_NAME: Es el nombre de tu grupo. El nombre de un grupo solo puede contener letras minúsculas (a-z) y guiones (-).
- REGION: Es la región en la que se creará el grupo de destino, como
us-central1
. - IP_RANGE_LIST: Opcional La lista de rangos de IP, que consta de
Rangos separados por comas mediante la notación CIDR, como
10.1.2.0/24,172.0.0.0/8
- FQDN_LIST: Opcional La lista de FQDN es una lista separada por comas de
como
*.internal.company.com
. Si una entrada de FQDN tiene un comodín coincidirá con cualquier nombre de host que tenga la terminación especificada. De lo contrario, requiere una concordancia exacta. Si una solicitud coincide con cualquier rango de IP o FQDN, como coincidencia.
Si no estás seguro de qué grupos ya existen, ejecuta el siguiente comando para generar una lista de los grupos:
gcloud iap tcp dest-groups list \ --region=REGION
Administra grupos de destino de túneles
Puedes ver los detalles de un grupo de destino, modificarlo y quitarlo.
Console
Ve a la página de IAP y haz clic en la pestaña Recursos SSH y TCP.
Para ver los detalles de un grupo de destino, haz clic en su nombre.
Para modificar un grupo de destino, selecciónalo y haz clic en ícono de lápiz para abrir el panel Edit destination group. También puedes borrar el grupo de destino de este panel.
Para quitar un grupo de destino, selecciónalo y haz clic en el ícono de la papelera.
gcloud CLI
Para obtener detalles sobre cómo administrar grupos de destino con gcloud CLI, consulta comandos de gcloud del grupo de destino.
Configura los permisos del túnel
Para crear un túnel, debes tener el permiso iap.tunnelDestGroups.accessViaIAP
en el grupo de destino relevante. Puedes otorgar el permiso a través de la
iap.tunnelResourceAccessor
.
Para configurar los permisos en los grupos de destino, debes tener la
iap.tunnelDestGroups.setIamPolicy
, que puedes otorgar mediante el
Rol iap.admin
.
Console
Ve a la página de IAP.
En la pestaña Recursos SSH y TCP, selecciona el grupo de destino para para el que quieres configurar permisos.
En el panel que se abre, haz clic en Agregar principal y, luego, ingresa una dirección de correo electrónico. para el usuario.
En la sección Asignar roles, selecciona un rol para asignar a la principal.
Haz clic en Guardar.
gcloud CLI
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
Reemplaza lo siguiente:
- MEMBER: La dirección de correo electrónico del usuario, como
user:exampleuser@company.com
- ROLE: Es el rol de IAP requerido.
roles/iap.tunnelResourceAccessor
- GROUP_NAME: Es el nombre del grupo de destino.
- REGION: Es el nombre de la región, como
us-central1
.
Información sobre el uso del túnel
Hay tres comandos de gcloud CLI que puedes usar cuando trabajas con IAP-TCP: start-iap-tunnel, ssh y scp.
Se actualizaron los comandos de IAP-TCP para admitir la tunelización basada en IP y FQDN. Para cambiar a la dirección IP o FQDN, siguiente cuando uses los comandos:
- Especifica una dirección IP o un FQDN en lugar del nombre de la instancia.
- Usar
--region
en lugar de--zone
- Usa
--dest-group
para especificar el grupo de destino que se usará. - Usa
--network
para especificar el nombre de la red de VPC que se usará.
La dirección IP que especifiques debe ser la dirección IP privada del destino.
No puedes usar IAP-TCP con direcciones IP públicas. Si usas un FQDN, este debe resolverse en la dirección IP privada del destino. Ten en cuenta que
la resolución de nombres se hace desde la red de VPC que especifiques, no desde
red del cliente. Por ejemplo, si intentas crear un túnel para
vm.corp.company.com
, el paso que convierte vm.corp.company.com
en una IP
dirección de VPC en el contexto de la red de VPC.
La región que especifiques debe coincidir con la región del grupo de destino.
La red que especifiques debe coincidir con el nombre de la red de VPC que tiene acceso al destino. Un nombre de red típico es default
. Puedes ver la lista de redes
en la página Redes de VPC de la consola de Google Cloud
la lista de nombres de redes ejecutando el siguiente comando:
gcloud compute networks list --format='value(name)'
Ejemplos
En los siguientes ejemplos, se usa una dirección IP de ejemplo de 172.16.1.2
. Cada comando
también puedes tomar un FQDN (por ejemplo, example.internal.company.com
) en
de la dirección IP.
Ejemplo de SSH
Para iniciar una sesión SSH en 172.16.1.2
, ejecuta el siguiente comando:
gcloud compute ssh 172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Reemplaza DESTINATION_GROUP_NAME por el nombre del grupo de destino.
Ten en cuenta que --plain
está implícito, por lo que no hay intentos de
administrar y enviar claves SSH cuando se usa una dirección IP.
Si recibes el error Permission denied (publickey)
, significa que el comando no encontró el archivo que contiene las claves SSH. Para resolver este problema, agrega la ruta de acceso al archivo que contiene las claves privadas SSH como un parámetro para el comando SSH, tal como se muestra en el siguiente ejemplo:
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
Reemplaza DESTINATION_GROUP_NAME por el nombre del grupo de destino.
Si quieres acceder como un usuario específico, usa el formato USER@IP en lugar de especificar solo la IP:
gcloud compute ssh user@172.16.1.2 \ --region=us-central1 \ --dest-group=DESTINATION_GROUP_NAME \ --network=default \ --tunnel-through-iap
Si la cuenta está protegida por contraseña, debes ingresar una contraseña. Si la cuenta está protegida por un par de claves SSH privadas o públicas, debes especificarla con la marca -- -i
, como se especificó antes.
Ejemplo de túnel
Para establecer un túnel a otro puerto TCP, usa el comando start-iap-tunnel
.
Para crear un túnel desde localhost:8022
hasta el puerto 172.16.1.2:8085
, ejecuta el siguiente comando:
siguiente 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
Ten en cuenta que la máquina de destino debe estar escuchando el puerto 8085
en este ejemplo.
Después de establecer un túnel, puedes usar cualquier herramienta, como PuTTy, para establecer una conexión.
Ejemplo de SCP
Para SCP de un archivo a 172.16.1.2
, ejecuta el siguiente comando:
gcloud compute scp file.txt 172.16.1.2:~/ \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default \ --tunnel-through-iap
Ten en cuenta que --plain
está implícito, por lo que no hay intentos de
administrar y enviar claves SSH cuando se usa una dirección IP.
Ejemplo de ProxyCommand SSH
Para usar el comando como un ProxyCommand que siempre se conecte a 172.16.1.2
, agrega una entrada.
a tu configuración de ~/.ssh/config
o equivalente, como se muestra en el siguiente ejemplo:
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
ProxyCommand se aplica cuando ejecutas el siguiente comando: ssh example
También puedes configurar ProxyCommand para que controle muchos nombres de host, como se muestra en el siguiente ejemplo:
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
ProxyCommand se aplica cuando ejecutas el siguiente comando: ssh example.internal.company.com