Migra reglas de firewall de VPC que usan etiquetas de red y cuentas de servicio

Para centralizar la administración y aplicar de forma coherente las políticas de seguridad en tus redes de nube privada virtual (VPC), migra tus reglas de firewall de VPC que usan etiquetas de red y cuentas de servicio de origen a una política de firewall de red global. De esta manera, puedes reducir tu superficie de ataque, optimizar la configuración del firewall y reforzar los límites de seguridad identificando y abordando las reglas demasiado permisivas.

Este documento está dirigido a administradores de redes, ingenieros de seguridad y arquitectos de seguridad que configuran y administran políticas de seguridad de redes.

Para migrar reglas que no usan etiquetas de red ni cuentas de servicio, consulta Migra reglas de firewall de VPC que no usan etiquetas de red y cuentas de servicio.

Para completar esta migración, realiza las siguientes tareas:

  1. Evalúa el entorno.
  2. Enumera las etiquetas de red y las cuentas de servicio existentes.
  3. Crea etiquetas seguras para cada etiqueta de red y cuenta de servicio de origen.
  4. Asigna las etiquetas de red y las cuentas de servicio a las etiquetas seguras que crees.
  5. Vincula etiquetas seguras a máquina virtual (VM).
  6. Migra las reglas de firewall de VPC a una política de firewall de red global.
  7. Revisa la nueva política de firewall de red.
  8. Completa las tareas posteriores a la migración.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. Instala Google Cloud CLI.

  6. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  11. Instala Google Cloud CLI.

  12. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Asegúrate de tener el rol de Administrador de seguridad de Compute (roles/compute.securityAdmin).

Evalúa el entorno

Antes de migrar tus reglas de firewall de VPC a una política de firewall de red global, evalúa tu entorno existente y los roles y los permisos de Identity and Access Management (IAM):

  1. Identifica la cantidad de reglas de firewall de VPC en tu red de VPC.
  2. Toma nota de las prioridades asociadas con cada regla de firewall de VPC.
  3. Asegúrate de tener los roles y los permisos de IAM necesarios para crear, asociar, modificar y ver políticas de firewall de red globales.
  4. Asegúrate de tener los roles y permisos de IAM necesarios para crear, actualizar y borrar definiciones de etiquetas seguras.

    En la siguiente tabla, se proporciona un resumen de los diversos roles necesarios para crear y administrar etiquetas seguras:

    Nombre del rol Tareas realizadas
    Rol de administrador de etiquetas (roles/resourcemanager.tagAdmin) Crea, actualiza y borra definiciones de etiquetas. Para obtener más información, consulta Administra etiquetas.
    Rol de visualizador de etiquetas (roles/resourcemanager.tagViewer) Visualiza las definiciones y etiquetas de etiquetas que se adjuntan a los recursos.
    Rol de usuario de etiquetas (roles/resourcemanager.tagUser) Agrega y quita las etiquetas adjuntas a los recursos.

Enumera las etiquetas de red y las cuentas de servicio existentes

Determina si tus reglas de firewall de VPC usan etiquetas de red o cuentas de servicio, y crea un archivo JSON para guardar los detalles de las etiquetas de red y las cuentas de servicio existentes.

Para exportar las etiquetas de red y las cuentas de servicio de tu red a un archivo JSON de asignación, usa el comando gcloud beta compute firewall-rules migrate con la marca --export-tag-mapping:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --export-tag-mapping \
    --tag-mapping-file=TAG_MAPPING_FILE

Reemplaza lo siguiente:

  • NETWORK_NAME: El nombre de la red de VPC que contiene las reglas de firewall de VPC que deseas migrar.
  • TAG_MAPPING_FILE: el nombre del archivo JSON de asignación.

Si tus reglas de firewall de VPC solo contienen cuentas de servicio, el archivo JSON generado solo contendrá cuentas de servicio. Del mismo modo, si tus reglas de firewall de VPC solo contienen etiquetas de red, el archivo JSON generado solo contendrá etiquetas de red. Las cuentas de servicio tienen el prefijo sa, y las etiquetas de red no tienen ningún prefijo.

Por ejemplo, el siguiente archivo JSON generado contiene una etiqueta de red sql-server y una cuenta de servicio example@example.com.

{"sql-server": null, "sa:example@example.com": null}

Crea etiquetas seguras

Según las etiquetas de red y las cuentas de servicio de origen enumeradas en el archivo de asignación, debes crear las etiquetas seguras correspondientes en tu red.

Las nuevas etiquetas seguras sirven como reemplazo de las etiquetas de red y las cuentas de servicio, y conservan la configuración de red original después de la migración.

