Usa los Controles del servicio de VPC (VPC SC)

Controles del servicio de VPC es una función de Google Cloud que te permite configurar un perímetro seguro para protegerte del robo de datos. La URL run.app predeterminada y los dominios personalizados están sujetos a los Controles del servicio de VPC. En esta guía, se muestra cómo usar los Controles del servicio de VPC con Cloud Run para agregar seguridad adicional a tus servicios.

Limitaciones y asesoría

  • En el caso de Artifact Registry o Container Registry:

    • El registro en el que almacenas tu contenedor debe estar en el mismo perímetro de servicio de Controles del servicio de VPC que el proyecto en el que estás implementando.
    • El código que se compilará debe estar en el mismo perímetro que el registro al que se envía el contenedor.
  • La función de implementación continua no está disponible para los proyectos dentro de un perímetro de Controles del servicio de VPC.

  • Cuando se invocan los servicios de Cloud Run, la aplicación de la política de los Controles del servicio de VPC no usa la información de autenticación de IAM del cliente. Estas solicitudes tienen las siguientes limitaciones:

    • No se admiten las reglas de la política de entrada de los Controles del servicio de VPC que usan principales de IAM.
    • No se admiten los niveles de acceso para los perímetros de los Controles del servicio de VPC que usan principales de IAM.

Configura tu organización para admitir los Controles del servicio de VPC

Para usar los Controles del servicio de VPC con Cloud Run, puedes configurar un perímetro de servicio a nivel de la organización. Si configuras las políticas de la organización adecuadas, puedes asegurarte de que se apliquen las verificaciones de los Controles del servicio de VPC cuando se usa Cloud Run y que los desarrolladores solo puedan implementar servicios que cumplan con los Controles del servicio de VPC. Obtén más información sobre la herencia y las infracciones cuando configuras una política de la organización.

Configura un perímetro de Controles del servicio de VPC

En los siguientes pasos, se muestra cómo configurar un perímetro de Controles del servicio de VPC.

  1. Asegúrate de tener los roles necesarios para administrar los Controles del servicio de VPC.

  2. En la consola de Google Cloud, ve a la página Controles del servicio de VPC.

    Ir a la página Controles del servicio de VPC

  3. Si se te solicita, selecciona tu organización.

  4. Haz clic en Administrar políticas de acceso. Selecciona una política de acceso o crea una. La política de acceso debe incluir todos los proyectos que desees agregar al perímetro.

  5. Haz clic en Perímetro nuevo. Escribe un nombre del perímetro.

  6. Selecciona los proyectos que desees proteger dentro del perímetro:

    1. Haz clic en Proyectos.

    2. En la ventana Agregar proyectos, selecciona los proyectos que deseas agregar.

      Si usas la VPC compartida, asegúrate de agregar el proyecto host y los proyectos de servicio.

    3. Haz clic en el botón Agregar proyectos.

  7. Selecciona Cloud Run como el servicio que deseas proteger dentro del perímetro.

    1. Haz clic en Servicios restringidos.

    2. Haz clic en Agregar servicios.

    3. Busca “Cloud Run”. Luego, selecciona API de Cloud Run Admin.

    4. Haz clic en Agregar API de Cloud Run Admin.

  8. Habilita el acceso para los desarrolladores.

    Activar los Controles del servicio de VPC para Cloud Run evita todo acceso desde fuera del perímetro, incluida la visualización y la implementación de servicios desde máquinas que no están en el perímetro, como las laptops de la empresa. Para que los desarrolladores y los operadores de aplicaciones vean e implementen recursos dentro del perímetro, debes configurar la política de entrada del perímetro:

    1. Haz clic en Política de entrada.

    2. Especifica las opciones Fuente, Identidad, Proyecto y Servicios.

    3. Haz clic en Agregar regla.

    Si tu organización usa Access Context Manager, también puedes habilitar el acceso para desarrolladores si configuras los niveles de acceso.

  9. Haz clic en Crear perímetro.

Una vez que hayas completado estos pasos, se verificarán todas las llamadas a la API de Cloud Run Admin para garantizar que se originen dentro del mismo perímetro.

Configura las políticas de la organización

Para administrar las políticas de la organización, necesitas la función de administrador de políticas de la organización (roles/orgpolicy.policyAdmin).

