Configura servicios privados solo para uso interno

En esta página, se muestra la configuración necesaria para exponer un servicio del entorno flexible de App Engine solo en su dirección IP interna.

De forma predeterminada, los servicios de entorno flexible reciben una dirección IP interna y una dirección IP externa efímera cuando se implementan por primera vez. La dirección IP externa efímera permite que tu servicio envíe solicitudes a servicios de App Engine con dominios personalizados y recursos en Internet. Las direcciones IP externas efímeras generan costos.

Si el servicio no requiere una dirección IP externa, puedes evitar que envíe solicitudes a recursos en Internet y reducir los costos si limitas el servicio a usar solo su dirección IP interna. Esto no evita que el servicio reciba solicitudes de Internet o de servicios de App Engine con dominios personalizados, ya que el nombre de dominio completamente calificado del servicio sigue siendo visible de forma externa.

Limitaciones

La inhabilitación de direcciones IP externas efímeras tiene las siguientes limitaciones:

  • Servicios con dominios personalizados: para enviar solicitudes a servicios de App Engine con dominios personalizados, debes configurar Cloud NAT.
  • Recursos externos: para enviar solicitudes a recursos externos, debes configurar Cloud NAT.
  • Dependencia de Acceso privado a Google: Las instancias con el modo IP configurado como internal requieren Acceso privado a Google en la subred de destino.
  • Redes heredadas: las redes heredadas no pueden usar el Acceso privado a Google y, por lo tanto, no pueden inhabilitar direcciones IP externas efímeras.

Antes de comenzar

Para implementar apps de entorno flexible sin direcciones IP externas, debes habilitar el Acceso privado a Google en la subred de destino.

Prepara la red de VPC compartida

Si usas una VPC compartida, sigue estos pasos a fin de preparar tu red de VPC compartida para ampliar la configuración.

  1. Verifica que tengas una ruta que sea compatible con el Acceso privado a Google. Por lo general, la ruta predeterminada de una red es compatible con el Acceso privado a Google. En el caso de otras rutas, confirma que la ruta esté configurada de la siguiente manera.

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Instance tags: INSTANCE_TAGS
    Next hop: DEFAULT_INTERNET_GATEWAY
    

    Reemplaza lo siguiente:

    • SHARED_VPC_NETWORK_NAME: el nombre de tu red de VPC compartida.
    • INSTANCE_TAGS: si no usas etiquetas de instancia, no especifiques nada en este campo. Si usas etiquetas de instancia, incluye aef-instances en la lista de etiquetas de instancia.
    • DEFAULT_INTERNET_GATEWAY: la puerta de enlace de Internet predeterminada.

    Para obtener más información sobre las rutas compatibles con el Acceso privado a Google, consulta la documentación de Acceso privado a Google sobre opciones de enrutamiento.

  2. Verifica que tengas una regla de firewall compatible con el Acceso privado a Google. La regla de firewall se debe configurar de la siguiente manera.

    Network: SHARED_VPC_NETWORK_NAME
    Destination IP address range: 0.0.0.0/0
    Destination filter: IP ranges
    Direction of traffic: Egress
    Attach on match: Allow
    Instance tags: INSTANCE_TAGS
    

    Reemplaza lo siguiente:

    • SHARED_VPC_NETWORK_NAME: el nombre de tu red de VPC compartida.
    • INSTANCE_TAGS: si no usas etiquetas de instancia, no especifiques nada en este campo. Si usas etiquetas de instancia, incluye aef-instances en la lista de etiquetas de instancia.

    Para obtener más información sobre las reglas de firewall compatibles con el Acceso privado a Google, consulta la documentación de Acceso privado a Google sobre la configuración del firewall.

Configura el servicio para usar solo su dirección IP interna

  1. Actualiza Google Cloud CLI. Esto garantiza que uses una versión de la CLI de gcloud que admita direcciones IP privadas para apps del entorno flexible.

    gcloud components update
    
  2. En tu archivo app.yaml, agrega el campo instance_ip_mode a la sección network y configúralo como internal.

    • Si tu archivo app.yaml ya tiene una sección network, agrega la siguiente línea dentro de la sección network:

      instance_ip_mode: internal
      

    • Si el archivo app.yaml no tiene una sección network, agrega las siguientes líneas para crear la sección y especificar el modo de IP de la instancia:

      network:
       instance_ip_mode: internal
      

    Guarda estos cambios.

  3. Implemente el servicio.

    gcloud beta app deploy
    
  4. Para verificar la configuración, revisa la página de instancias de la consola de Google Cloud.

    Ir a Instancias

    Desplázate hacia abajo hasta la tabla Instancias (debajo del gráfico Resumen). En la columna IP de la VM, confirma que no haya direcciones IP enumeradas. La ausencia de una dirección IP en esta columna significa que tu instancia no tiene dirección IP externa. Aunque este campo está vacío, la instancia aún tiene una dirección IP interna.

Envía solicitudes externas sin una dirección IP externa

Si tu servicio envía solicitudes a Internet, pero deseas limitarlo a usar solo su dirección IP interna, puedes usar Cloud NAT para crear una puerta de enlace. El servicio puede enviar solicitudes externas a través de la puerta de enlace de Cloud NAT sin usar las direcciones IP externas efímeras predeterminadas.

  1. Sigue los pasos de la sección Configura tu servicio para usar solo su dirección IP interna.

  2. Sigue los pasos para configurar Cloud NAT.

Para obtener más información sobre este enfoque, consulta la documentación de Cloud Architecture Center sobre cómo implementar Cloud NAT para la recuperación.