Como principal con el rol de administrador de etiquetas, para cada etiqueta de red y cuenta de servicio, crea el par clave-valor de etiqueta segura correspondiente.

Para crear una clave y un valor de etiqueta seguros para cada etiqueta de red y cuenta de servicio, usa el comando gcloud resource-manager tags keys create y el comando gcloud resource-manager tags values create:

gcloud resource-manager tags keys create TAG_KEY \
    --parent=organizations/ORGANIZATION_ID \
    --purpose=GCE_FIREWALL \
    --purpose-data=network=PROJECT_ID/NETWORK_NAME

gcloud resource-manager tags values create TAG_VALUE \
    --parent=ORGANIZATION_ID/TAG_KEY

Reemplaza lo siguiente:

  • TAG_KEY: Es el nombre de la clave de etiqueta segura.
  • ORGANIZATION_ID: Es el ID de la organización.
  • PROJECT_ID: el ID del proyecto
  • NETWORK_NAME es el nombre de la red de VPC.
  • TAG_VALUE: Es el valor que se asignará a la clave de etiqueta segura.

Por ejemplo, si tienes una regla de firewall de VPC con una etiqueta de red llamada sql-server, crea un par clave-valor de etiqueta segura correspondiente de sql-server:production.

gcloud resource-manager tags keys create sql-server \
    --parent=organizations/123456 \
    --purpose=GCE_FIREWALL \
    --purpose-data=network=test-project/test-network

gcloud resource-manager tags values create production \
    --parent=123456/sql-server

Asigna etiquetas de red y cuentas de servicio a etiquetas seguras

Después de crear etiquetas seguras regidas por IAM para cada etiqueta de red y cuenta de servicio que usan las reglas de firewall de tu VPC, debes asignar las etiquetas seguras a las etiquetas de red y cuentas de servicio correspondientes en el archivo JSON de asignación.

Edita el archivo JSON para asignar las etiquetas de red y las cuentas de servicio a las etiquetas seguras correspondientes.

{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}

Por ejemplo, el siguiente archivo JSON asigna la etiqueta de red sql-server al valor de etiqueta segura de la clave sql-server y la cuenta de servicio example@example.com al valor de etiqueta segura de la clave example@example.com:

{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}

Vincula etiquetas seguras a las VMs

Según el archivo JSON de asignación de etiquetas, vincula las etiquetas seguras recién creadas a las VMs a las que se adjuntan las etiquetas de red existentes:

  1. Como principal con el rol de administrador de etiquetas, haz lo siguiente:

    1. Revisa los permisos necesarios para adjuntar etiquetas seguras a los recursos de Google Cloud .
    2. Asigna el rol de usuario de etiquetas al principal que usa las etiquetas seguras y las vincula a las VMs.
  2. Como principal con el rol de usuario de etiquetas, vincula las etiquetas seguras a las instancias de VM con el comando gcloud beta compute firewall-rules migrate con la marca --bind-tags-to-instances:

    gcloud beta compute firewall-rules migrate \
        --source-network=NETWORK_NAME \
        --bind-tags-to-instances \
        --tag-mapping-file=TAG_MAPPING_FILE
    

    Reemplaza lo siguiente:

    • NETWORK_NAME es el nombre de la red de VPC.
    • TAG_MAPPING_FILE: El nombre del archivo JSON de asignación.

Migra las reglas de firewall de VPC a una política de firewall de red global.

Para migrar reglas de firewall de VPC a una política de firewall de red global, usa el comando gcloud beta compute firewall-rules migrate:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --tag-mapping-file=TAG_MAPPING_FILE

Reemplaza lo siguiente:

  • NETWORK_NAME: El nombre de la red de VPC que contiene las reglas de firewall de VPC que deseas migrar.
  • POLICY_NAME: Es el nombre de la política de firewall de red global que se creará durante la migración.
  • TAG_MAPPING_FILE: el nombre del archivo JSON de asignación.

Excluye reglas de firewall de la migración

Para excluir reglas de firewall específicas de la migración, usa el comando gcloud beta compute firewall-rules migrate con la marca --exclusion-patterns-file:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE

Reemplaza lo siguiente:

  • NETWORK_NAME: El nombre de la red de VPC que contiene las reglas de firewall de VPC que deseas migrar.
  • POLICY_NAME: Es el nombre de la política de firewall de red global que se creará durante la migración.
  • EXCLUSION_PATTERNS_FILE: Es el nombre del archivo que contiene expresiones regulares que definen patrones de nombres de firewall de VPC para excluir de la migración. Asegúrate de especificar la ruta de acceso completa del archivo. Se omiten las reglas de firewall que coinciden con los patrones especificados.

    Cuando definas los patrones de exclusión, ten en cuenta lo siguiente:

    • Cada expresión regular debe estar en su propia línea y representar un solo patrón de nomenclatura de firewall.
    • Las expresiones regulares no contienen espacios en blanco iniciales ni finales.

Cómo ver las reglas de firewall excluidas

Según los patrones de nombres de reglas de firewall excluidas, la herramienta de migración no migra algunas reglas de firewall, como las reglas de firewall de Google Kubernetes Engine (GKE). Para exportar la lista de patrones de nombres de reglas de firewall excluidas, usa el comando gcloud beta compute firewall-rules migrate con las marcas --export-exclusion-patterns y --exclusion-patterns-file.

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE \
    --export-exclusion-patterns

Reemplaza lo siguiente:

  • NETWORK_NAME: El nombre de la red de VPC que contiene las reglas de firewall de VPC que deseas migrar.
  • POLICY_NAME: Es el nombre de la política de firewall de red global que se creará durante la migración.
  • EXCLUSION_PATTERNS_FILE: Es la ruta de acceso del archivo en el que se exportan los siguientes patrones de nombres de reglas de firewall excluidas.

    gke-(.+)-ipv6-all
    gke-(.+)-(.+)-((master)|(vms)|(all)|(inkubelet)|(exkubelet)|(mcsd))
    k8s-fw-(l7-)?(.+)
    k8s-(.+)-((node)|(http)|(node-http))-hc
    (.+)-hc
    k8s2-(.+)-(.+)-(.+)-(.+)(-fw)?
    k8s2-(.+)-l4-shared-hc-fw
    gke((gw)|(mcg))1-l7-(.+)-(.+)
    

Para migrar las reglas de firewall excluidas que coinciden con un patrón específico, quita el patrón de la lista exportada y ejecuta el comando gcloud beta compute firewall-rules migrate con la marca --exclusion-patterns-file.

Forzar la migración y conservar el orden de evaluación

Durante la migración, si el orden de evaluación de una regla de firewall excluida se encuentra entre los órdenes de evaluación de las reglas de firewall especificadas por el usuario, la migración falla.Esto sucede porque las reglas de firewall excluidas no se migran, y la herramienta de migración no puede conservar el orden de evaluación original de las reglas definidas por el usuario en la nueva política de firewall de red.

Por ejemplo, si tus reglas de firewall tienen las siguientes prioridades, la migración fallará.

  • Una regla especificada por el usuario con prioridad 100
  • Una regla excluida con prioridad 200
  • Una regla especificada por el usuario con prioridad 300

Para forzar la migración de las reglas especificadas por el usuario con la herramienta de migración y, al mismo tiempo, conservar su orden de evaluación original y omitir las reglas de firewall excluidas, usa el comando gcloud beta compute firewall-rules migrate con la marca --force.

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --force

Reemplaza lo siguiente:

  • NETWORK_NAME: El nombre de la red de VPC que contiene las reglas de firewall de VPC que deseas migrar.
  • POLICY_NAME: Es el nombre de la política de firewall de red global que se creará durante la migración.

Revisa la nueva política de firewall de red global

Antes de asociar la política recién creada a una red de VPC, Google recomienda que revises la política para asegurarte de que el proceso de migración se haya completado con exactitud.

Verifica la siguiente información:

  • La configuración de las reglas de la política de firewall es correcta, y los siguientes componentes de reglas se migran de forma correcta para cada regla:

    • Prioridad relativa
    • Dirección del tráfico
    • Acción en caso de coincidencia
    • Configuración de registros
    • Parámetros de destino
    • Parámetros de origen (para reglas de entrada)
    • Parámetros de destino (para reglas de salida)
    • Restricciones de protocolos y puertos
  • Verifica si las etiquetas seguras están adjuntas a la VM correcta. Para verificar esto, usa el comando gcloud resource-manager tags bindings list:

    gcloud resource-manager tags bindings list \
        --location=ZONE_ID \
        --parent=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \
        --effective
    

    Reemplaza lo siguiente:

    • ZONE_ID: la zona de la VM.
    • PROJECT_ID: el ID del proyecto
    • INSTANCE_NAME: el nombre de la VM.

Tareas posteriores a la migración

Para activar y usar la nueva política de firewall de red global, completa las tareas posteriores a la migración. Para obtener más información, consulta Tareas posteriores a la migración.

¿Qué sigue?