Ejemplo de migración de redes de VPC a perímetros separados

En este ejemplo, se muestra cómo migrar redes de VPC de una red proyecto host, que ya está en un perímetro de servicio, en perímetros separados.

En este ejemplo, el proyecto host consta de dos redes de VPC. Dos proyectos de servicio alojan sus recursos de Cloud Storage.

En el siguiente diagrama, se muestra la configuración del perímetro de un proyecto host de ejemplo antes de la migración.

Cómo alojar un proyecto antes de la migración

En el diagrama de arquitectura, se muestran los siguientes componentes:

  • Proyecto host. El proyecto host contiene dos redes de VPC VPC1 y VPC2.
  • Proyectos de servicio: Los proyectos de servicio service-project-1 y service-project-2 contienen buckets de Cloud Storage y están protegidos por el perímetro de servicio.
  • Perímetro. El perímetro de servicio perimeter-1 protege todo el proyecto host y los proyectos de servicio. La VM VM1 en la red de VPC VPC1 y la VM VM2 en la red de VPC VPC2 pueden acceder a los recursos en service-project-1 y service-project-2.

En el siguiente diagrama, se muestra la configuración del perímetro del proyecto host después de la migración.

Cómo alojar un proyecto después de la migración

En el diagrama de arquitectura, se muestran los siguientes componentes:

  • Perímetro-1. Este perímetro protege la red de VPC VPC1 y el proyecto de servicio service-project-1. La VM VM1 puede acceder al bucket de Cloud Storage en service-project-1, pero no al bucket de Cloud Storage en service-project-2.
  • Perimeter-2. Este perímetro protege la red de VPC VPC2 y el proyecto de servicio service-project-2. La VM VM2 puede acceder al bucket de Cloud Storage en service-project-2, pero no al bucket de Cloud Storage en service-project-1.

En este ejemplo de migración, los cambios de configuración se realizan en modo de prueba y luego se verificará antes de aplicar la configuración de ejecución de prueba. Este proceso garantiza que las redes y los recursos de VPC están protegidos y el tráfico de producción de VPC1 a service-project-1 y de VPC2 a service-project-2 no es interrupciones durante la migración.

El proceso de migración consta de los siguientes pasos.

  • Obtén los detalles del perímetro y las redes de VPC
  • Configura una configuración de perímetro de ejecución de prueba
  • Verifica la configuración de la prueba preliminar
  • Aplica la configuración de ejecución de prueba

Obtén los detalles de las redes de VPC y el perímetro

En este ejemplo, antes de iniciar la migración, debes obtener la lista de redes de VPC y los detalles del perímetro.

Enumera las redes de VPC en el proyecto host

El siguiente comando enumera las redes de VPC en el proyecto network-host-project:

    gcloud compute networks list --project=network-host-project
  

En este ejemplo, se produce el siguiente resultado:

    NAME  SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
    vpc1  AUTO         REGIONAL
    vpc2  AUTO         REGIONAL
  

Obtén los detalles del perímetro

El siguiente comando obtiene los detalles del perímetro:

    gcloud access-context-manager perimeters describe perimeter-1
  

En este ejemplo, se produce el siguiente resultado:

name: accessPolicies/<access policy number>/servicePerimeters/perimeter-1
status:
…
  resources:
  - projects/<network-host-project number>
  - projects/<service-project-1 number>
  - projects/<service-project-2 number>

El <número de política de acceso> se usa en los comandos de ejemplo del modo de ejecución de prueba. También puedes configurar una política de acceso predeterminada con el siguiente comando:

    gcloud alpha config set access_context_manager/policy<access policy number>
  

Establece una configuración de ejecución de prueba

En este ejemplo, se usa el comando de prueba de validación para actualizar el perímetro perimeter-1 para quitar network-host-project, service-project-2 y agregar VPC1. Luego, ejecutas el comando de ejecución de prueba para crear un perímetro perimeter-2 nuevo y agregar service-project-2 y VPC2.

Actualiza la configuración de la ejecución de prueba

