En esta página se describen los comandos para trabajar con reglas de cortafuegos de nube privada virtual (VPC) y se ofrecen algunos ejemplos de cómo usarlos. Las reglas de cortafuegos de VPC te permiten permitir o denegar el tráfico hacia o desde instancias de máquina virtual (VM) en una red de VPC en función del número de puerto, la etiqueta o el protocolo.
Antes de empezar
Para obtener más información sobre las reglas de cortafuegos de VPC, como las reglas implícitas y las reglas generadas por el sistema para las redes predeterminadas, consulta el artículo Reglas de cortafuegos de VPC.
Antes de configurar reglas de cortafuegos, consulta los componentes de las reglas de cortafuegos para familiarizarte con ellos tal como se usan en Google Cloud.
Crear reglas de cortafuegos de VPC
Las reglas de cortafuegos de VPC se definen a nivel de red y solo se aplican a la red en la que se crean. Sin embargo, el nombre que elijas para cada una de ellas debe ser único en el proyecto.
Una regla de cortafuegos puede contener intervalos IPv4 o IPv6, pero no ambos.
Cuando creas una regla de cortafuegos, puedes habilitar la función Almacenamiento de registros de reglas de cortafuegos. Si habilitas el registro, puedes omitir campos de metadatos para ahorrar costes de almacenamiento. Para obtener más información, consulta Usar el almacenamiento de registros de reglas de cortafuegos.
Si quieres especificar varias cuentas de servicio en el campo de la cuenta de servicio de destino o de origen, usa la CLI de Google Cloud, la API o las bibliotecas de cliente.
La red predeterminada proporciona reglas de cortafuegos automáticas en el momento de la creación. Las redes en modo automático y personalizado te permiten crear cortafuegos similares fácilmente durante la creación de la red si utilizas la Google Cloud consola. Si usas la CLI de gcloud o la API y quieres crear reglas de cortafuegos similares a las que proporciona la red predeterminada, consulta Configurar reglas de cortafuegos para casos prácticos habituales.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en Crear regla de cortafuegos.
Introduce un nombre para la regla de cortafuegos.
Este nombre debe ser único en el proyecto.
(Opcional) Puedes habilitar el registro de reglas de cortafuegos:
- Haz clic en Registros > Activado.
- Para omitir los metadatos, haga clic en Mostrar detalles de los registros y, a continuación, desmarque la casilla Incluir metadatos.
Especifica la red de la regla de cortafuegos.
Especifica la prioridad de la regla.
Cuanto menor sea el número, mayor será la prioridad.
En Dirección del tráfico, elige entrada o salida.
En Acción tras coincidencia, elige permitir o denegar.
Especifica los objetivos de la regla.
- Si quieres que la regla se aplique a todas las instancias de la red, elige Todas las instancias de la red.
- Si quieres que la regla se aplique a instancias concretas por etiquetas de red (de destino), elige Etiquetas de destino especificadas y, a continuación, en el campo Etiquetas de destino, escribe las etiquetas a las que se debe aplicar la regla.
- Si quieres que la regla se aplique a instancias concretas por cuenta de servicio asociada, elige Cuenta de servicio especificada, indica si la cuenta de servicio está en el proyecto actual o en otro en Ámbito de la cuenta de servicio y, a continuación, en el campo Cuenta de servicio de destino, elige o escribe el nombre de la cuenta de servicio.
En el caso de una regla de entrada, especifique el filtro de origen:
- Para filtrar el tráfico entrante por intervalos de IPv4 de origen, seleccione Intervalos de IPv4 y, a continuación, introduzca los bloques CIDR en el campo Intervalos de IPv4 de origen. Usa
0.0.0.0/0para cualquier fuente IPv4. - Para filtrar el tráfico entrante por intervalos de IPv6 de origen, selecciona Intervalos de IPv6 y, a continuación, introduce los bloques CIDR en el campo Intervalos de IPv6 de origen. Usa
::/0para cualquier fuente IPv6. - Para filtrar el tráfico entrante por etiqueta de red, elija Etiquetas de origen y, a continuación, escriba las etiquetas de red en el campo Etiquetas de origen. Para consultar el límite del número de etiquetas de origen, consulta los límites por red. Solo se puede filtrar por etiqueta de origen si el destino no se especifica por cuenta de servicio.
- Para filtrar el tráfico entrante por cuenta de servicio, elige Cuenta de servicio, indica si la cuenta de servicio está en el proyecto actual o en otro en Ámbito de la cuenta de servicio y, a continuación, elige o escribe el nombre de la cuenta de servicio en el campo Cuenta de servicio de origen. Solo se puede filtrar por cuenta de servicio de origen si la etiqueta de red no especifica el destino.
- Si quieres, especifica un filtro de origen secundario. Los filtros de fuentes secundarias no pueden usar los mismos criterios de filtro que los de la fuente principal. Los intervalos de IPs de origen se pueden usar junto con las etiquetas de origen o la cuenta de servicio de origen. El conjunto de fuentes efectivo es la unión de las direcciones IP del intervalo de origen y las instancias identificadas por etiquetas de red o cuentas de servicio. Es decir, si el intervalo de IPs de origen o las etiquetas de origen (o las cuentas de servicio de origen) coinciden con los criterios del filtro, el origen se incluye en el conjunto de orígenes efectivo.
- No se pueden usar etiquetas de origen y cuentas de servicio de origen al mismo tiempo.
Para obtener más información sobre cómo usar una cuenta de servicio y una etiqueta de red, consulta Filtrar por cuenta de servicio o por etiqueta de red.
- Para filtrar el tráfico entrante por intervalos de IPv4 de origen, seleccione Intervalos de IPv4 y, a continuación, introduzca los bloques CIDR en el campo Intervalos de IPv4 de origen. Usa
En el caso de una regla de entrada, especifique el Filtro de destino:
- Para filtrar el tráfico entrante por intervalos de IPv4 de destino, seleccione Intervalos de IPv4 e introduzca los bloques CIDR en el campo Intervalos de IPv4 de destino. Usa
0.0.0.0/0para cualquier destino IPv4. - Para filtrar el tráfico entrante por intervalos de IPv6 de destino, selecciona Intervalos de IPv6 e introduce los bloques CIDR en el campo Intervalos de IPv6 de destino. Usa
::/0para cualquier destino IPv6.
Para obtener más información, consulta Destino de las reglas de entrada.
- Para filtrar el tráfico entrante por intervalos de IPv4 de destino, seleccione Intervalos de IPv4 e introduzca los bloques CIDR en el campo Intervalos de IPv4 de destino. Usa
En el caso de una regla de salida, especifica el Filtro de destino:
- Para filtrar el tráfico saliente por intervalos de IPv4 de destino, seleccione Intervalos de IPv4 e introduzca los bloques CIDR en el campo Intervalos de IPv4 de destino. Usa
0.0.0.0/0para cualquier destino IPv4. - Para filtrar el tráfico saliente por intervalos de IPv6 de destino, seleccione Intervalos de IPv6 e introduzca los bloques CIDR en el campo Intervalos de IPv6 de destino. Usa
::/0para cualquier destino IPv6.
Para obtener más información, consulta Destino de las reglas de salida.
- Para filtrar el tráfico saliente por intervalos de IPv4 de destino, seleccione Intervalos de IPv4 e introduzca los bloques CIDR en el campo Intervalos de IPv4 de destino. Usa
En el caso de una regla de salida, especifique el filtro de origen:
- Para filtrar el tráfico saliente por intervalos de IPv4 de origen, selecciona Intervalos de IPv4 e introduce los bloques CIDR en el campo Intervalos de IPv4 de origen. Usa
0.0.0.0/0para cualquier fuente IPv4. - Para filtrar el tráfico saliente por intervalos de IPv6 de origen, selecciona Intervalos de IPv6 e introduce los bloques CIDR en el campo Intervalos de IPv6 de origen. Usa
::/0para cualquier destino IPv6.
Para obtener más información, consulta Origen de las reglas de salida.
- Para filtrar el tráfico saliente por intervalos de IPv4 de origen, selecciona Intervalos de IPv4 e introduce los bloques CIDR en el campo Intervalos de IPv4 de origen. Usa
Define los protocolos y puertos a los que se aplica la regla:
- Para que la regla se aplique a todos los protocolos y puertos de destino, selecciona Permitir todo o Rechazar todo, según la acción.
- Para definir protocolos y puertos de destino específicos, selecciona Protocolos y puertos especificados:
- Selecciona TCP para incluir el protocolo TCP y los puertos de destino. Introduce
allo una lista de puertos de destino separados por comas, como20-22, 80, 8080. - Selecciona UDP para incluir el protocolo UDP y los puertos de destino. Introduce
allo una lista de puertos de destino separados por comas, como67-69, 123. - Selecciona Otro para incluir protocolos como
icmp,sctpo un número de protocolo. Por ejemplo, usaicmpo el número de protocolo1para ICMP de IPv4. Usa el número de protocolo58para ICMP de IPv6.
- Selecciona TCP para incluir el protocolo TCP y los puertos de destino. Introduce
Para obtener más información, consulta protocolos y puertos de destino.
(Opcional) Puedes crear la regla de cortafuegos, pero no aplicarla. Para ello, define su estado de aplicación como inhabilitado. Haz clic en Inhabilitar regla y, a continuación, selecciona Inhabilitada.
Haz clic en Crear.
gcloud
Para crear una regla de cortafuegos de VPC, usa el comando gcloud compute firewall-rules create:
gcloud compute firewall-rules create RULE_NAME \
[--network NETWORK; default="default"] \
[--priority PRIORITY;default=1000] \
[--direction (ingress|egress|in|out); default="ingress"] \
[--action (deny | allow )] \
[--target-tags TAG[,TAG,...]] \
[--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--source-tags TAG[,TAG, ...]] \
[--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
[--disabled | --no-disabled] \
[--enable-logging | --no-enable-logging] \
[--logging-metadata LOGGING_METADATA]
Usa los parámetros de la siguiente manera. Puede consultar más detalles sobre cada uno de ellos en la documentación de referencia del SDK.
--networkLa red de la regla. Si se omite, la regla se crea en la reddefault. Si no tiene una red predeterminada o quiere crear la regla en una red específica, debe usar este campo.--priorityValor numérico que indica la prioridad de la regla. Cuanto menor sea el número, mayor será la prioridad.--directionLa dirección del tráfico,INGRESSoEGRESS.--actionLa acción tras coincidencia, ya seaallowodeny. Se debe usar con la marca--rules.- Especifique un objetivo de una de las siguientes formas:
Para la regla de entrada, si quieres acotar aún más el destino, usa
--destination-rangespara especificar intervalos de direcciones IPv4 o IPv6 en formato CIDR. Si se omite--destination-ranges, el destino de entrada es cualquier dirección IPv4,0.0.0.0/0. Para obtener más información, consulta Destinos de las reglas de entrada y Direcciones IP y de destino de las reglas de entrada.En el caso de una regla de entrada, especifica un origen:
--source-rangesUsa esta marca para especificar intervalos de direcciones IPv4 o IPv6 de origen en formato CIDR.- Si se omiten
--source-ranges,source-tagsy--source-service-accounts, el origen de entrada es cualquier dirección IPv4,0.0.0.0/0. --source-tagsUsa esta marca para especificar instancias de origen por etiquetas de red. El filtro por etiqueta de origen solo está disponible si la cuenta de servicio no se ha especificado como destino. Para obtener más información, consulta la sección sobre filtrar por cuenta de servicio o etiqueta de red.--source-rangesy--source-tagsse pueden usar juntos. Si se especifican ambos, el conjunto de origen efectivo es la unión de las direcciones IP del intervalo de origen y las instancias identificadas por etiquetas de red, aunque las instancias etiquetadas no tengan IPs en los intervalos de origen.--source-service-accountsUsa esta marca para especificar instancias por las cuentas de servicio que utilizan. El filtro por cuenta de servicio de origen solo está disponible si el destino no se especifica mediante una etiqueta de red. Para obtener más información, consulta Filtrar por cuenta de servicio o por etiqueta de red.--source-rangesy--source-service-accountsse pueden usar juntos. Si se especifican ambos, el conjunto de orígenes efectivo es la unión de las direcciones IP del intervalo de origen y las instancias identificadas por las cuentas de servicio de origen, aunque las instancias identificadas por las cuentas de servicio de origen no tengan IPs en los intervalos de origen.
En el caso de la regla de salida, para acotar aún más la fuente, usa
--source-rangespara especificar intervalos de direcciones IPv4 o IPv6 en formato CIDR. Si se omite--source-ranges, la fuente de salida es cualquier dirección IPv4,0.0.0.0/0. Para obtener más información, consulta Fuentes de las reglas de salida y Direcciones IP y de destino de las reglas de salida.En el caso de una regla de salida, especifica un destino:
--destination-rangesUsa esta marca para especificar intervalos de direcciones IPv4 o IPv6 de destino en formato CIDR.- Si se omite
--destination-ranges, el destino de salida será cualquier dirección IPv4,0.0.0.0/0.
--rulesUna lista de protocolos y puertos de destino a los que se aplica la regla. Usaallpara que la regla se aplique a todos los protocolos y a todos los puertos de destino. Requiere la marca--action.De forma predeterminada, las reglas de cortafuegos se crean y se aplican automáticamente. Sin embargo, puede cambiar este comportamiento.
- Si se omiten
--disabledy--no-disabled, se crea y se aplica la regla de firewall. --disabledAñade esta marca para crear la regla de cortafuegos, pero no aplicarla. La regla de cortafuegos permanecerá inhabilitada hasta que la actualices para habilitarla.--no-disabledAñade esta marca para asegurarte de que se aplica la regla de cortafuegos.
- Si se omiten
--enable-logging | --no-enable-loggingPuedes habilitar el registro de reglas de cortafuegos cuando crees o actualices una regla. Almacenamiento de registros de reglas de cortafuegos te permite auditar, verificar y analizar los efectos de tus reglas de cortafuegos. Consulta Registro de reglas de cortafuegos para obtener más información.--logging-metadataSi habilitas el registro, de forma predeterminada, la función Almacenamiento de registros de reglas de cortafuegos incluye campos básicos y de metadatos. Puedes omitir campos de metadatos para ahorrar costes de almacenamiento. Para obtener más información, consulta Usar el registro de reglas de cortafuegos.
Terraform
Para crear una regla de cortafuegos, puede usar un google_compute_firewallrecurso.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
API
Crea una regla de cortafuegos de VPC.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "RULE_NAME",
"network": "projects/PROJECT-ID/global/networks/NETWORK",
... other fields
}
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la red de VPC.NETWORK: el nombre de la red de VPC en la que se crea la regla de cortafuegos.RULE_NAME: el nombre de la regla de cortafuegos.En el caso de una regla de cortafuegos de entrada, especifica el origen y el destino de la entrada:
Usa los campos
sourceRanges,sourceTagsosourceServiceAccountspara especificar la fuente de entrada.sourceRangespueden ser intervalos IPv4 o IPv6, pero no una combinación de ambos. Para usar el intervalo0.0.0.0/0, no especifique ningún campo.No puedes usar los campos
sourceTagsysourceServiceAccountsal mismo tiempo. Sin embargo, puedes usarsourceRangesconsourceTagsosourceServiceAccounts. Si lo haces, la conexión solo tiene que coincidir con una de las dos para que se aplique la regla de cortafuegos.En los campos de destino, si usa el campo
sourceTags, no podrá usar el campotargetServiceAccounts. Debe usar el campotargetTagso ningún campo de destino. Del mismo modo, si usas el camposourceServiceAccounts, no puedes usar el campotargetTags. Si no especifica ningún campo de destino, la regla se aplica a todos los destinos de la red.Utiliza el campo
destinationRangespara especificar el destino de entrada.destinationRangespuede ser un intervalo IPv4 o IPv6, pero no una combinación de ambos.
Si no especificas un destino, Google Cloud usa0.0.0.0/0. Para obtener más información, consulta Destinos de las reglas de entrada y Direcciones IP y de destino de las reglas de entrada.
En el caso de una regla de cortafuegos de salida, especifica el origen y el destino de la salida:
Utiliza el campo
sourceRangespara especificar la fuente de salida.sourceRangepueden ser intervalos IPv4 o IPv6, pero no una combinación de ambos.
Si no especificas ninguna fuente, Google Cloud usa0.0.0.0/0. Para obtener más información, consulta las secciones Fuentes de las reglas de salida y Direcciones IP y de destino de las reglas de salida.Usa el campo
destinationRangespara especificar el destino.destinationRangespueden ser intervalos IPv4 o IPv6, pero no una combinación de ambos.
Si no especificas un destino, Google Cloud usa0.0.0.0/0. Usa el campotargetTagsotargetServiceAccountspara especificar a qué objetivos se aplica la regla. Si no especifica un campo de destino, la regla se aplica a todos los destinos de la red.
Para obtener más información y descripciones de cada campo, consulta el método firewalls.insert.
C#
Go
Java
Node.js
PHP
Python
Ruby
Actualizar reglas de cortafuegos de VPC
Puedes modificar algunos componentes de una regla de cortafuegos de VPC, como los protocolos y los puertos de destino especificados en la condición de coincidencia. No puedes modificar el nombre, la red, la acción al coincidir ni la dirección del tráfico de una regla de cortafuegos.
Si necesitas cambiar el nombre, la red o el componente de acción o dirección, debes eliminar la regla y crear otra.
Si quieres añadir o quitar varias cuentas de servicio, usa la CLI de gcloud, la API o las bibliotecas de cliente. No puedes usar la consola Google Cloud para especificar varias cuentas de servicio de destino o de origen.
Consola
En la Google Cloud consola, ve a la página Políticas de cortafuegos.
Haz clic en la regla de firewall que quieras modificar.
Haz clic en Editar.
Modifica los componentes editables para adaptarlos a tus necesidades.
Haz clic en Guardar.
gcloud
Para actualizar las reglas de cortafuegos de VPC, usa el comando gcloud compute firewall-rules update:
gcloud compute firewall-rules update RULE_NAME \
[--priority=PRIORITY] \
[--description=DESCRIPTION] \
[--target-tags=TAG,...] \
[--target-service-accounts=IAM_SERVICE_ACCOUNT,_] \
[--source-ranges=CIDR_RANGE,...] \
[--source-tags=TAG,...] \
[--source-service-accounts=IAM_SERVICE_ACCOUNT,_] \
[--destination-ranges=CIDR_RANGE,...] \
[--rules=[PROTOCOL[:PORT[-PORT]],…]] \
[--disabled | --no-disabled] \
[--enable-logging | --no-enable-logging]
Las descripciones de cada marca son las mismas que las de la creación de reglas de firewall, y puede consultar más detalles sobre cada una de ellas en la documentación de referencia del SDK.
API
Usa PATCH para actualizar los siguientes campos: allowed, description, sourceRanges, sourceTags o targetTags. Usa PUT o POST para el resto de los campos.
(PATCH|(POST|PUT)) https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
"name": "RULE_NAME",
"network": "projects/PROJECT-ID/global/networks/NETWORK",
... other fields
}
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la red de VPC.NETWORK: el nombre de la red de VPC en la que se encuentra la regla de cortafuegos.RULE_NAME: nombre de la regla de cortafuegos que se va a actualizar.
Para obtener más información y descripciones de cada campo, consulta el método firewalls.patch o firewalls.update.