Conectarse a una red de VPC
Te recomendamos que uses la salida de VPC directa para enviar tráfico a una red de VPC sin necesidad de usar un conector.
Sin embargo, si no puedes usar la salida de VPC directa, puedes configurar un conector de acceso a VPC sin servidor. En esta página se explica cómo conectar un servicio o un trabajo de Cloud Run a tu red de VPC con un conector, lo que permite que el tráfico de salida de Cloud Run se dirija a instancias de máquina virtual de Compute Engine, instancias de Memorystore y cualquier otro recurso con una dirección IP interna.
Antes de empezar
Si aún no tienes una red de VPC en tu proyecto, crea una.
Si utilizas una VPC compartida, consulta la documentación específica sobre la configuración de Acceso a VPC sin servidor para tu producto.
- Cloud Run: Conectarse a una red de VPC compartida
- Funciones de Cloud Run: conectarse a una red de VPC compartida
- App Engine: Conectarse a una red de VPC compartida
Si tienes una restricción de política de la organización que impide el uso de Cloud Deployment Manager, no podrás crear ni eliminar conectores de acceso a VPC sin servidor. Para crear o eliminar un conector, se necesita la función Deployment Manager.
Si has configurado una política de imágenes de confianza para tu proyecto, asegúrate de permitir el
serverless-vpc-access-images
proyecto en la política de la organizaciónconstraints/compute.trustedimageProjects
.Requisitos de la subred del conector
Cada conector requiere su propia subred
PRIVATE
con un intervalo de direcciones IPv4 principales/28
. Otros recursos, como máquinas virtuales, Private Service Connect o balanceadores de carga, no pueden usar esta subred. Una vez creado el conector, no se puede ampliar la subred. Debe seguir siendo un/28
.Para crear un conector en un proyecto de servicio que utilice una red de VPC compartida en un proyecto del host, un administrador de red de la red de VPC compartida debe crear manualmente la subred del conector antes de que puedas crear el conector.
Para determinar si un conector puede usar una subred creada manualmente, describe la subred:
gcloud compute networks subnets describe SUBNET --region=REGION
Sustituye SUBNET por el nombre de la subred y REGION por la región que contiene la subred.
En el resultado, comprueba lo siguiente:
- La subred es una subred normal. En Google Cloud CLI, esto significa que el valor de purpose es
PRIVATE
. - El intervalo de direcciones IPv4 principal de la subred,
ipCidrRange
, es un/28
.
- La subred es una subred normal. En Google Cloud CLI, esto significa que el valor de purpose es
Si necesitas crear un conector de acceso a VPC sin servidor en el mismo proyecto que contiene la red VPC que usa el conector, puedes crear manualmente la subred del conector antes de crear el conector o Google Cloud crear la subred del conector automáticamente.
Cuando Google Cloud crea una subred para un conector, tenga en cuenta lo siguiente:
Las subredes creadas automáticamente para los conectores no se ven cuando listar subredes, independientemente de si usas la consola de Google Cloud, la CLI de Google Cloud o la API Compute Engine. Google Cloud
Las subredes creadas automáticamente para conectores no se pueden describir.
Las subredes creadas automáticamente se incluyen en la lista de subredes que se muestra cuando describe una red VPC.
Para obtener más información sobre las subredes, incluido cómo enumerar las que ya existen para determinar qué intervalos de direcciones IP se están usando, consulta el artículo Trabajar con subredes.
Limitaciones
No se admite el tráfico IPv6.
Crear conector
Para enviar solicitudes a tu red de VPC y recibir las respuestas correspondientes sin usar Internet pública, puedes usar un conector de acceso a VPC sin servidor.
Si tu conector se encuentra en el mismo proyecto que su red de VPC, puedes crear un conector con una subred que ya tengas o crear un conector y una subred.
Si tu conector se encuentra en un proyecto de servicio y utiliza una red de VPC compartida, el conector y su red de VPC asociada estarán en proyectos diferentes. Cuando un conector y su red de VPC están en proyectos diferentes, un administrador de la red de VPC compartida debe crear la subred del conector en la red de VPC compartida antes de que puedas crear el conector y debes crear el conector con una subred que ya exista.
Para obtener más información sobre los requisitos de las subredes, consulta los requisitos de las subredes de conectores.
Para obtener información sobre el rendimiento de los conectores, incluidos el tipo de máquina y el escalado, consulta Rendimiento y escalado.
Puedes crear un conector mediante la Google Cloud consola, la CLI de Google Cloud o Terraform.
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Haz clic en Crear conector.
En el campo Nombre, introduzca un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine, así como los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.
En el campo Región, selecciona una región para tu conector. Debe coincidir con la región de tu servicio sin servidores.
Si tu servicio o trabajo se encuentra en la región
us-central
oeurope-west
, usaus-central1
oeurope-west1
.En el campo Red, selecciona la red de VPC a la que quieras adjuntar el conector.
En el campo Subred, seleccione una de las siguientes opciones:
Crear un conector con una subred: seleccione la subred en el campo Subred.
Crear un conector y una subred: selecciona Intervalo de IP personalizado en el campo Subred. A continuación, introduce la primera dirección de un
/28
CIDR que no esté en uso (por ejemplo,10.8.0.0/28
) para usarla como intervalo de direcciones IPv4 principal de una nueva subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".
(Opcional) Para definir opciones de escalado y tener más control sobre el conector, haz clic en Mostrar ajustes de escalado para que se muestre el formulario de escalado.
- Define el número mínimo y máximo de instancias de tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se amplía hasta el máximo especificado si el uso del tráfico lo requiere, pero no se reduce cuando el tráfico disminuye. Debes usar valores entre
2
y10
. - En el menú Tipo de instancia, elige el tipo de máquina que se va a usar para el conector o usa el valor predeterminado
e2-micro
. Fíjate en la barra lateral de costes de la derecha cuando elijas el tipo de instancia, que muestra las estimaciones de ancho de banda y costes.
- Define el número mínimo y máximo de instancias de tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se amplía hasta el máximo especificado si el uso del tráfico lo requiere, pero no se reduce cuando el tráfico disminuye. Debes usar valores entre
Haz clic en Crear.
Cuando el conector esté listo para usarse, aparecerá una marca de verificación de color verde junto a su nombre.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API Acceso a VPC sin servidor esté habilitada en tu proyecto:
gcloud services enable vpcaccess.googleapis.com
Crea el conector con una de las siguientes opciones:
Para obtener más información y argumentos opcionales, consulta la
gcloud
referencia.Crea un conector con una subred que ya tengas:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Haz los cambios siguientes:
CONNECTOR_NAME
: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.REGION
: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es enus-central
oeurope-west
, usaus-central1
oeurope-west1
.SUBNET_NAME
: el nombre de la subred.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida. Si el conector y la subred ya creada se encuentran en el mismo proyecto, omite la marca--subnet-project
.MIN
: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre2
(el valor predeterminado) y9
.MAX
: número máximo de instancias que se van a usar en el conector. Usa un número entero entre3
y10
(el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.MACHINE_TYPE
: debe ser uno de los siguientes valores:f1-micro
,e2-micro
oe2-standard-4
.
Crear un conector y una subred:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Haz los cambios siguientes:
CONNECTOR_NAME
: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.REGION
: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es enus-central
oeurope-west
, usaus-central1
oeurope-west1
.VPC_NETWORK
: el nombre de la red VPC a la que quieres adjuntar el conector. El conector y la red VPC deben estar en el mismo proyecto.IP_RANGE
: proporciona un CIDR/28
que no esté en uso (por ejemplo,10.8.0.0/28
) para usarlo como intervalo de direcciones IPv4 principal de una subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".MIN
: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre2
(el valor predeterminado) y9
.MAX
: número máximo de instancias que se van a usar en el conector. Usa un número entero entre3
y10
(el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.MACHINE_TYPE
: debe ser uno de los siguientes valores:f1-micro
,e2-micro
oe2-standard-4
.
Verifica que el conector esté en el estado
READY
antes de usarlo:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Haz los cambios siguientes:
CONNECTOR_NAME
: el nombre del conector, que es el que has especificado en el paso anterior.REGION
: la región de tu conector. Es la región que especificaste en el paso anterior.
El resultado debe contener la línea
state: READY
.
Terraform
Puede usar un recurso de Terraform para habilitar la API vpcaccess.googleapis.com
.
Puedes usar módulos de Terraform para crear una red VPC y una subred, y, a continuación, crear el conector.
Configurar un entorno sin servidores para usar un conector
Después de crear un conector de Acceso a VPC sin servidor, configura tu entorno sin servidor para que lo use siguiendo las instrucciones correspondientes:
- Configurar Cloud Run
- Configurar Cloud Run Functions
- Configurar App Engine
Configurar Cloud Run para usar un conector
Cuando creas un servicio o despliegas una revisión, puedes configurar el servicio para que use un conector mediante la consola de Google Cloud , la CLI de Google Cloud, un archivo YAML o un recurso de Terraform.
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Conexiones.
- En el campo Conector de VPC, selecciona un conector que quieras usar o Ninguno para desconectar tu servicio de una red de VPC.
Haz clic en Crear o en Implementar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para especificar un conector durante la implementación, usa la marca
--vpc-connector
:gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
- Sustituye
SERVICE
por el nombre de tu servicio. - Reemplazar
IMAGE_URL
. - Sustituye
CONNECTOR_NAME
por el nombre de tu conector. Si tu conector está en el proyecto host de una VPC compartida, debe ser el nombre completo, por ejemplo: donde HOST_PROJECT_ID es el ID del proyecto host, CONNECTOR_REGION es la región de tu conector y CONNECTOR_NAME es el nombre que le has dado al conector.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
Para adjuntar, actualizar o quitar un conector de un servicio, usa el comando
gcloud run services update
con una de las siguientes marcas, según sea necesario:Por ejemplo, para adjuntar o actualizar un conector, haz lo siguiente:
gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
- Sustituye
SERVICE
por el nombre de tu servicio. - Sustituye
CONNECTOR_NAME
por el nombre de tu conector.
- Sustituye
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Añada o actualice el atributo
run.googleapis.com/vpc-access-connector
en el atributoannotations
, que a su vez se encuentra en el atributospec
de nivel superior:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
- Sustituye
SERVICE
por el nombre de tu servicio de Cloud Run. - Sustituye
CONNECTOR_NAME
por el nombre de tu conector. Si tu conector está en el proyecto host de una VPC compartida, debe ser el nombre completo, por ejemplo: donde HOST_PROJECT_ID es el ID del proyecto host, CONNECTOR_REGION es la región de tu conector y CONNECTOR_NAME es el nombre que le has dado al conector.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
- Sustituye
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud beta run services replace service.yaml
YAML
Terraform
Puedes usar un recurso de Terraform para crear un servicio y configurarlo de forma que use tu conector.
Configurar funciones de Cloud Run para usar un conector
Puedes configurar una función para que use un conector desde la Google Cloud consola o la CLI de Google Cloud:
Consola
Ve a la página de descripción general de Cloud Run Functions en laGoogle Cloud consola:
Haz clic en Crear función. También puedes hacer clic en una función para ir a su página de detalles y, a continuación, en Editar.
Despliega la configuración avanzada haciendo clic en CONFIGURACIÓN DE TIEMPO DE EJECUCIÓN, COMPILACIÓN Y CONEXIONES.
En la pestaña Conexiones de la configuración de salida, introduce el nombre del conector en el campo Conector de VPC.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
gcloud functions deploy
para desplegar la función y especifica la marca--vpc-connector
:gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
donde:
FUNCTION_NAME
es el nombre de tu función.CONNECTOR_NAME
es el nombre del conector. Si tu conector está en el proyecto host de una VPC compartida, debe ser el nombre completo, por ejemplo: donde HOST_PROJECT_ID es el ID del proyecto host, CONNECTOR_REGION es la región de tu conector y CONNECTOR_NAME es el nombre que le has dado al conector.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
FLAGS...
hace referencia a otras marcas que se transfieren durante la implementación de funciones.
Para tener más control sobre las solicitudes que se enrutan a través del conector, consulta Ajustes de salida.
.Configurar App Engine para usar un conector
Python 2
Dejar de usar el servicio de obtención de URLs de App Engine.
De forma predeterminada, todas las solicitudes se enrutan a través del servicio de obtención de URLs. Esto provoca que las solicitudes a tu red de VPC fallen. Para inhabilitar este valor predeterminado, consulta Inhabilitar la obtención de URLs para que gestione todas las solicitudes salientes.
Si es necesario, puedes seguir usando la biblioteca
urlfetch
directamente para solicitudes concretas, pero no es recomendable.Añade el campo Acceso a VPC sin servidor al archivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Haz los cambios siguientes:
PROJECT_ID
por el ID de tu proyecto. Google Cloud Si tu conector está en el proyecto host de una VPC compartida, debe ser el ID del proyecto host.REGION
con la región en la que se encuentra tu conector.CONNECTOR_NAME
con el nombre del conector.
Despliega el servicio:
gcloud app deploy
Una vez que hayas desplegado el servicio, podrá enviar solicitudes a direcciones IP internas para acceder a los recursos de tu red de VPC.
Java 8
Dejar de usar el servicio de obtención de URLs de App Engine.
URLFetchService
Añade el elemento de acceso a VPC sin servidor al archivo
appengine-web.xml
de tu servicio:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector>
Haz los cambios siguientes:
PROJECT_ID
por el ID de tu proyecto. Google Cloud Si tu conector está en el proyecto host de una VPC compartida, debe ser el ID del proyecto host.REGION
con la región en la que se encuentra tu conector.CONNECTOR_NAME
con el nombre del conector.
Despliega el servicio:
gcloud app deploy WEB-INF/appengine-web.xml
Una vez que hayas desplegado el servicio, podrá enviar solicitudes a direcciones IP internas para acceder a los recursos de tu red de VPC.
Go 1.11
Dejar de usar el servicio de obtención de URLs de App Engine.
Acceso a VPC sin servidor no admite la obtención de URLs y las solicitudes realizadas mediante la obtención de URLs ignorarán la configuración de Acceso a VPC sin servidor. Establece conexiones salientes con sockets.
Añade el campo Acceso a VPC sin servidor al archivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Haz los cambios siguientes:
PROJECT_ID
con el ID de tu proyecto Google CloudREGION
con la región en la que se encuentra tu conectorCONNECTOR_NAME
con el nombre del conector
Despliega el servicio:
gcloud app deploy
Una vez que hayas desplegado el servicio, podrá enviar solicitudes a direcciones IP internas para acceder a los recursos de tu red de VPC.
Todos los demás tiempos de ejecución
Añade el campo Acceso a VPC sin servidor al archivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Haz los cambios siguientes:
PROJECT_ID
por el ID de tu proyecto. Google Cloud Si tu conector está en el proyecto host de una VPC compartida, debe ser el ID del proyecto host.REGION
con la región en la que se encuentra tu conector.CONNECTOR_NAME
con el nombre del conector.
Despliega el servicio:
gcloud app deploy
Una vez que hayas desplegado el servicio, podrá enviar solicitudes a direcciones IP internas para acceder a los recursos de tu red de VPC.
Configurar reglas de cortafuegos para conectores
Reglas de cortafuegos necesarias para los conectores de proyectos de servicio
Si creas un conector en una red VPC independiente o en el proyecto host de una red VPC compartida, Google Cloud crea todas las reglas de cortafuegos necesarias para que el conector funcione. Para obtener más información, consulta Reglas de cortafuegos para conectores en redes de VPC independientes o proyectos host de VPC compartida.
Sin embargo, si creas un conector en un proyecto de servicio y el conector tiene como destino una red de VPC compartida en el proyecto del host, debes añadir reglas de cortafuegos para permitir el tráfico necesario para el funcionamiento del conector desde los siguientes intervalos:
- Intervalo de IPs de la infraestructura sin servidor:
35.199.224.0/19
- Intervalos de IPs de sondeo de comprobación del estado:
35.191.0.0/16
,35.191.192.0/18
y130.211.0.0/22
La infraestructura de Google subyacente a Cloud Run, las funciones de Cloud Run y el entorno estándar de App Engine usa estos intervalos. Todas las solicitudes de estas direcciones IP proceden de la infraestructura de Google para asegurarse de que cada recurso sin servidor solo se comunica con el conector al que está conectado.
También debes permitir el tráfico de la subred del conector a los recursos de tu red de VPC.
Para llevar a cabo estos pasos, debes tener uno de los siguientes roles en el proyecto host:
- Rol de propietario (
roles/owner
) - Rol Administrador de seguridad de Compute (
roles/compute.securityAdmin
) - Rol Gestión de Identidades y Accesos (IAM) personalizado con el permiso
compute.firewalls.create
habilitado
Para una configuración básica, aplica las reglas para permitir que los recursos sin servidor de cualquier proyecto de servicio conectado a la red de VPC compartida envíen solicitudes a cualquier recurso de la red.
Para aplicar estas reglas, ejecuta los siguientes comandos en el proyecto host:
Crea reglas de cortafuegos que permitan que las solicitudes de la infraestructura sin servidor de Google y las comprobaciones del estado lleguen a todos los conectores de la red. En estos comandos, los puertos UDP y TCP se usan como proxies y para las comprobaciones de estado HTTP, respectivamente. No cambies los puertos especificados.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
Sustituye
VPC_NETWORK
por el nombre de la red VPC a la que quieras conectar tu conector.Crea una regla de cortafuegos de entrada en tu red de VPC para permitir las solicitudes de los conectores que tengan como destino esta red:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Esta regla da al conector acceso a todos los recursos de la red. Para limitar los recursos a los que puede acceder tu entorno sin servidor mediante el acceso a VPC sin servidor, consulta Restringir el acceso de la VM del conector a los recursos de la red de VPC.
Crear reglas de cortafuegos para conectores específicos
Si sigues el procedimiento que se describe en Reglas de cortafuegos obligatorias para los conectores de proyectos de servicio, se crearán reglas de cortafuegos que se aplicarán a todos los conectores, tanto a los actuales como a los que se creen en el futuro. Si no quieres que esto ocurra y, en su lugar, quieres crear reglas solo para conectores específicos, puedes acotar las reglas para que se apliquen únicamente a esos conectores.
Para limitar el ámbito de las reglas a conectores específicos, puedes usar uno de los siguientes mecanismos:
- Etiquetas de red: cada conector tiene dos etiquetas de red:
vpc-connector
yvpc-connector-REGION-CONNECTOR_NAME
. Usa el segundo formato para limitar el ámbito de tus reglas de cortafuegos a un conector específico. - Intervalos de IP: úsalo solo para las reglas de salida, ya que no funciona con las reglas de entrada. Puedes usar el intervalo de IPs de la subred del conector para limitar el ámbito de tus reglas de cortafuegos a un solo conector de VPC.
Restringir el acceso de la VM del conector a los recursos de la red de VPC
Puedes restringir el acceso de tu conector a los recursos de su red de VPC de destino mediante reglas de cortafuegos de VPC o reglas de políticas de cortafuegos. Puedes aplicar estas restricciones mediante una de las siguientes estrategias:
- Crea reglas de entrada cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector y cuyos orígenes representen las VMs del conector.
- Crea reglas de salida cuyos destinos representen las VMs del conector y cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector.
En los siguientes ejemplos se ilustra cada estrategia.
Restringir el acceso mediante reglas de entrada
Elige etiquetas de red o intervalos CIDR para controlar el tráfico entrante a tu red de VPC.
Etiquetas de red
En los pasos siguientes se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función de las etiquetas de red del conector.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico del conector en tu red VPC.
Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde la etiqueta de red del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu red de VPC de forma predeterminada.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico.
- Etiqueta de red universal:
vpc-connector
Etiqueta de red única:
vpc-connector-REGION-CONNECTOR_NAME
Sustituye:
- REGION: la región del conector que quieras restringir
- CONNECTOR_NAME: el nombre del conector que quieras restringir
Para obtener más información sobre las etiquetas de red de conectores, consulta Etiquetas de red.
- Etiqueta de red universal:
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico del conector al recurso que debería recibirlo.
Usa las marcas
allow
ytarget-tags
para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico. Debe coincidir con la etiqueta de red que ha especificado en el paso anterior.
- Etiqueta de red universal:
vpc-connector
Etiqueta de red única:
vpc-connector-REGION-CONNECTOR_NAME
Sustituye:
- REGION: la región del conector que quieras restringir
- CONNECTOR_NAME: el nombre del conector que quieras restringir
Para obtener más información sobre las etiquetas de red de conectores, consulta Etiquetas de red.
- Etiqueta de red universal:
VPC_NETWORK: el nombre de tu red de VPC
RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Intervalo CIDR
En los pasos siguientes se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red VPC en función del intervalo CIDR del conector.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico del conector en tu red VPC.
Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde el intervalo CIDR del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu red de VPC de forma predeterminada.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico del conector al recurso que debería recibirlo.
Usa las marcas
allow
ytarget-tags
para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso estás restringiendo
VPC_NETWORK: el nombre de tu red de VPC
RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Restringir el acceso mediante reglas de salida
En los siguientes pasos se muestra cómo crear reglas de salida para restringir el acceso a los conectores.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico de salida de tu conector.
Crea una regla de cortafuegos de salida en tu conector de acceso a VPC sin servidor para evitar que envíe tráfico saliente a cualquier destino, excepto las respuestas establecidas.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico.
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico de salida cuando el destino esté en el intervalo CIDR al que quieras que acceda tu conector.
Usa las marcas
allow
ydestination-ranges
para crear una regla de cortafuegos que permita el tráfico de salida de tu conector a un intervalo de destino específico. Define el intervalo de destino como el intervalo CIDR del recurso de tu red de VPC al que quieras que pueda acceder tu conector. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.RESOURCE_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir
VPC_NETWORK: el nombre de tu red de VPC
VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico. Si ha usado la etiqueta de red única en el paso anterior, use la etiqueta de red única.
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Actualizar un conector
Puede actualizar y monitorizar los siguientes atributos de su conector mediante la Google Cloud consola, la CLI de Google Cloud o la API:
- Tipo de máquina (instancia)
- Número mínimo y máximo de instancias
- Rendimiento reciente, número de instancias y uso de CPU
Actualizar el tipo de máquina
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Selecciona el conector que quieras editar y haz clic en Editar.
En la lista Tipo de instancia, selecciona el tipo de máquina (instancia) que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para actualizar el tipo de máquina del conector, ejecuta el siguiente comando en el terminal:
Sustituye lo siguiente:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorMACHINE_TYPE
: el tipo de máquina que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.
Reducir el número mínimo y máximo de instancias
Para reducir el número mínimo y máximo de instancias, debes hacer lo siguiente:
- Crea un conector con los valores que prefieras.
- Actualiza tu servicio o función para usar el nuevo conector.
- Elimina el conector antiguo cuando hayas migrado su tráfico.
Aumentar el número mínimo y máximo de instancias
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Selecciona el conector que quieras editar y haz clic en Editar.
En el campo Instancias mínimas, selecciona el número mínimo de instancias que prefieras.
El valor más pequeño posible de este campo es el valor actual. El valor más alto posible de este campo es el valor actual del campo Número máximo de instancias menos 1. Por ejemplo, si el valor del campo Máximo de instancias es 8, el valor más alto posible del campo Mínimo de instancias es 7.
En el campo Número máximo de instancias, selecciona el número máximo de instancias que prefieras.
El valor más pequeño posible de este campo es el valor actual. El valor máximo posible de este campo es 10.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para aumentar el número mínimo o máximo de instancias del conector, ejecuta el siguiente comando en tu terminal:
Sustituye lo siguiente:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorMIN_INSTANCES
: el número mínimo de instancias que prefieras.- El valor más pequeño posible de este campo es el valor actual de
min_instances
. Para ver el valor actual, consulte Buscar los valores de atributo actuales. - El valor más alto posible para este campo es el valor actual de
max_instances
menos 1, ya quemin_instances
debe ser inferior amax_instances
. Por ejemplo, simax_instances
es 8, el valor más alto posible de este campo es 7. Si tu conector usa el valor predeterminadomax-instances
de 10, el valor máximo posible de este campo es 9. Para encontrar el valor demax-instances
, consulte Buscar los valores de atributo actuales.
- El valor más pequeño posible de este campo es el valor actual de
MAX_INSTANCES
:- El valor más pequeño posible de este campo es el valor actual de
max_instances
. Para ver el valor actual, consulte Buscar los valores de atributo actuales. - El valor máximo posible de este campo es 10.
Si solo quiere aumentar el número mínimo de instancias, pero no el máximo, debe especificar el número máximo de instancias. Por el contrario, si solo quiere actualizar el número máximo de instancias, pero no el mínimo, debe especificar el número mínimo de instancias. Para mantener el número mínimo o máximo de instancias en su valor actual, especifica dicho valor. Para consultar su valor actual, consulte Buscar los valores de atributo actuales.
- El valor más pequeño posible de este campo es el valor actual de
Buscar los valores de atributo actuales
Para encontrar los valores de atributo actuales de tu conector, ejecuta lo siguiente en tu terminal:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorPROJECT
: el nombre de tu Google Cloud proyecto
Monitorizar el uso de conectores
Monitorizar el uso a lo largo del tiempo puede ayudarte a determinar cuándo ajustar la configuración de un conector. Por ejemplo, si la utilización de la CPU aumenta de forma repentina, puede probar a aumentar el número máximo de instancias para obtener mejores resultados. O bien, si estás alcanzando el límite de rendimiento, puedes cambiar a un tipo de máquina más grande.
Para ver gráficos del rendimiento, el número de instancias y las métricas de utilización de CPU del conector a lo largo del tiempo mediante la consola, sigue estos pasos: Google Cloud
Ve a la página de resumen de Acceso a VPC sin servidor.
Haz clic en el nombre del conector que quieras monitorizar.
Seleccione el número de días que quiere mostrar (entre 1 y 90).
En el gráfico Rendimiento, mantén el puntero sobre el gráfico para ver el rendimiento reciente del conector.
En el gráfico Número de instancias, coloque el puntero sobre el gráfico para ver el número de instancias que ha usado recientemente el conector.
En el gráfico Uso de la CPU, mantén el puntero sobre el gráfico para ver el uso reciente de la CPU del conector. El gráfico muestra el uso de la CPU distribuido entre las instancias de los percentiles 50, 95 y 99.
Eliminar un conector
Antes de eliminar un conector, debes quitarlo de los recursos sin servidor que aún lo utilicen. Si eliminas un conector antes de quitarlo de tus recursos sin servidor, no podrás eliminar la red de VPC más adelante.
Los usuarios de la VPC compartida que configuren conectores en el proyecto host de la VPC compartida pueden usar el comando
gcloud compute networks vpc-access connectors describe
para enumerar los proyectos en los que haya recursos sin servidor que usen un conector determinado.
Para eliminar un conector, usa la consola de Google Cloud o Google Cloud CLI:
Consola
Ve a la página de resumen de Acceso a VPC sin servidor en laGoogle Cloud consola:
Selecciona el conector que quieras eliminar.
Haz clic en Eliminar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el siguiente comando
gcloud
para eliminar un conector:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Haz los cambios siguientes:
- CONNECTOR_NAME con el nombre del conector que quieras eliminar
- REGION por la región en la que se encuentra el conector
Gestionar restricciones personalizadas de proyectos
En esta sección se describe cómo crear restricciones personalizadas para los conectores de acceso a VPC sin servidor y cómo aplicarlas a nivel de proyecto. Para obtener información sobre las políticas de organización personalizadas, consulta el artículo Crear y gestionar políticas de organización personalizadas.
Google Cloud La política de organización te ofrece un control centralizado y programático sobre los recursos de tu organización. Como administrador de políticas de la organización, puedes definir una política de la organización, que es un conjunto de restricciones llamadas restricciones que se aplican a losGoogle Cloud recursos y a los elementos descendientes de esos recursos en la Google Cloud jerarquía de recursos. Puedes aplicar políticas de organización a nivel de organización, carpeta o proyecto.
La política de organización proporciona restricciones predefinidas para varios servicios deGoogle Cloud . Sin embargo, si quieres tener un control más granular y personalizable sobre los campos específicos que están restringidos en las políticas de tu organización, también puedes crear políticas de organización personalizadas.
Ventajas
Acceso a VPC sin servidor te permite escribir cualquier número de restricciones personalizadas usando la mayoría de los campos configurados por el usuario en la API Acceso a VPC sin servidor. Por ejemplo, puedes crear una restricción personalizada que especifique qué subredes puede usar un conector de acceso a VPC sin servidor.
Una vez aplicada, las solicitudes que infrinjan una política que aplique una restricción personalizada mostrarán un mensaje de error en la CLI de gcloud y en los registros de acceso a VPC sin servidor. El mensaje de error contiene el ID de la restricción y la descripción de la restricción personalizada infringida.
Herencia de políticas
De forma predeterminada, las políticas de organización se heredan de los descendientes de los recursos en los que apliques la política. Por ejemplo, si aplicas una política a una carpeta, Google Cloud se aplicará a todos los proyectos de la carpeta. Para obtener más información sobre este comportamiento y cómo cambiarlo, consulta las reglas de evaluación de la jerarquía.
Limitaciones
No se admite la especificación del tipo de máquina, el número mínimo de instancias ni el número máximo de instancias.
Antes de empezar
Asegúrate de que conoces el ID de tu organización.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar las políticas de la organización,
pide a tu administrador que te conceda el
rol de gestión de identidades y accesos administrador de políticas de la organización (roles/orgpolicy.policyAdmin
)
en el recurso de la organización.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear una restricción personalizada
Una restricción personalizada se define en un archivo YAML mediante los recursos, los métodos, las condiciones y las acciones que admite el servicio en el que se aplica la política de la organización. Las condiciones de tus restricciones personalizadas se definen mediante el lenguaje de expresión común (CEL). Para obtener más información sobre cómo crear condiciones en restricciones personalizadas con CEL, consulta la sección sobre CEL del artículo Crear y gestionar restricciones personalizadas.
Para crear un archivo YAML para una restricción personalizada de Acceso a VPC sin servidor, consulta el siguiente ejemplo:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Haz los cambios siguientes:
ORGANIZATION_ID
: el ID de tu organización, como123456789
.CONSTRAINT_NAME
: el nombre que quieras asignar a la nueva restricción personalizada. Una restricción personalizada debe empezar porcustom.
y solo puede incluir letras mayúsculas, letras minúsculas o números. Por ejemplo, custom.defaultNetworkConstraint. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo.CONDITION
: una condición CEL que se escribe en una representación de un recurso de servicio compatible. Este campo tiene una longitud máxima de 1000 caracteres. Por ejemplo,"resource.network == default"
.ACTION
: la acción que se debe llevar a cabo si se cumple la condicióncondition
. Puede serALLOW
oDENY
.DISPLAY_NAME
: nombre descriptivo de la restricción. Este campo tiene una longitud máxima de 200 caracteres.DESCRIPTION
: descripción de la restricción que se muestra como mensaje de error cuando se infringe la política. Por ejemplo,"Require network to not be set to default."
Este campo tiene una longitud máxima de 2000 caracteres.
Para obtener más información sobre cómo crear una restricción personalizada, consulta Definir restricciones personalizadas.
Configurar una restricción personalizada
Una vez que hayas creado el archivo YAML de una nueva restricción personalizada, debes configurarla para que esté disponible en las políticas de organización de tu organización. Para configurar una restricción personalizada, usa el comandogcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
por la ruta completa a tu archivo de restricciones personalizadas. Por ejemplo, /home/user/customconstraint.yaml
.
Una vez completado el proceso, las restricciones personalizadas estarán disponibles como políticas de organización en la lista de Google Cloud políticas de organización.
Para verificar que la restricción personalizada existe, usa el comando gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
por el ID del recurso de tu organización.
Para obtener más información, consulta Ver políticas de la organización.
Aplicar una restricción personalizada
Para aplicar una restricción, crea una política de organización que haga referencia a ella y, a continuación, aplica esa política de organización a un Google Cloud recurso.Consola
- En la Google Cloud consola, ve a la página Políticas de la organización.
- En el selector de proyectos, elige el proyecto para el que quieras definir la política de organización.
- En la lista de la página Políticas de organización, selecciona la restricción para ver la página Detalles de la política correspondiente.
- Para configurar la política de la organización de este recurso, haz clic en Gestionar política.
- En la página Editar política, selecciona Anular política del recurso superior.
- Haz clic en Añadir regla.
- En la sección Aplicación, selecciona si quieres activar o desactivar la aplicación de esta política de la organización.
- Opcional: Para que la política de la organización dependa de una etiqueta, haz clic en Añadir condición. Ten en cuenta que, si añades una regla condicional a una política de organización, debes añadir al menos una regla incondicional o la política no se podrá guardar. Para obtener más información, consulta Configurar una política de organización con etiquetas.
- Haz clic en Probar cambios para simular el efecto de la política de la organización. La simulación de políticas no está disponible para las restricciones gestionadas antiguas. Para obtener más información, consulta el artículo Probar los cambios en las políticas de la organización con el simulador de políticas.
- Para finalizar y aplicar la política de organización, haz clic en Definir política. La política tarda hasta 15 minutos en aplicarse.
gcloud
Para crear una política de organización con reglas booleanas, crea un archivo YAML de política que haga referencia a la restricción:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Haz los cambios siguientes:
-
PROJECT_ID
: el proyecto en el que quieras aplicar la restricción. -
CONSTRAINT_NAME
: el nombre que has definido para tu restricción personalizada. Por ejemplo,custom.defaultNetworkConstraint
.
Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:
gcloud org-policies set-policy POLICY_PATH
Sustituye POLICY_PATH
por la ruta completa al archivo YAML de la política de tu organización. La política tarda hasta 15 minutos en aplicarse.
Probar la restricción personalizada
Para probar el ejemplo que restringe la configuración de entrada, implementa un conector en el proyecto con la red configurada como default
:
gcloud compute networks vpc-access connectors create org-policy-test \
--project=PROJECT_ID \
--region=REGION_ID \
--network=default
El resultado es el siguiente:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
Ejemplos de políticas de organización personalizadas para casos prácticos habituales
En la siguiente tabla se muestran ejemplos de restricciones personalizadas que pueden ser útiles con los conectores de Acceso a VPC sin servidor:
Descripción | Sintaxis de las restricciones |
---|---|
Requerir que los conectores de acceso a VPC sin servidor solo puedan usar una red específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.network == 'allowlisted-network'" actionType: ALLOW displayName: allowlistNetworks description: Require connectors to use a specific network. |
Descripción | Sintaxis de las restricciones |
Requerir que los conectores de acceso a VPC sin servidor solo tengan acceso a una subred específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.subnet.name == 'allocated-subnet'" actionType: ALLOW displayName: restrictSubnetForProject description: This project is only allowed to use the subnet "allocated-subnet". |
Configurar el entorno de Cloud Run para que use Direct VPC en lugar de un conector
Puedes habilitar tu servicio de Cloud Run para que envíe tráfico de salida directamente a una red de VPC, lo que permite acceder a instancias de VM de Compute Engine, instancias de Memorystore y cualquier otro recurso con una dirección IP interna.
Configurar el servicio para usar la VPC directa
La salida directa de VPC permite que tu servicio de Cloud Run envíe tráfico a una red de VPC sin un conector de acceso a VPC sin servidor. Los costes de red se reducen a cero al igual que el propio servicio. También puedes añadir etiquetas de red directamente en las revisiones de servicios de Cloud Run para disfrutar de una seguridad de red más granular, como aplicar reglas de cortafuegos de VPC.
Puedes configurar la salida de VPC directa con un servicio mediante laGoogle Cloud consola, la CLI de Google Cloud, YAML o Terraform.
Consola
Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar y desplegar un servicio que ya tiene, haga clic en el servicio y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio según sea necesario y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Redes.
Haz clic en Conectarse a una VPC para el tráfico saliente.
Haz clic en Enviar tráfico directamente a una VPC.
En el campo Red, selecciona la red de VPC a la que quieras enviar tráfico.
En el campo Subred, selecciona la subred de la que tu servicio recibe direcciones IP. Puedes desplegar varios servicios en la misma subred.
Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o servicios. Las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como
network-tag-2
.En Enrutamiento del tráfico, seleccione una de las siguientes opciones:
- Dirige solo las solicitudes a IP privadas a la VPC para enviar solo tráfico a direcciones internas a través de la red VPC.
- Dirige todo el tráfico a la VPC para enviar todo el tráfico de salida a través de la red de VPC.
Haz clic en Crear o en Implementar.
Para verificar que tu servicio está en tu red VPC, haz clic en el servicio y, a continuación, en la pestaña Redes. La red y la subred se muestran en la tarjeta VPC.
Ahora puedes enviar solicitudes desde tu servicio de Cloud Run a cualquier recurso de la red de VPC, tal como lo permitan tus reglas de firewall.
gcloud
Para desplegar un servicio de Cloud Run sin un conector desde la CLI de Google Cloud, sigue estos pasos:
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:
gcloud services enable compute.googleapis.com
Despliega tu servicio de Cloud Run con el siguiente comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sustituye:
- SERVICE_NAME con el nombre de tu servicio de Cloud Run.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
- Opcional:
SUBNET con el nombre de tu subred. La subred debe ser
/26
o mayor. La salida de VPC directa admite los intervalos IPv4 RFC 1918, RFC 6598 y de clase E. Puedes desplegar o ejecutar varios servicios o trabajos en la misma subred, pero esta no se puede compartir con ningún conector. - Opcional: NETWORK_TAG_NAMES con los nombres separados por comas
de las etiquetas de red
que quieras asociar a un servicio. En el caso de los servicios, las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como
network-tag-2
. - EGRESS_SETTING con un
valor de ajuste de salida:
all-traffic
: envía todo el tráfico saliente a través de la red VPC.private-ranges-only
: solo envía tráfico a direcciones internas a través de la red de VPC.
- REGION con una región para tu servicio.
Para verificar que tu servicio está en tu red de VPC, ejecuta el siguiente comando:
gcloud run services describe SERVICE_NAME \ --region=REGION
Sustituye:
SERVICE_NAME
con el nombre de tu servicio.REGION
con la región de tu servicio que has especificado en el paso anterior.
La salida debe contener el nombre de tu red, subred y ajuste de salida. Por ejemplo:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Ahora puedes enviar solicitudes desde tu servicio de Cloud Run a cualquier recurso de la red de VPC, tal como lo permitan tus reglas de firewall.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualice los siguientes atributos:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sustituye:
- SERVICE_NAME con el nombre de tu servicio de Cloud Run. Los nombres de los servicios deben tener 49 caracteres como máximo y ser únicos por región y proyecto.
- REGION por la región de tu servicio de Cloud Run, que debe coincidir con la región de tu subred.
- Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
- Opcional:
SUBNET con el nombre de tu subred. La subred debe ser
/26
o mayor. La salida de VPC directa admite los intervalos IPv4 RFC 1918, RFC 6598 y de clase E. Puedes desplegar o ejecutar varios servicios o trabajos en la misma subred, pero esta no se puede compartir con ningún conector. - Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un servicio. En el caso de los servicios, las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como
network-tag-2
. - EGRESS_SETTING con un
valor de ajuste de salida:
all-traffic
: envía todo el tráfico saliente a través de la red VPC.private-ranges-only
: solo envía tráfico a direcciones internas a través de la red de VPC.
- IMAGE por la URL de la imagen de tu contenedor de servicio.
También puedes especificar más configuración, como variables de entorno o límites de memoria.
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a tu archivo
main.tf
:
Si quieres permitir el acceso al servicio sin autenticación, puedes hacerlo público.
Configurar un trabajo para usar una VPC directa
La salida directa de VPC permite que tu trabajo de Cloud Run envíe tráfico a una red de VPC sin un conector de acceso a VPC sin servidor. También puedes añadir etiquetas de red directamente a los trabajos de Cloud Run para disfrutar de una seguridad de red más granular, como aplicar reglas de cortafuegos de VPC.
Puedes configurar la salida de VPC directa con un trabajo mediante laGoogle Cloud consola, la CLI de Google Cloud o YAML.
Consola
Si vas a configurar un nuevo trabajo, haz clic en la pestaña Trabajos y rellena la página de configuración inicial del trabajo según sea necesario. Si vas a configurar un trabajo que ya existe, haz clic en él y, a continuación, en Editar.
Haz clic en Contenedor, Variables y secretos, Conexiones y Seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
Haz clic en Conectarse a una VPC para el tráfico saliente.
Haz clic en Enviar tráfico directamente a una VPC.
En el campo Red, selecciona la red de VPC a la que quieras enviar el tráfico.
En el campo Subred, selecciona la subred de la que tu trabajo recibe direcciones IP. Puedes ejecutar varios trabajos en la misma subred.
En Enrutamiento del tráfico, seleccione una de las siguientes opciones:
- Dirige solo las solicitudes a IP privadas a la VPC para enviar solo tráfico a direcciones internas a través de la red VPC.
- Dirige todo el tráfico a la VPC para enviar todo el tráfico de salida a través de la red de VPC.
Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu servicio o servicios. Las etiquetas de red se especifican a nivel de revisión. Cada revisión de servicio puede tener etiquetas de red diferentes, como
network-tag-2
.Opcional: Introduce los nombres de las etiquetas de red que quieras asociar a tu trabajo o trabajos. En el caso de las tareas, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como
network-tag-2
.Haz clic en Crear o en Actualizar.
Para verificar que tu trabajo está en tu red de VPC, haz clic en el trabajo y, a continuación, en la pestaña Configuración. La red y la subred se muestran en la tarjeta VPC.
Ahora puedes ejecutar tu trabajo de Cloud Run y enviar solicitudes desde el trabajo a cualquier recurso de la red de VPC, según lo permitan tus reglas de cortafuegos.
gcloud
Para crear un trabajo de Cloud Run sin un conector desde Google Cloud CLI, sigue estos pasos:
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API de Compute Engine esté habilitada en tu proyecto:
gcloud services enable compute.googleapis.com
Crea un trabajo de Cloud Run con el siguiente comando:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sustituye:
- JOB_NAME con el nombre de tu trabajo de Cloud Run.
- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
- Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red de VPC, una subred o ambas. Si solo especifica una red, la subred usará el mismo nombre que la red.
- Opcional:
SUBNET con el nombre de tu subred. La subred debe ser
/26
o mayor. La salida de VPC directa admite los intervalos IPv4 RFC 1918, RFC 6598 y de clase E. Puedes desplegar o ejecutar varios servicios o trabajos en la misma subred, pero esta no se puede compartir con ningún conector. - Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un trabajo. En el caso de los trabajos, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como
network-tag-2
. - EGRESS_SETTING con un
valor de ajuste de salida:
all-traffic
: envía todo el tráfico saliente a través de la red VPC.private-ranges-only
: solo envía tráfico a direcciones internas a través de la red de VPC.
- REGION con una región para tu trabajo.
Para verificar que el trabajo está en tu red de VPC, ejecuta el siguiente comando:
gcloud run jobs describe JOB_NAME \ --region=REGION
Sustituye:
JOB_NAME
con el nombre del trabajo.REGION
con la región de la tarea que has especificado en el paso anterior.
El resultado debe contener el nombre de tu red y subred. Por ejemplo:
VPC network: Network: default Subnet: default
Ahora puedes ejecutar tu trabajo de Cloud Run y enviar solicitudes desde el trabajo a cualquier recurso de la red de VPC, según lo permitan tus reglas de cortafuegos.
YAML
Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Actualice los siguientes atributos:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sustituye:
- JOB_NAME con el nombre de tu trabajo de Cloud Run. Los nombres de los trabajos deben tener 49 caracteres como máximo y ser únicos por región y proyecto.
- REGION con la región de tu trabajo de Cloud Run, que debe coincidir con la región de tu subred.
- Opcional: NETWORK con el nombre de tu red de VPC. Especifica una red VPC o una subred, o ambas. Si solo especificas una red, la subred usará el mismo nombre que la red.
- Opcional:
SUBNET con el nombre de tu subred. La subred debe ser
/26
o mayor. La salida de VPC directa admite los intervalos IPv4 RFC 1918, RFC 6598 y de clase E. Puedes desplegar o ejecutar varios servicios o trabajos en la misma subred, pero esta no se puede compartir con ningún conector. - Opcional: NETWORK_TAG_NAMES con los nombres de las etiquetas de red que quieras asociar a un trabajo. En el caso de los trabajos, las etiquetas de red se especifican a nivel de ejecución. Cada ejecución de un trabajo puede tener etiquetas de red diferentes, como
network-tag-2
. - EGRESS_SETTING con un
valor de ajuste de salida:
all-traffic
: envía todo el tráfico saliente a través de la red VPC.private-ranges-only
: solo envía tráfico a direcciones internas a través de la red de VPC.
- IMAGE con la URL de la imagen del contenedor de tu trabajo.
Crea o actualiza el trabajo con el siguiente comando:
gcloud run jobs replace job.yaml
Solución de problemas
Permisos de cuenta de servicio
Para realizar operaciones en tu proyecto de Google Cloud , Acceso a VPC sin servidor usa la cuenta de servicio Agente de servicios de Acceso a VPC sin servidor. La dirección de correo de esta cuenta de servicio tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
De forma predeterminada, esta cuenta de servicio tiene el rol Agente de servicio de acceso a VPC sin servidor (roles/vpcaccess.serviceAgent
). Las operaciones de acceso a VPC sin servidor pueden fallar si cambias los permisos de esta cuenta.
Rendimiento de red deficiente o uso elevado de la CPU inactiva
Usar un solo conector para miles de instancias puede provocar una degradación del rendimiento y un aumento del uso de la CPU en reposo. Para solucionar este problema, fragmenta tus servicios entre varios conectores.
Problemas con la MTU personalizada
Si tienes problemas con una MTU personalizada, asegúrate de usar el ajuste de MTU predeterminado de Cloud Run.
Errores
Error que indica que la cuenta de servicio necesita el rol de agente de servicio
Si usas la restricción de política de organización
Restrict Resource Service Usage
para bloquear Cloud Deployment Manager (deploymentmanager.googleapis.com
), es posible que veas el siguiente mensaje de error:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
Define la política de la organización para quitar Deployment Manager de la lista de denegación o añadirlo a la lista de permitidos.
Error al crear el conector
Si se produce un error al crear un conector, prueba lo siguiente:
- Especifica un intervalo de IP internas RFC 1918 que no se solape con ninguna reserva de direcciones IP de la red de VPC.
- Concede a tu proyecto permiso para usar imágenes de máquinas virtuales de Compute Engine del proyecto con el ID
serverless-vpc-access-images
. Para obtener más información sobre cómo actualizar la política de tu organización, consulta el artículo Definir restricciones de acceso a imágenes.
No se puede acceder a los recursos
Si has especificado un conector, pero sigues sin poder acceder a los recursos de tu red de VPC, asegúrate de que no haya reglas de cortafuegos en tu red de VPC con una prioridad inferior a 1000 que denieguen el acceso desde el intervalo de direcciones IP de tu conector.
Si configuras un conector en un proyecto de servicio de VPC compartida, asegúrate de que tus reglas de cortafuegos permitan la entrada desde tu infraestructura sin servidor al conector.
Error de conexión rechazada
Si recibes errores connection refused
o connection timeout
que degradan el rendimiento de la red, es posible que tus conexiones crezcan sin límite en las invocaciones de tu aplicación sin servidor. Para limitar el número máximo de conexiones que se usan por instancia, usa una biblioteca de cliente que admita grupos de conexiones. Para ver ejemplos detallados de cómo usar los grupos de conexiones, consulta Gestionar conexiones de bases de datos.
Error de recurso no encontrado
Cuando eliminas una red de VPC o una regla de cortafuegos, es posible que veas un mensaje similar al siguiente: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Para obtener información sobre este error y su solución, consulta el artículo Error "Resource not found" (Recurso no encontrado) en la documentación sobre reglas de cortafuegos de VPC.
Pasos siguientes
- Monitoriza la actividad de los administradores con los registros de auditoría de Acceso a VPC sin servidor.
- Protege los recursos y los datos creando un perímetro de servicio con Controles de Servicio de VPC.
- Consulta información sobre los roles de Gestión de Identidades y Accesos (IAM) asociados a Acceso a VPC sin servidor. Consulta los roles de acceso a VPC sin servidor en la documentación de gestión de identidades y accesos para ver una lista de los permisos asociados a cada rol.
- Consulta cómo conectarte a Memorystore desde: