En este tema, se proporciona información sobre el manejo de casos especiales relacionados con la migración de proyectos.
Migra proyectos sin recursos de la organización
Puedes migrar un proyecto que no esté asociado con un recurso de la organización a uno. Sin embargo, no puedes volver a cambiarlo a Sin organización con este proceso. Si tienes un proyecto asociado con el recurso de tu organización y deseas revertirlo a Sin organización, comunícate con tu representante de asistencia para obtener ayuda.
El proceso de migración de un proyecto no asociado con un recurso de la organización es similar al proceso para migrar un proyecto entre recursos de la organización, pero no requiere todos los pasos involucrados en el plan de migración. Para migrar un proyecto a un recurso de la organización, debes seguir estos pasos:
Verifica el impacto de las políticas que heredará en este proyecto.
Si lo deseas, crea una carpeta de importación dedicada en el recurso de la organización de destino.
Asigna permisos de Identity and Access Management para el proyecto y el superior de destino como se detalla en Asigna permisos.
Determina si necesitas cambiar la cuenta de facturación.
Luego, puedes realizar la migración.
Consola
Para migrar un proyecto a un recurso de la organización, haz lo siguiente:
Abre la página IAM y administración > Configuración en la consola de Google Cloud.
Selecciona el Selector de proyectos en la parte superior de la página.
En el Selector de organización, selecciona Sin organización. Si no estás asociado a ningún recurso de la organización, el Selector de organización no aparecerá y puedes omitir este paso.
Selecciona el proyecto que deseas migrar.
Haz clic en Migrar en la parte superior de la página.
En la lista desplegable Organización, selecciona el recurso de la organización al que deseas migrar tu proyecto.
gcloud
Para migrar un proyecto a un recurso de la organización, ejecuta el siguiente comando:
gcloud beta projects move PROJECT_ID \ --organization ORGANIZATION_ID
Aquí:
- PROJECT_ID es el ID del proyecto que deseas migrar al recurso de la organización.
- ORGANIZATION_ID es el ID del recurso de la organización al que deseas migrar el proyecto.
API
Con la API de Resource Manager, puedes migrar un proyecto al recurso de la organización si configuras el campo parent
con el ID del recurso de la organización.
Para migrar un proyecto al recurso de la organización, haz lo siguiente:
- Obtén el objeto
project
con el métodoprojects.get()
. - Establece su campo
parent
con el ID de recurso de la organización. - Actualiza el objeto
project
con el métodoprojects.update()
.
No se puede modificar el campo parent
luego de configurarlo.
El siguiente fragmento de código demuestra los siguientes pasos:
project = crm.projects().get(projectId=flags.projectId).execute()
project['parent'] = {
'type': 'organization',
'id': flags.organizationId
}
Si el Acceso al SO está habilitado en el proyecto de origen, debes asignar la función roles/compute.osLoginExternalUser
a todas las principales que tengan acceso a ese proyecto.
VPC compartida
Los proyectos de VPC compartida se pueden migrar si se cumplen determinadas condiciones. Primero, un usuario con la función roles/orgpolicy.policyAdmin
en el recurso de la organización de origen debe establecer una política de la organización que contenga la restricción constraints/resourcemanager.allowEnabledServicesForExport
en el superior del proyecto que se exportará. Esta restricción debe enumerar SHARED_VPC
como un allowed_value.
No es necesario inhabilitar la VPC compartida antes de la migración. Sin embargo, primero se debe migrar el proyecto host de la VPC compartida y, luego, todos sus proyectos de servicio. Te recomendamos que hagas coincidir las reglas de firewall entre los recursos de la organización en las ubicaciones de origen y destino, lo que debería minimizar problemas potenciales y evitar cualquier tiempo de inactividad para los proyectos y la red durante la migración. No ofrecemos garantías sobre el buen estado de tu red si dejas algunos proyectos de servicio en el recurso de la organización de origen de forma indefinida mientras migras otros.
Si migras el proyecto host, puedes volver a moverlo al recurso de la organización de origen. No hay una fecha límite exacta para el tiempo que el proyecto host y los proyectos de servicio pueden estar en diferentes organizaciones. Sin embargo, cuando comiences a migrar los proyectos de servicio, debes migrarlos todos antes de poder volver a migrar el proyecto host.
Roles personalizados de Identity and Access Management
Las funciones personalizadas de Identity and Access Management accesos se pueden crear a nivel de recursos de la organización para proporcionar un control detallado del acceso a los recursos, pero solo son válidas en el recurso de la organización en el que se crean. Si intentas migrar un proyecto que contiene una vinculación de política de IAM de un usuario a una función de IAM personalizada a nivel de recurso de la organización, la migración fallará y mostrará un error de condición previa con errores, lo que explica que la función en cuestión no existe en el recurso de la organización de destino.
Para enumerar todas las funciones personalizadas de IAM a nivel del recurso de tu organización, ejecuta el siguiente comando de Google Cloud CLI:
gcloud iam roles list --organization ORGANIZATION_ID
En el ejemplo anterior, ORGANIZATION_ID
es el ID del recurso de la organización para el que deseas enumerar las funciones. Para obtener información sobre cómo encontrar tu ID de recurso de la organización, consulta Crea y administra recursos de la organización.
Para obtener información sobre una función personalizada de Identity and Access Management en el recurso de tu organización, ejecuta el siguiente comando de Google Cloud CLI:
gcloud iam roles describe --organization ORGANIZATION_ID \ ROLE_ID
Aquí:
ORGANIZATION_ID
es el ID de recurso de la organización del recurso de la organización superior de la función.ROLE_ID
es el nombre de la función que deseas describir.
Para solucionar el error de condición previa con errores, debes crear funciones personalizadas equivalentes a nivel de proyecto para cada una de las funciones personalizadas a nivel de la organización que hereda el proyecto. Luego, quita las vinculaciones de funciones de IAM que hacen referencia a las funciones personalizadas a nivel de la organización.
Una vez que se migró el proyecto, puedes actualizar las políticas de IAM para usar las funciones personalizadas a nivel de la organización en el recurso de la organización de destino.
Para obtener información sobre las funciones personalizadas, consulta Crea y administra funciones personalizadas.
Bloqueo del bucket
El bloqueo de bucket de Cloud Storage te permite configurar una política de retención de datos en un bucket de Cloud Storage que regula por cuánto tiempo se retienen los objetos. El bloqueo del bucket está protegido con una retención para evitar la eliminación accidental del proyecto.
La política de retención y la retención se conservan con el proyecto durante una migración, pero debes tener en cuenta si migras un proyecto con un bloqueo de bucket aplicado, y evitar traslados accidentales.
Perímetros de seguridad de los Controles del servicio de VPC
Los Controles del servicio de VPC permiten que los usuarios configuren un perímetro de seguridad basado en proyectos alrededor de sus servicios de Google Cloud para mitigar los riesgos de robo de datos. No puedes migrar un proyecto protegido por un perímetro de seguridad de los Controles del servicio de VPC.
Para quitar un proyecto de un perímetro de seguridad, consulta Administra perímetros de servicio. Es posible que los proyectos en los perímetros de los Controles del servicio de VPC no se bloqueen para que se migren entre recursos de la organización. Este lineamiento se aplica hasta un día después de que se crea o actualiza un perímetro. Es posible que pasen varias horas antes de que puedas migrar un proyecto después de haberlo quitado del perímetro de servicio.
Interconexión dedicada
Recomendamos migrar proyectos con objetos de interconexión dedicada y proyectos con adjuntos de VLAN juntos. Los proyectos con objetos de interconexión dedicada o adjuntos de VLAN conectados a estos objetos continuarán funcionando después de la migración entre los recursos de la organización. La única restricción es que no podrás crear adjuntos de VLAN nuevos entre la división de recursos de la organización.
Los cambios de configuración realizados en un proyecto en un recurso de la organización que tiene un objeto de interconexión dedicada adjunto o un adjunto de VLAN a este objeto no pueden propagarse al otro recurso de la organización. Te recomendamos que no dejes estos proyectos divididos entre los recursos de la organización durante mucho tiempo, si es posible.
Interconexión de socio
No se requieren consideraciones especiales cuando se migran proyectos con la interconexión de socio.
Cuentas de servicio entre proyectos
En el contexto de la migración de una cuenta de servicio entre proyectos, se aplican los siguientes casos:
- Si migras un proyecto que tiene una cuenta de servicio entre proyectos adjunta, esa cuenta de servicio seguirá funcionando en el recurso de la organización de destino. Ese proyecto seguirá funcionando con la cuenta de servicio adjunta incluso si hay una política de la organización que restringa el dominio de ese proyecto.
- Si migras un proyecto que posee una cuenta de servicio entre proyectos vinculada a otro proyecto en el recurso de la organización de origen, esa cuenta de servicio seguirá funcionando en el recurso de la organización de destino. Sin embargo, no podrás usar esa cuenta de servicio en ningún recurso que tenga aplicada una política de la organización de restricción de dominio que la restrinja al dominio del recurso de la organización de origen.
Por ejemplo, supongamos que tienes project-A
en organizations/12345678901
. Este proyecto tiene serviceAccount-1
adjunto, que se configura como una cuenta de servicio entre proyectos. project-B
y project-C
, también en organizations/12345678901
, también usan serviceAccount-1
.
Aplicaste una política de la organización con la restricción de dominio a project-C
, que solo le permite acceder al dominio de organizations/12345678901.
.
Si agregas serviceAccount-1
a la vinculación de IAM para project-C
y, luego, migras project-A
a organizations/45678901234
, la cuenta de servicio funcionará.
Si migras project-A
a organizations/45678901234
y, luego, intentas agregar serviceAccount-1
a la vinculación de IAM para project-C
, la vinculación fallará, ya que infringe la restricción de dominio.
Casos de asistencia
Si migras un proyecto que tiene un caso de asistencia abierto, debes comunicarte con tu contacto de Atención al cliente de Google para informarle que se realizó la migración. Cualquier proyecto que tenga un caso de asistencia abierto con Google no podrá verlos hasta que la Atención al cliente de Google actualice los metadatos del caso para que apunten al nuevo recurso de la organización.
Pantalla de consentimiento de OAuth
Si tu proyecto está configurado para usar una pantalla de consentimiento de OAuth interna y la migras a otro recurso de la organización, solo los miembros del recurso de la organización de destino podrán autorizar solicitudes. Este comportamiento puede tardar hasta 24 horas en aplicarse. Hasta entonces, los miembros del recurso de la organización de origen pueden autorizar solicitudes.
En los siguientes pasos, se explica cómo asegurarte de que los miembros del recurso de la organización de origen no pierdan acceso durante la migración. Considera crear usuarios nuevos en el recurso de la organización de destino para los miembros del recurso de la organización a fin de que no tengas que cambiar la configuración de la pantalla de consentimiento de OAuth.
A fin de evitar la pérdida de acceso para los miembros del recurso de la organización de origen, haz lo siguiente:
Actualiza la pantalla de consentimiento de OAuth para que sea externa en lugar de interna.
Las apps marcadas como internas y usan datos sensibles no necesitan solicitar la verificación de apps. Si la app usa datos sensibles, cuando la pantalla de consentimiento se actualice a externa, los usuarios del recurso de la organización de origen verán una pantalla de app no verificada antes de la pantalla de autorización. A fin de evitar esto, solicita la verificación de apps para el uso de permisos sensibles o restringidos.
Acceso a SO
Si el Acceso al SO está habilitado en el proyecto de origen, debes asignar el rol roles/compute.osLoginExternalUser
a todas las principales que tengan acceso a ese proyecto. Esto garantiza que estas principales no pierdan el acceso en el recurso de la organización de destino.
Conecta cuentas de servicio a recursos
En la mayoría de los servicios de Google Cloud, los usuarios necesitan el permiso iam.serviceAccounts.actAs
en una cuenta de servicio para conectar esa cuenta de servicio a un recurso.
Sin embargo, en el pasado, a fin de facilitar la integración de ciertos servicios, los usuarios podían adjuntar cuentas de servicio a los recursos, incluso si no tenían permiso para actuar en nombre de las cuentas de servicio. Esto se documenta en Solicita permiso para conectar cuentas de servicio a recursos.
Si el recurso de la organización de origen de un cliente tiene el comportamiento heredado (el adjunto de cuentas de servicio es posible sin la concesión de la función normal) y el recurso de la organización de destino no lo tiene, otorga la función de usuario de la cuenta de servicio (roles/iam.serviceAccountUser
) a los usuarios que conectan estas cuentas de servicio a los recursos. Si quieres obtener información sobre los permisos que necesitas a fin de conectar cuentas de servicio a los recursos, consulta Funciones para la autenticación de cuentas de servicio.
Para ver si tu recurso de organización tiene el comportamiento heredado, haz lo siguiente:
En la consola de Google Cloud, ve a la página Políticas de la organización.
En el selector de proyectos en la parte superior de la página, elige el recurso de la organización que deseas verificar para el estado heredado.
En el cuadro de filtro en la parte superior de la lista de políticas de la organización, ingresa
constraints/appengine.enforceServiceAccountActAsCheck
.Si la política de la organización
appengine.enforceServiceAccountActAsCheck
aparece en la lista, el recurso de la organización tiene el comportamiento heredado.Repite los pasos 3 y 4 para cada una de las siguientes restricciones de la política de la organización:
appengine.enforceServiceAccountActAsCheck
dataflow.enforceComputeDefaultServiceAccountCheck
dataproc.enforceComputeDefaultServiceAccountCheck
composer.enforceServiceAccountActAsCheck
Si aparece alguna de estas restricciones de la política de la organización, el recurso de la organización usa el comportamiento heredado.
Si el recurso de la organización de origen tiene el comportamiento heredado y el destino no lo tiene, otorga las funciones como se mencionó antes. Si los recursos de la organización de origen y de destino tienen el comportamiento heredado, no se requiere ninguna acción, pero considera aplicar la política para evitar el robo de identidad no deseado.
Migra proyectos con Analytics Hub
Si migras el proyecto que usa Analytics Hub a un recurso de organización diferente, es posible que se produzca un error. Para resolver cualquier error, comunícate con el equipo de asistencia.
Migra proyectos con el servicio de copia de seguridad y DR
Debes inhabilitar el servicio de copia de seguridad y DR antes de migrar proyectos a un recurso de la organización diferente. En este momento, cuando el servicio está inhabilitado, existe un riesgo de interrupción que debes tener en cuenta. Debes volver a habilitar el servicio de copia de seguridad y DR después de que se complete la migración al nuevo recurso de la organización.
¿Qué sigue?
Para obtener información sobre cómo realizar la migración, consulta Realiza la migración.