Migrar uma carga de trabalho
Esta página descreve como realizar uma análise de compliance antes de migrar um projeto para uma pasta do Assured Workloads. Essa análise compara o projeto de origem e a pasta de destino do Assured Workloads para determinar quais mudanças podem ser necessárias antes ou depois de iniciar a migração. Por exemplo, se você tem um projeto que deseja mover para um pasta Assured Workloads configurada para FedRAMP de nível médio, é possível: resolver de maneira proativa as possíveis violações de conformidade para mover o projeto.
A análise de movimento retorna os seguintes tipos de descobertas:
- O projeto de origem usa produtos ou serviços sem suporte.
- O projeto de origem contém recursos em um local proibido.
- O projeto de origem está configurado com valores de restrição de política da organização que são incompatíveis com a pasta de destino do Assured Workloads.
Essas descobertas são importantes para descobrir antes de tentar uma mudança. Por padrão, uma pasta do Assured Workloads só pode conter tipos de recursos para o serviços que têm suporte das no pacote de controle da pasta. Se o projeto tiver recursos para um ou serviço incompatível com o pacote de controle da pasta, talvez seja necessário para reimplantar ou remover esses recursos.
É possível alterar a lista padrão de serviços compatíveis pasta do Assured Workloads alterando política da organização para restrição de uso de recursos o que permite que serviços que não estejam em conformidade sejam implantados em sua pasta, o serviço sem conformidade e os recursos dele serão ignorados por segundo plano e verificações de compliance. Portanto, ao ativar um serviço sem suporte, você escolhe aceitar o risco de que ele possa fazer com que sua carga de trabalho fique fora do compliance.
Antes de começar
- Coletar os IDs de recursos para o projeto de origem e o de destino pasta do Assured Workloads.
- Atribua ou verifique as permissões do IAM na o projeto de origem e a pasta de destino do Assured Workloads para verificar se o autor da chamada está autorizado a executar a migração.
Permissões do IAM obrigatórias
Para realizar uma análise de migração, o autor da chamada precisa ter acesso ao IAM as permissões usando um papel predefinido, que inclui um um conjunto mais amplo de permissões ou uma um papel personalizado restrito a as permissões mínimas necessárias.
As seguintes permissões são necessárias:
assuredworkloads.workload.get
no destino carga de trabalhocloudasset.assets.searchAllResources
no projeto de origemorgpolicy.policy.get
no projeto de origem e no destino Pasta do Assured Workloads
Como realizar uma análise de migração
Ao realizar uma análise no projeto de origem e na pasta do Assured Workloads de destino, resolva todas as descobertas antes de mover o projeto para o destino. Embora as descobertas não impeçam que você mova o projeto, elas podem resultar em violações de compliance na pasta Assured Workloads de destino.
Essas descobertas são de dois tipos diferentes:
- Aviso: um resultado de aviso ocorre quando o projeto de origem pode com o destino e pode resultar em uma violação de compliance. Os avisos precisam ser investigados para verificar se a incompatibilidade é aceitável ou precisa ser resolvida antes da mudança.
- Bloqueador: um resultado de bloqueador ocorre quando uma violação de compliance é detectada entre o projeto de origem e o destino. Os bloqueadores precisam ser resolvidos antes de prosseguir com um movimento.
Os seguintes tipos de descobertas são informados:
Locais de recursos: muitos pacotes de controle aplicam restrições de local para que os recursos sigam os requisitos de conformidade, como se o projeto de origem contiver recursos localizados em um local não permitido.
Para resolver esse problema, mova os recursos afetados para os locais permitidos: excluí-los ou modificar a organização
gcp.resourceLocations
do destino. configuração de restrição de política.Produtos/serviços sem suporte: cada pacote de controle oferece suporte a uma lista específica de produtos e serviços do Google Cloud. Se o seu projeto usa uma serviço incompatível com o Assured Workloads de destino no pacote de controle da pasta, isso será listado como uma descoberta.
Restrições da política da organização: o projeto de origem pode ser configurado com valores de restrição da política da organização diferentes da política efetiva da pasta "Assured Workloads" de destino ou não estar em conformidade com o pacote de controle de destino. Essa análise é realizada apenas para restrições relevantes para o Assured Workloads de destino do pacote de controle da pasta. nem todos os valores de restrição do projeto avaliado. Vários resultados são possíveis, como os seguintes problemas:
- Seu projeto e a política vigente do destino são incompatíveis.
- O projeto tem valores de restrição de política da organização que não estão definidos no destino ou vice-versa.
- O projeto tem valores de restrição da política da organização que não são compatíveis com o pacote de controle de destino.
Se um bloqueador for encontrado para uma restrição de política da organização, a resposta inclui os valores esperados que estão em conformidade com o controle de segmentação . Você pode usar esses valores esperados para fazer alterações no seu projeto antes de fazer a migração.
Para resolver esse problema, determine qual restrição da política da organização precisa ser modificada e faça as mudanças necessárias.
Tipos de descobertas sem suporte
A análise de migração não é compatível com os seguintes tipos de descobertas:
- Incompatibilidades no nível do recurso para restrições da política da organização: outras
de
gcp.resourceLocations
. Por exemplo, alguns pacotes de controle são configuradas com a restriçãogcp.restrictCmekCryptoKeyProjects
global ou o parâmetrocompute.disableNestedVirtualization
específico do Compute Engine constraint; incompatibilidades com essas restrições entre a fonte e de destino não são analisados nem informados. - Recursos específicos do serviço que podem ser desativados para um determinado pacote de controle. Por exemplo, as verificações de tempo de atividade do Cloud Monitoring estão desativadas para pastas IL4, e as funções remotas do BigQuery estão desativadas para pastas ITAR. Se o projeto de origem usar esses recursos desativados, essas incompatibilidades não serão analisadas nem relatadas.
Como analisar a movimentação de um projeto para uma pasta do Assured Workloads
O método
analyzeWorkloadMove
executa uma análise da movimentação do projeto de origem para a pasta
de destino do Assured Workloads.
No exemplo de solicitação abaixo, substitua os seguintes parâmetros pelos seus:
- ENDPOINT_URI: o Assured Workloads
URI do endpoint de serviço.
Esse URI precisa ser o endpoint que corresponde ao local do destino
carga de trabalho, como
https://us-west1-assuredworkloads.googleapis.com
para um regionalizada na regiãous-west1
ehttps://us-assuredworkloads.googleapis.com
para uma carga de trabalho multirregional em nos EUA. - DESTINATION_ORGANIZATION_ID: o ID da organização do
carga de trabalho de destino para a qual o projeto de origem será migrado. Exemplo:
919698201234
- DESTINATION_LOCATION_ID: o local da carga de trabalho de destino. Por exemplo,
us-west1
ouus
. Ela corresponde à Valordata region
da carga de trabalho. - DESTINATION_WORKLOAD_ID: o ID da pasta
Assured Workloads de destino para onde o projeto de origem será migrado.
Por exemplo:
00-701ea036-7152-4780-a867-9f5
- SOURCE_PROJECT_ID: parâmetro de consulta para o ID do projeto
de origem a ser migrado. Por exemplo:
my-project-123
- ASSET_TYPES: opcional. Um
tipo de recurso por parâmetro de consulta
que filtra as descobertas apenas para os tipos especificados.
Exemplo:
cloudresourcemanager.googleapis.com/Project
- PAGE_SIZE: opcional. Parâmetro de consulta para o número de resultados a serem
retornados por página. Por exemplo:
5
- PAGE_TOKEN: opcional. Parâmetro de consulta para que o token continue
os resultados paginados. Por exemplo:
CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA
Método HTTP, URL e parâmetros de consulta:
GET https://[ENDPOINT_URI]/v1/organizations/[DESTINATION_ORGANIZATION_ID]/locations/[DESTINATION_LOCATION_ID]/workloads/[DESTINATION_WORKLOAD_ID]:analyzeWorkloadMove?project=projects/SOURCE_PROJECT_ID&page_size=PAGE_SIZE&page_token=PAGE_TOKEN
Exemplo:
GET https://us-west1-assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA
Você receberá uma resposta JSON semelhante a esta:
{ "assetMoveAnalyses": [ { "asset": "//orgpolicy.googleapis.com/projects/130536381852/policies/container.restrictNoncompliantDiagnosticDataAccess", "assetType": "orgpolicy.googleapis.com/Policy" }, { "asset": "//compute.googleapis.com/projects/my-project-123/global/routes/default-route-9ca6e6b0ab7326f0", "assetType": "compute.googleapis.com/Route", "analysisGroups": [ { "displayName": "RESOURCE_LOCATIONS", "analysisResult": { "warnings": [ { "detail": "The asset's location 'global' is incompatible with the gcp.resourceLocations org policy effective at the target. In case of 'global only' assets, this may be ignored." } ] } } ] }, { "asset": "//compute.googleapis.com/projects/my-project-123/regions/europe-west10/subnetworks/default", "assetType": "compute.googleapis.com/Subnetwork", "analysisGroups": [ { "displayName": "RESOURCE_LOCATIONS", "analysisResult": { "blockers": [ { "detail": "The asset's location 'europe-west10' is incompatible with the gcp.resourceLocations org policy effective at the target." } ] } } ] }, { "asset": "//serviceusage.googleapis.com/projects/130536381852/services/servicemanagement.googleapis.com", "assetType": "serviceusage.googleapis.com/Service" }, { "asset": "//serviceusage.googleapis.com/projects/130536381852/services/monitoring.googleapis.com", "assetType": "serviceusage.googleapis.com/Service" }, { "asset": "//serviceusage.googleapis.com/projects/130536381852/services/bigquerymigration.googleapis.com", "assetType": "serviceusage.googleapis.com/Service", "analysisGroups": [ { "displayName": "DISALLOWED_SERVICES", "analysisResult": { "warnings": [ { "detail": "This service is not allowed by the gcp.restrictServiceUsage org policy effective at the target" } ] } } ] }, { "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123", "assetType": "cloudresourcemanager.googleapis.com/Project", "analysisGroups": [ { "displayName": "ORG_POLICIES", "analysisResult": { "warnings": [ { "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target." }, { "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target." }, { "detail": "constraints/cloudkms.allowedProtectionLevels: Source and target set different values for this policy." }, { "detail": "constraints/container.restrictNoncompliantDiagnosticDataAccess: Source and target set different values for this policy." }, { "detail": "constraints/gcp.restrictServiceUsage: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target." } ], "blockers": [ { "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]." }, { "detail": "constraints/container.restrictNoncompliantDiagnosticDataAccess: The value applied at the source is not compliant with the target compliance program. The expected value is [true]." }, { "detail": "constraints/container.restrictTLSVersion: The value applied at the source is not compliant with the target compliance program. The expected denied values are [TLS_VERSION_1, TLS_VERSION_1_1]." } ] } } ] } ], "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy" }
Para filtrar as descobertas por um tipo de recurso específico, use o parâmetro de consulta
asset_types
:
GET https://assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&asset_types=cloudresourcemanager.googleapis.com/Project&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA
Os resultados vão conter apenas as descobertas do tipo especificado
(cloudresourcemanager.googleapis.com/Project
):
{ "assetMoveAnalyses": [ { "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123", "assetType": "cloudresourcemanager.googleapis.com/Project", "analysisGroups": [ { "displayName": "ORG_POLICIES", "analysisResult": { "warnings": [ { "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target." }, { "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target." } ], "blockers": [ { "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]." } ] } } ] } ], "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy" }
Para filtrar as descobertas por mais de um tipo de recurso, adicione cada um deles parâmetro de consulta:
GET https://assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&asset_types=cloudresourcemanager.googleapis.com/Project&asset_types=serviceusage.googleapis.com/Service&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA
Os resultados vão conter apenas as descobertas dos tipos especificados
(cloudresourcemanager.googleapis.com/Project
e
serviceusage.googleapis.com/Service
):
{ "assetMoveAnalyses": [ { "asset": "//serviceusage.googleapis.com/projects/130536381852/services/bigquerymigration.googleapis.com", "assetType": "serviceusage.googleapis.com/Service", "analysisGroups": [ { "displayName": "DISALLOWED_SERVICES", "analysisResult": { "warnings": [ { "detail": "This service is not allowed by the gcp.restrictServiceUsage org policy effective at the target" } ] } } ] }, { "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123", "assetType": "cloudresourcemanager.googleapis.com/Project", "analysisGroups": [ { "displayName": "ORG_POLICIES", "analysisResult": { "warnings": [ { "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target." }, { "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target." } ], "blockers": [ { "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]." } ] } } ] } ], "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy" }
Depois de realizar a análise de migração, revise e resolva todos os alertas ou bloqueadores e execute a análise novamente para verificar se eles foram resolvidos. Em seguida, você pode prosseguir para mover o projeto.
A seguir
- Entenda os pacotes de controle do Assured Workloads.
- Saiba quais produtos têm suporte para cada pacote de controle.