A fin de cumplir con los Controles del servicio de VPC y protegerte contra el robo de datos, configura las siguientes políticas de la organización que controlan la configuración de entrada y salida permitida para: Cloud Run en el perímetro de servicio.

Restringe la configuración de entrada permitida

En la política de la organización run.allowedIngress, se definen las opciones de configuración de entrada que pueden usar los desarrolladores para Cloud Run. Establece esta política de la organización para exigir que los desarrolladores usen el valor internalsi deseas permitir solo solicitudes internas, o internal-and-cloud-load-balancing si deseas permitir solicitudes a través de un balanceador de cargas de aplicaciones externo, con los controles de acceso administrados por Cloud Load Balancing.

Para obtener más información sobre esta configuración, consulta Restringe el ingreso a Cloud Run.

Console

  1. Ve a la página de la política Configuración de entrada permitida (Cloud Run) en la consola de Google Cloud:

    Ir a la política de la organización

  2. Haz clic en Editar.

  3. En la página Editar, selecciona Personalizar.

  4. En Aplicación de la política, selecciona Reemplazar.

  5. En Valores de la política, selecciona Personalizar.

  6. En Tipo de política, selecciona Permitir.

  7. En Valores personalizados, ingresa internal. Si también quieres permitir el tráfico de Cloud Load Balancing, haz clic en Nuevo valor de la política e ingresa internal-and-cloud-load-balancing.

  8. Haz clic en Guardar.

gcloud

Usa el comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

en el que ORGANIZATION_ID es el ID de la organización. Si deseas permitir también el tráfico de Cloud Load Balancing, reemplaza run.allowedIngress internal por run.allowedIngress internal-and-cloud-load-balancing.

Después de implementar esta política de la organización, todos los servicios deberán usar los valores permitidos en su configuración de entrada. Esto significa que los servicios de Cloud Run solo pueden aceptar tráfico proveniente de una red de VPC que esté dentro del perímetro de servicio. La política de la organización bloqueará los intentos de establecer un valor diferente en la entrada.

Restringe la configuración de salida de VPC permitida

En la política de la organización run.allowedVPCEgress, se definen las opciones de configuración de salida que pueden usar los desarrolladores para Cloud Run. Haz lo siguiente para establecer esta política de la organización y permitir solo el valor all-traffic:

Console

  1. Ve a la página de la política Configuración de salida de VPC permitida (Cloud Run) en la consola de Google Cloud:

    Ir a la política de la organización

  2. Haz clic en Editar.

  3. En la página Editar, selecciona Personalizar.

  4. En Aplicación de la política, selecciona Reemplazar.

  5. En Valores de la política, selecciona Personalizar.

  6. En Tipo de política, selecciona Permitir.

  7. En Valores personalizados, ingresa all-traffic.

  8. Haz clic en Guardar.

gcloud

Usa el comando gcloud resource-manager org-policies allow:

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

en el que ORGANIZATION_ID es el ID de la organización.

Comportamiento después de establecer la política de la organización

Después de implementar la política de la organización, todas las revisiones nuevas deberán usar la salida de VPC directa o un conector de Acceso a VPC sin servidores y deben usar el valor all-traffic para su configuración de salida. Esta combinación enruta todo el tráfico de salida de estas revisiones a través de una red de VPC, lo que sujeto a las reglas de firewall de la red de VPC y otras opciones de configuración. La política de la organización bloquea las implementaciones de revisión nuevas que especifiquen un valor diferente.

Política de la organización y migraciones de tráfico

Para los servicios existentes antes de que se configurara la política de la organización, puedes continuar migrando el tráfico a revisiones que no cumplan con las políticas hasta que todas las revisiones que entregan tráfico cumplan con los requisitos.

Este comportamiento te permite probar y lanzar de forma gradual revisiones nuevas que cumplan con la política. Una vez que todas las revisiones que entregan tráfico cumplan con la política, la política de la organización bloqueará cualquier intento de mover el tráfico a revisiones que no cumplan con las políticas.

Configura tu proyecto para que sea compatible con los Controles del servicio de VPC

Para usar los Controles del servicio de VPC en proyectos individuales que están dentro del perímetro de servicio, debes realizar una configuración adicional.

Configura redes de VPC

