En este ejemplo se muestra cómo migrar redes de VPC de un proyecto host que ya está en un perímetro de servicio a perímetros independientes.
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 segmentos 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
de la red de VPCVPC1
y la VMVM2
de la red de VPCVPC2
pueden acceder a los recursos deservice-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:
- Perimeter-1. Este perímetro protege la red de VPC
VPC1
y el proyecto de servicioservice-project-1
. La VMVM1
puede acceder al segmento de Cloud Storage deservice-project-1
, pero no al deservice-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 segmento de Cloud Storage deservice-project-2
, pero no al deservice-project-1
.
En este ejemplo de migración, los cambios de configuración se realizan en modo de prueba de funcionamiento y, a continuación, se verifican antes de aplicar la configuración de prueba de funcionamiento. Este proceso asegura que las redes de VPC y los recursos estén protegidos, y que el tráfico de producción de VPC1
a service-project-1
y de VPC2
a service-project-2
no se interrumpa durante la migración.
El proceso de migración consta de los siguientes pasos:
- Obtener los detalles de las redes de VPC y del perímetro
- Configurar un perímetro de prueba
- Verificar la configuración de la prueba
- Aplicar la configuración de prueba de funcionamiento
Obtener los detalles de las redes de VPC y del 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.
Lista de redes de VPC del proyecto host
El siguiente comando muestra las redes de VPC del proyecto network-host-project:
gcloud compute networks list --project=network-host-project
Este ejemplo genera el siguiente resultado:
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 vpc1 AUTO REGIONAL vpc2 AUTO REGIONAL
Obtener los detalles del perímetro
El siguiente comando obtiene los detalles del perímetro:
gcloud access-context-manager perimeters describe perimeter-1
Este ejemplo genera 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 <access policy number> 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>
Configurar una prueba de funcionamiento
En este ejemplo, se usa el comando de ejecución de prueba para actualizar el perímetro perimeter-1
para quitar network-host-project
y service-project-2
, y añadir VPC1
. A continuación, ejecuta el comando de prueba para crear un perímetro perimeter-2
y añadir service-project-2
y VPC2
.
Si añades un proyecto a un perímetro en una política de acceso diferente, primero debes quitarlo de los perímetros de la política de acceso actual. Para obtener información sobre cómo quitar un proyecto de un perímetro, consulta Actualizar un perímetro de servicio.
Actualizar la configuración de la prueba
El siguiente comando actualiza el perímetro perimeter-1
para quitar network-host-project
y service-project-2
, y añade 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>
Crear un perímetro en modo de prueba
El siguiente comando crea el perímetro perimeter-2
y añade service-project-2
,
y añade VPC2
:
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>
Verificar la configuración de la prueba
En este ejemplo, ejecuta los siguientes comandos para asegurarte de que no hay errores de prueba de funcionamiento
de VPC1
a service-project-1
y de VPC2
a service-project-2
:
Para ver una lista de los segmentos de Cloud Storage de service-project-1
, inicia sesión en VM1
, que se encuentra en VPC1
y ejecuta el siguiente comando:
gcloud storage ls --project=service-project-1
Para enumerar los segmentos de Cloud Storage de service-project-2
, ejecuta el siguiente comando:
gcloud storage ls --project=service-project-2
Los comandos se ejecutan correctamente porque la configuración de prueba no afecta al tráfico de producción. Sin embargo, en los registros de auditoría de network-host-project
aparece el siguiente error de prueba:
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 y las solicitudes de VM2
a service-project-1
tienen el siguiente error de prueba 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>" } ]
Aplicar la configuración de prueba de funcionamiento
Debes aplicar todas las configuraciones de prueba simultáneamente en una transacción atómica.
Para aplicar las configuraciones de ejecución de prueba, ejecuta el siguiente comando:
gcloud access-context-manager perimeters dry-run enforce-all --policy=<access policy number>
Después de aplicar las configuraciones de prueba de funcionamiento, ejecuta el siguiente comando para describir
perimeter-1
:
gcloud access-context-manager perimeters describe perimeter-1 --policy=<access policy number>
En este ejemplo se genera el siguiente resultado, en el que se quitan network-host-project
y service-project-2
y se añade VPC1
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 genera el siguiente resultado, en el que se añaden service-project-2
y VPC2
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