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ê tiver um projeto que quer mover para uma pasta do Assured Workloads configurada para o FedRAMP Moderado, é possível resolver proativamente possíveis violações de compliance que possam ocorrer antes de 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 os serviços com suporte pelo pacote de controle da pasta. Se o projeto tiver recursos para um serviço que não tem suporte do pacote de controle da pasta, talvez seja necessário reimplantar ou remover esses recursos.
Embora seja possível mudar a lista padrão de serviços compatíveis de uma pasta do Assured Workloads alterando a política da organização de restrição de uso de recursos, permitindo que serviços sem compliance sejam implantados na pasta, o serviço sem compliance e os recursos dele serão ignorados pelas verificações de compliance em segundo plano. Portanto, ao ativar um serviço sem suporte, você escolhe aceitar o risco de que ele possa fazer com que sua carga de trabalho não esteja em conformidade.
Antes de começar
- Reúna os IDs de recursos do projeto de origem e da pasta Assured Workloads de destino.
- Atribua ou verifique as permissões do IAM no projeto de origem e na pasta de destino do Assured Workloads para garantir que o autor da chamada tenha autorização para realizar a migração.
Permissões do IAM obrigatórias
Para realizar uma análise de migração, o autor da chamada precisa receber permissões do IAM usando um papel predefinido que inclua um conjunto mais amplo de permissões ou um papel personalizado restrito ao mínimo de permissões necessárias.
As seguintes permissões são necessárias:
assuredworkloads.workload.get
na carga de trabalho de destinocloudasset.assets.searchAllResources
no projeto de origemorgpolicy.policy.get
no projeto de origem e na pasta Assured Workloads de destino
Como fazer 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 o movimento do 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 é potencialmente incompatível 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 uma mudança.
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 compliance, como quando o projeto de origem contém recursos localizados em um local não permitido.
Para resolver esse problema, mova os recursos afetados para locais permitidos, exclua-os ou modifique a configuração de restrição da política da organização
gcp.resourceLocations
do destino.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 projeto usar um serviço que não tem suporte do pacote de controle da pasta Assured Workloads de destino, 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 pacote de controle da pasta do Assured Workloads de destino. Todos os valores de restrição do projeto não são avaliados. 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 vai incluir os valores esperados que são compatíveis com o pacote de controle alvo. Use esses valores esperados para fazer mudanças no projeto antes de realizar uma 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 aceita os seguintes tipos de descobertas:
- Incompatibilidades no nível do recurso para restrições de políticas da organização que não sejam
gcp.resourceLocations
. Por exemplo, alguns pacotes de controle são configurados com a restrição globalgcp.restrictCmekCryptoKeyProjects
ou a restriçãocompute.disableNestedVirtualization
específica do Compute Engine. As incompatibilidades com essas restrições entre a origem e o destino não são analisadas nem relatadas. - 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 URI do endpoint de serviço do Assured Workloads.
Esse URI precisa ser o endpoint que corresponde ao local da carga de trabalho de destino, como
https://us-west1-assuredworkloads.googleapis.com
para uma carga de trabalho regionalizada na regiãous-west1
ehttps://us-assuredworkloads.googleapis.com
para uma carga de trabalho multirregião nos EUA. - DESTINATION_ORGANIZATION_ID: o ID da organização pela 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
. Ele corresponde ao valordata region
da carga de trabalho. - DESTINATION_WORKLOAD_ID: o ID da pasta do 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 só vão conter 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 como um parâmetro de consulta adicional:
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 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 mover o projeto.
A seguir
- Entenda os pacotes de controle do Assured Workloads.
- Saiba quais produtos são compatíveis com cada pacote de controle.