En esta sección, se muestra cómo configurar tu red de VPC para que las solicitudes que se envían a los dominios googleapis.com normales se enruten de forma automática al rango de IP virtual (VIP) restringido, 199.36.153.4/30 (restricted.googleapis.com), en el que se entrega tu servicio de Cloud Run. No es necesario realizar cambios en el código.

Sigue estos pasos para bloquear el tráfico de salida de cada red de VPC en un proyecto, excepto el que se dirige al rango de VIP restringido:

  1. Habilita el Acceso privado a Google en las subredes que alojan tus recursos de red de VPC.

  2. Configura las reglas de firewall para evitar que los datos abandonen la red de VPC:

    • Crea una regla de rechazo de salida que bloquee todo el tráfico saliente.

    • Crea una regla de autorización de salida que permita el tráfico hacia 199.36.153.4/30 en el puerto TCP 443. Asegúrate de que tenga prioridad antes de la regla de rechazo de salida que acabas de crear. Esto permite la salida solo al rango VIP restringido.

  3. Crea una política de respuesta de Cloud DNS.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Reemplaza lo siguiente:

    • RESPONSE_POLICY: Es un nombre para tu política de respuesta.
    • NETWORK: Es el nombre de la red que se asociará a esta política. Para especificar varias redes, sepáralos con comas, por ejemplo: network1,network2.
    • DESCRIPTION: una descripción de la política de respuesta, como Cloud Run VPC Service Controls response policy
  4. Agrega una regla a la política de respuesta para resolver *.googleapis.com en restricted.googleapis.com. El rango de direcciones IP de restricted.googleapis.com es 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.googleapis.com." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Reemplaza lo siguiente:

    • RESPONSE_POLICY_RULE: Es un nombre para la regla de política de respuesta.
    • RESPONSE_POLICY: Es el nombre de la política de respuesta que creaste en el paso anterior, entre comillas.
  5. Agrega una regla a la política de respuesta para resolver *.run.app en restricted.googleapis.com. El rango de direcciones IP de restricted.googleapis.com es 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.run.app." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Reemplaza lo siguiente:

    • RESPONSE_POLICY_RULE: Es un nombre para la regla de política de respuesta.
    • RESPONSE_POLICY: Es el nombre de la política de respuesta que especificaste en el paso anterior, entre comillas.

En este punto, puede suceder lo siguiente con las solicitudes que se originan en la red de VPC:

  • Las solicitudes no pueden salir de la red de VPC, lo que impide la salida fuera del perímetro del servicio.
  • Las solicitudes pueden llegar a las APIs y los servicios de Google que cumplen con los Controles del servicio de VPC, lo que evita el robo mediante las APIs de Google.

Implementa servicios y trabajos de Cloud Run compatibles con los Controles del servicio de VPC

Después de configurar los Controles del servicio de VPC para Cloud Run, asegúrate de que todos los servicios y trabajos de Cloud Run implementados dentro del perímetro de servicio habiliten los Controles del servicio de VPC. Para ello, se requiere lo siguiente:

  • Los servicios y trabajos de Cloud Run deben usar la salida de VPC directa o un conector de Acceso a VPC sin servidores. Consulta Conéctate a una red de VPC para obtener más información.
  • Los servicios y trabajos de Cloud Run deben enrutar todo el tráfico saliente a través de la red de VPC. Consulta la configuración de salida para obtener más información.
  • Los servicios de Cloud Run deben permitir tráfico solo desde fuentes internas. Consulta Configuración de entrada para obtener más información. Si configuras la entrada en “todas”, se inhabilita la aplicación de los Controles del servicio de VPC.

Audita los servicios existentes para el cumplimiento de los Controles del servicio de VPC

Después de configurar los Controles del servicio de VPC, se verificará de manera automática si las funciones nuevas creadas en los proyectos que están en el perímetro de servicio cumplen con estos controles. Sin embargo, para evitar la interrupción de las cargas de trabajo existentes, las funciones establecidas seguirán operando y es posible que no cumplan con las políticas de la organización.

Google recomienda que audites tus servicios de forma periódica para asegurarte de que la configuración de entrada y salida cumpla con los requisitos, y actualice o vuelvas a implementar los servicios según sea necesario. Por ejemplo, puedes crear una secuencia de comandos que use la API de Cloud Run Admin para enumerar tus servicios y destacar aquellos que no especifiquen la configuración de red adecuada.