Controles de Servicio de VPC es una Google Cloud función
que te permite configurar un perímetro seguro para protegerte frente a la filtración externa de datos.
Tanto la URL run.app
predeterminada como los dominios personalizados están sujetos a Controles de Servicio de VPC.
En esta guía se muestra cómo usar Controles de Servicio de VPC con Cloud Run para añadir seguridad adicional a tus servicios.
Limitaciones y advertencias
En Artifact Registry o Container Registry:
- El registro en el que almacenas tu contenedor debe estar en el mismo perímetro de servicio de Controles de Servicio de VPC que el proyecto en el que vas a implementar el contenedor.
- El código que se está compilando debe estar en el mismo perímetro que el registro al que se está enviando el contenedor.
La función de despliegue continuo no está disponible en los proyectos que se encuentran dentro de un perímetro de Controles de Servicio de VPC.
Cuando se invocan servicios de Cloud Run, la aplicación de la política de Controles de 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 políticas de entrada de Controles de Servicio de VPC que usan principales de IAM.
- No se admiten niveles de acceso para los perímetros de Controles de Servicio de VPC que usen principales de IAM.
Configurar tu organización para que admita Controles de Servicio de VPC
Para usar Controles de Servicio de VPC con Cloud Run, puedes configurar un perímetro de servicio a nivel de organización. Si configuras las políticas de la organización adecuadas, puedes asegurarte de que se apliquen las comprobaciones de Controles de Servicio de VPC al usar Cloud Run y de que los desarrolladores solo puedan desplegar servicios que cumplan los requisitos de Controles de Servicio de VPC. Consulta más información sobre la herencia y las infracciones al definir una política de la organización.
Si vas a desplegar funciones de Cloud Run con gcloud functions
, tú o tu administrador debéis conceder acceso a la cuenta de servicio de Cloud Build en el perímetro de Controles de Servicio de VPC. Consulta la descripción general del proceso de compilación para obtener más información.
Configurar un perímetro de Controles de Servicio de VPC
En los siguientes pasos se muestra cómo configurar un perímetro de Controles de Servicio de VPC.
Asegúrate de que tienes los roles necesarios para gestionar Controles de Servicio de VPC.
En la Google Cloud consola, ve a la página Controles de Servicio de VPC.
Si se te solicita, selecciona tu organización.
Haz clic en Gestionar políticas de acceso. Selecciona una política de acceso o crea una. La política de acceso debe incluir todos los proyectos que quieras añadir al perímetro.
Haz clic en Nuevo perímetro. Escribe un nombre para el perímetro.
Selecciona los proyectos que quieras proteger dentro del perímetro.
Haz clic en Proyectos.
En la ventana Añadir proyectos, selecciona los proyectos que quieras añadir.
Si usas VPC compartida, asegúrate de añadir el proyecto host y los proyectos de servicio.
Haz clic en el botón Añadir proyectos.
Selecciona Cloud Run como el servicio que quieres proteger dentro del perímetro.
Haz clic en Servicios restringidos.
Haz clic en Añadir servicios.
Busca "Cloud Run". A continuación, selecciona API Admin de Cloud Run. (Seleccione API Cloud Functions V2 si ha usado
gcloud functions
).Haz clic en Añadir API Admin de Cloud Run (o en API Cloud Functions V2 si has usado
gcloud functions
).
Habilita el acceso para desarrolladores.
Si activas Controles de Servicio de VPC en Cloud Run, se impedirá el acceso desde fuera del perímetro, lo que incluye ver y desplegar servicios desde máquinas que no estén en el perímetro, como portátiles de la empresa. Para que los desarrolladores y los operadores de aplicaciones puedan ver y desplegar recursos dentro del perímetro, debes configurar la política de entrada del perímetro:
Haz clic en Ingress Policy (Política de entrada).
Especifica el origen, la identidad, el proyecto y los servicios.
Haz clic en Add Rule (Añadir regla).
Si tu organización usa el Administrador de contextos de acceso, también puedes habilitar el acceso para desarrolladores configurando niveles de acceso.
Haz clic en Crear perímetro.
Una vez que hayas completado estos pasos, se comprobará que todas las llamadas a la API Cloud Run Admin proceden del mismo perímetro.
Configurar políticas de organización
Para gestionar las políticas de organización, necesitas el rol Administrador de políticas de organización (roles/orgpolicy.policyAdmin
).
Para cumplir con Controles de Servicio de VPC y protegerte frente a la filtración de datos, configura las siguientes políticas de la organización que controlan los ajustes de entrada y salida permitidos para Cloud Run en el perímetro de servicio.
Restringir la configuración de entrada permitida
La política de organización run.allowedIngress
controla los ajustes de entrada
que pueden usar los desarrolladores en Cloud Run. Define esta política de organización para obligar a los desarrolladores a usar el valor internal
si solo quieres permitir solicitudes internas, o internal-and-cloud-load-balancing
si quieres permitir solicitudes a través de un balanceador de carga de aplicaciones externo, con los controles de acceso gestionados por Cloud Load Balancing.
Para obtener más información sobre estos ajustes, consulta Restringir el tráfico entrante en Cloud Run.
Consola
Ve a la página de la política Configuración de entrada permitida (Cloud Run) en la consola deGoogle Cloud :
Haz clic en Editar.
En la página Editar, selecciona Personalizar.
En Cumplimiento de las políticas, selecciona Reemplazar.
En Valores de la política, selecciona Personalizado.
En Tipo de política, selecciona Permitir.
En Valores personalizados, introduce
internal
. Si también quiere permitir el tráfico de Cloud Load Balancing, haga clic en Nuevo valor de política e introduzcainternal-and-cloud-load-balancing
.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
donde ORGANIZATION_ID
es el ID de tu organización.
Si también quieres permitir el tráfico de Cloud Load Balancing, sustituye run.allowedIngress internal
por run.allowedIngress internal-and-cloud-load-balancing
.
Una vez que se haya implementado esta política de organización, todos los servicios deberán usar los valores permitidos para su configuración de entrada. Esto significa que los servicios de Cloud Run solo pueden aceptar tráfico procedente de una red de VPC dentro del perímetro de servicio. La política de la organización bloqueará los intentos de definir un valor diferente para el tráfico de entrada.
Restringir la configuración de salida de VPC permitida
La política de organización run.allowedVPCEgress
controla los ajustes de salida que pueden usar los desarrolladores en Cloud Run. Define esta política de organización para permitir solo el valor all-traffic
:
Consola
Ve a la página de la política Configuración de salida de VPC permitida (Cloud Run) en la consola:Google Cloud
Haz clic en Editar.
En la página Editar, selecciona Personalizar.
En Cumplimiento de las políticas, selecciona Reemplazar.
En Valores de la política, selecciona Personalizado.
En Tipo de política, selecciona Permitir.
En Valores personalizados, introduce
all-traffic
.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
donde ORGANIZATION_ID
es el ID de tu organización.
Comportamiento después de definir la política de organización
Una vez que se haya implementado 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 servidor, así como el valor all-traffic
en su configuración de salida. Esta combinación dirige todo el tráfico de salida de estas revisiones a través de una red VPC, lo que somete este tráfico a las reglas de firewall y a otros ajustes de la red VPC. La política de organización bloquea los despliegues de revisiones nuevas que especifican un valor diferente.
Políticas de organización y migraciones de tráfico
En el caso de los servicios que ya existían antes de que se definiera la política de la organización, puedes seguir migrando el tráfico a revisiones que no cumplan la política hasta que todas las revisiones que sirven tráfico cumplan la política.
Este comportamiento te permite probar y lanzar gradualmente nuevas revisiones que cumplan la política. Una vez que todas las revisiones que sirven tráfico cumplan la política, la política de la organización bloqueará cualquier intento de mover tráfico a revisiones que no la cumplan.
Configurar un proyecto para que sea compatible con Controles de Servicio de VPC
En el caso de los proyectos individuales que se encuentren dentro del perímetro de servicio, debes realizar una configuración adicional para usar Controles de Servicio de VPC.
Configurar redes de VPC
En esta sección se muestra cómo configurar tu red de VPC para que las solicitudes enviadas a los dominios googleapis.com
normales se enruten automáticamente al intervalo de IP virtual (VIP) restringido 199.36.153.4/30
(restricted.googleapis.com
) en el que se ofrece tu servicio de Cloud Run. No es necesario realizar cambios en el código.
Para cada red VPC de un proyecto, sigue estos pasos para bloquear el tráfico saliente, excepto el tráfico al intervalo de IPs virtuales restringido:
Habilita el acceso privado de Google en las subredes que alojan los recursos de tu red de VPC.
Configura reglas de cortafuegos para evitar que los datos salgan de la red de VPC:
Crea una regla de denegación de salida que bloquee todo el tráfico saliente.
Crea una regla de salida que permita el tráfico a
199.36.153.4/30
en el puerto TCP 443. Asegúrate de que tenga una prioridad antes que la regla de denegación de salida que acabas de crear. De esta forma, solo se permitirá la salida al intervalo de VIP restringido.
Crea una política de respuesta de Cloud DNS.
gcloud dns response-policies create RESPONSE_POLICY \ --networks=NETWORK \ --description=DESCRIPTION
Haz los cambios siguientes:
RESPONSE_POLICY
: el nombre de tu política de respuesta.NETWORK
: el nombre de la red que se va a asociar a esta política. Para especificar varias redes, separa los nombres de cada red con comas. Por ejemplo:network1,network2
.DESCRIPTION
: una descripción de la política de respuesta, comoCloud Run VPC Service Controls response policy
Añade una regla a la política de respuesta para resolver
*.googleapis.com
arestricted.googleapis.com
. El intervalo de direcciones IP derestricted.googleapis.com
es199.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"
Haz los cambios siguientes:
RESPONSE_POLICY_RULE
: un nombre para la regla de la política de respuestas.RESPONSE_POLICY
: el nombre de la política de respuesta que has creado en el paso anterior, entre comillas.
Añade una regla a la política de respuesta para resolver
*.run.app
(o*.cloudfunctions.net
si has creado tu función congcloud functions deploy
) en larestricted.googleapis.com
. El intervalo de direcciones IP derestricted.googleapis.com
es199.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"
Haz los cambios siguientes:
RESPONSE_POLICY_RULE
: un nombre para la regla de la política de respuestas.RESPONSE_POLICY
: el nombre de la política de respuesta que has especificado en el paso anterior, entre comillas.
En este punto, las solicitudes que se originan en la red de VPC:
- No pueden salir de la red de VPC, lo que impide el tráfico saliente fuera del perímetro de servicio.
- Solo puede acceder a las APIs y los servicios de Google que comprueban los controles de servicio de VPC, lo que evita la exfiltración a través de las APIs de Google.
Desplegar servicios y trabajos de Cloud Run que cumplan los requisitos de Controles de Servicio de VPC
Una vez que hayas configurado Controles de Servicio de VPC para Cloud Run, asegúrate de que todos los servicios y trabajos de Cloud Run implementados en el perímetro de servicio tengan habilitado Controles de Servicio de VPC. Para ello, se necesita lo siguiente:
- Los servicios y los trabajos de Cloud Run deben usar la salida directa de VPC o un conector de acceso a VPC sin servidor. Para obtener más información, consulta el artículo Conectarse a una red de VPC.
- Los servicios y los trabajos de Cloud Run deben dirigir todo el tráfico saliente a través de la red de VPC. Para obtener más información, consulta Ajustes de salida.
- Los servicios de Cloud Run solo deben permitir el tráfico de fuentes internas. Para obtener más información, consulta Ajustes de entrada. Si se define el acceso de entrada como "all", se inhabilita la aplicación de Controles de Servicio de VPC.
Auditar los servicios para comprobar si cumplen los requisitos de Controles de Servicio de VPC
Después de configurar Controles de Servicio de VPC, se comprueba automáticamente si los nuevos servicios creados en proyectos dentro del perímetro de servicio cumplen los requisitos. Sin embargo, para evitar que se interrumpan las cargas de trabajo, los servicios actuales seguirán funcionando y es posible que no cumplan las políticas de la organización.
Google recomienda que audites periódicamente tus servicios para asegurarte de que tus ajustes de entrada y salida cumplen los requisitos, y que actualices o vuelvas a implementar los servicios según sea necesario. Por ejemplo, puedes crear una secuencia de comandos que use la API Admin de Cloud Run para enumerar tus servicios y destacar aquellos que no especifiquen la configuración de red adecuada.