El siguiente comando actualiza el perímetro perimeter-1 para quitar network-host-project y service-project-2, y agrega VPC1:

    gcloud access-context-manager perimeters dry-run update perimeter-1
     --remove-resources="projects/<network-host-project number>,projects/<service-project-2 number>"
     --add-resources="//compute.googleapis.com/projects/network-host-project/global/networks/vpc1"
     --policy=<access policy number>
  

Crea un perímetro nuevo en modo de ejecución de prueba

Con el siguiente comando, se crea el perímetro perimeter-2 y se agrega service-project-2. y VPC1:

    gcloud access-context-manager perimeters dry-run create perimeter-2
    --title=perimeter-2 --type="regular"
    --resources="projects/<service-project-2 number>,//compute.googleapis.com/projects/network-host-project/global/networks/vpc2"
    --restricted-services="storage.googleapis.com"
    --policy=<access policy number>
  

Verifica la configuración de la prueba de ejecución

En este ejemplo, ejecuta los siguientes comandos para asegurarte de que no haya errores de prueba de validación de VPC1 a service-project-1 y de VPC2 a service-project-2:

Para obtener una lista de los buckets de Cloud Storage en service-project-1, accede a VM1, que se encuentra en VPC1, y ejecuta el siguiente comando:

    gcloud storage ls --project=service-project-1
  

Para obtener una lista de los buckets de Cloud Storage en service-project-2, ejecuta el siguiente comando:

    gcloud storage ls --project=service-project-2
  

Los comandos se ejecutan correctamente porque la configuración de ejecución de prueba no afecta el tráfico de producción. Sin embargo, el siguiente error de prueba de validación aparece en los registros de auditoría de network-host-project para acceder a service-project-2 desde VM1:

    egressViolations: [
    0: {
    servicePerimeter: "accessPolicies/<access policy number>/servicePerimeters/perimeter-1"
    source: "//compute.googleapis.com/projects/network-host-project/global/networks/VPC1"
    sourceType: "Network"
    targetResource: "projects/<service-project-2 number>"
    }
    ]
  

Del mismo modo, las solicitudes de Cloud Storage de VM2 a service-project-2 no tienen errores de prueba sin conexión, y las solicitudes de VM2 a service-project-1 tienen el siguiente error de prueba sin conexión en los registros de auditoría de network-host-project:

    egressViolations: [
    0: {
    servicePerimeter: "accessPolicies/<access policy number>/servicePerimeters/perimeter-2"
    source: "//compute.googleapis.com/projects/network-host-project/global/networks/VPC2"
    sourceType: "Network"
    targetResource: "projects/<service-project-1 number>"
    }
    ]
  

Aplica la configuración de la ejecución de prueba

Debes aplicar todas las configuraciones de la ejecución de prueba a la vez en una transacción atómica.

Para aplicar la configuración de prueba de validación, ejecuta el siguiente comando:

    gcloud access-context-manager perimeters dry-run enforce-all --policy=<access policy number>
  

Después de aplicar la configuración de prueba de validación, ejecuta el siguiente comando para describir perimeter-1:

    gcloud access-context-manager perimeters describe perimeter-1 --policy=<access policy number>
  

En este ejemplo, se produce el siguiente resultado, en el que network-host-project y service-project-2 y VPC1 se agrega a perimeter-1.

    name: accessPolicies/<access policy number>/servicePerimeters/perimeter-1
    status:
    …
    resources:
    - projects/<service-project-1 number>
    - //compute.googleapis.com/projects/<network-host-project>/global/networks/VPC1
  

Ejecuta el siguiente comando para describir perimeter-2:

    gcloud access-context-manager perimeters describe perimeter-2 --policy=<access policy number>
  

En este ejemplo, se produce el siguiente resultado, en el que service-project-2 y VPC2 se agregaron a perimeter-2.

    name: accessPolicies/<access policy number>/servicePerimeters/perimeter-2
    status:
    …
    resources:
    - projects/<service-project-2 number>
    - //compute.googleapis.com/projects/<network-host-project>/global/networks/VPC2
    title: perimeter-2