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.
En el diagrama de arquitectura, se muestran los siguientes componentes:
- Proyecto host. El proyecto host contiene dos redes de VPC
VPC1
yVPC2
. - Proyectos de servicio: Los proyectos de servicio
service-project-1
yservice-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 VMVM1
en la red de VPCVPC1
y la VMVM2
en la red de VPCVPC2
pueden acceder a los recursos enservice-project-1
yservice-project-2
.
En el siguiente diagrama, se muestra la configuración del perímetro del proyecto host 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 servicioservice-project-1
. La VMVM1
puede acceder al bucket de Cloud Storage enservice-project-1
, pero no al bucket de Cloud Storage enservice-project-2
. - Perimeter-2. Este perímetro protege la red de VPC
VPC2
y el proyecto de servicioservice-project-2
. La VMVM2
puede acceder al bucket de Cloud Storage enservice-project-2
, pero no al bucket de Cloud Storage enservice-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