Configura el reenvío de TCP de IAP con una dirección IP o nombre de host en un entorno de Google Cloud o que no sea de Google Cloud

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

  1. Ve a la página de IAP y selecciona un proyecto si aún no está seleccionado.

  2. En la pestaña Recursos SSH y TCP, haz clic en Crear grupo de destino.

  3. Ingresa un nombre para tu grupo. El nombre del grupo solo puede contener minúsculas letras (a-z) y guiones (-).

  4. En la lista desplegable, selecciona la región en la que deseas crear el destino. grupo.

  5. 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.

  6. 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

  1. 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

  1. Ve a la página de IAP.

  2. En la pestaña Recursos SSH y TCP, selecciona el grupo de destino para para el que quieres configurar permisos.

  3. En el panel que se abre, haz clic en Agregar principal y, luego, ingresa una dirección de correo electrónico. para el usuario.

  4. En la sección Asignar roles, selecciona un rol para asignar a la principal.

  5. 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