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 gcloud CLI 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 externa, 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. Tu servicio puede enviar solicitudes salientes a través de la puerta de enlace de Cloud NAT con direcciones IP externas estáticas reservadas en lugar de direcciones IP externas efímeras predeterminadas.

Configura tu servicio para usar instance_ip_mode: internal con Cloud NAT y direcciones IP externas estáticas dedicadas en las siguientes situaciones:

  • Te conectas a una base de datos o API externa que requiere una lista de entidades permitidas de direcciones IP o una regla de firewall.
  • Te conectas a extremos externos sensibles a la reputación, como puertas de enlace de pagos, bases de datos alojadas o APIs de socios protegidas por firewalls de aplicaciones web (WAF) de terceros. El tráfico anterior o ruidoso en grupos de direcciones IP efímeras compartidas puede degradar la reputación de la IP y hacer que los WAF externos bloqueen o limiten tus solicitudes con errores HTTP 403 o tiempos de espera de conexión.
  • Ejecutas análisis de red autorizados, enumeración de puertos, creación de huellas digitales de hosts, sondeo de vulnerabilidades, extracción de datos web o cargas de trabajo de pruebas de carga.

Para enrutar las solicitudes salientes de Internet a través de Cloud NAT, haz lo siguiente:

  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 y asignar direcciones IP externas estáticas reservadas a la puerta de enlace.

Si tu servicio escala a muchas instancias o abre muchas conexiones simultáneas, como durante el análisis de red autorizado, asigna varias direcciones IP estáticas a Cloud NAT. También puedes aumentar la cantidad mínima de puertos por instancia o habilitar la asignación dinámica de puertos para evitar el agotamiento de puertos. Obtén más información sobre cómo las puertas de enlace de Cloud NAT usan direcciones IP y puertos.

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.