Migre uma carga de trabalho
Esta página descreve como realizar uma análise de conformidade antes de migrar um projeto existente para uma pasta do Assured Workloads. Esta análise compara o projeto de origem e a pasta de cargas de trabalho seguras de destino para determinar que alterações podem ser necessárias antes ou depois de iniciar a migração. Por exemplo, se tiver um projeto que quer mover para uma pasta do Assured Workloads configurada para o FedRAMP Moderate, pode resolver proativamente potenciais violações de conformidade que possam ocorrer antes de mover o projeto.
A análise de movimento devolve os seguintes tipos de resultados:
- O projeto de origem usa produtos ou serviços não suportados.
- O projeto de origem contém recursos localizados numa localização não permitida.
- O projeto de origem está configurado com valores de restrição da política da organização que são incompatíveis com a pasta do Assured Workloads de destino.
É importante descobrir estas conclusões antes de tentar uma mudança. Por predefinição, uma pasta do Assured Workloads só pode conter tipos de recursos para os serviços suportados pelo pacote de controlos da pasta. Se o seu projeto contiver recursos para um serviço que não é suportado pelo pacote de controlo da pasta, pode ter de voltar a implementar ou remover esses recursos.
Embora possa alterar a lista predefinida de serviços suportados para uma pasta do Assured Workloads alterando a respetiva política da organização de restrição de utilização de recursos, permitindo assim que serviços que não estejam em conformidade sejam implementados na sua pasta, o serviço que não esteja em conformidade e os respetivos recursos são ignorados pelas verificações de conformidade em segundo plano. Por conseguinte, ao ativar um serviço não suportado, está a optar por aceitar o risco de que este possa fazer com que a sua carga de trabalho deixe de estar em conformidade.
Migrar pastas e projetos do Assured Workloads
Se estiver a migrar pastas ou projetos do Assured Workloads, migre-os apenas para uma pasta que use o mesmo pacote de controlos. Caso contrário, pode incorrer em taxas de faturação adicionais e comprometer o seu estado de conformidade.
Antes de começar
- Reúna os IDs de recursos do projeto de origem e da pasta do Assured Workloads de destino.
- Atribua ou valide as autorizações do IAM no projeto de origem e na pasta do Assured Workloads de destino para garantir que o autor da chamada tem autorização para realizar a migração.
Autorizações de IAM necessárias
Para realizar uma análise de migração, o autor da chamada tem de receber autorizações do IAM através de uma função predefinida que inclua um conjunto mais amplo de autorizações ou uma função personalizada restrita às autorizações mínimas necessárias.
As seguintes autorizaçõ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
Fazer uma análise de migração
Quando realizar uma análise no projeto de origem e na pasta Assured Workloads de destino, deve resolver todas as conclusões antes de mover o projeto para o destino. Embora as conclusões não impeçam a movimentação do projeto, podem resultar em violações de conformidade na pasta Assured Workloads de destino.
Estas conclusões 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 numa violação da conformidade. Os avisos devem ser investigados para verificar se a incompatibilidade é aceitável ou se deve ser resolvida antes da mudança.
- Bloqueador: um resultado de bloqueador ocorre quando é detetada uma violação de conformidade entre o projeto de origem e o destino. Os bloqueios têm de ser resolvidos antes de avançar com a mudança.
São comunicados os seguintes tipos de conclusões:
Localizações de recursos: muitos pacotes de controlo aplicam restrições de localização aos recursos para cumprir os requisitos de conformidade, por exemplo, se o seu projeto de origem contiver recursos localizados numa localização não permitida.
Para resolver este problema, mova os recursos afetados para localizações permitidas, elimine-os ou modifique a definição da restrição da política da organização
gcp.resourceLocations
do destino.Produtos/serviços não suportados: cada pacote de controlos suporta uma lista específica de Google Cloud produtos e serviços. Se o seu projeto usar um serviço que não é suportado pelo pacote de controlos da pasta Assured Workloads de destino, este será apresentado como uma descoberta.
Restrições da política da organização: o projeto de origem pode estar configurado com valores de restrição da política da organização que diferem da política em vigor da pasta Assured Workloads de destino ou não estão em conformidade com o pacote de controlo de destino. Esta análise é realizada apenas para restrições relevantes para o pacote de controlo da pasta Assured Workloads de destino. Todos os valores de restrição do projeto não são avaliados. São possíveis vários resultados, como os seguintes problemas:
- O seu projeto e a política em vigor do destino são incompatíveis.
- O seu projeto tem valores de restrição da política da organização que não estão definidos no destino ou vice-versa.
- O seu projeto tem valores de restrição da política da organização que não estão em conformidade com o pacote de controlo de destino.
Se for encontrado um bloqueador para uma restrição de política organizacional, a resposta inclui os valores esperados que estão em conformidade com o pacote de controlo de destino. Pode usar estes valores esperados para fazer alterações ao seu projeto antes de realizar uma migração.
Para resolver este problema, determine que restrição da política da organização tem de ser modificada e faça as alterações necessárias.
Tipos de resultados não suportados
A análise da migração não suporta os seguintes tipos de resultados:
- Incompatibilidades ao nível do recurso para restrições da política da organização que não sejam
gcp.resourceLocations
. Por exemplo, alguns pacotes de controlo são configurados com a restrição globalgcp.restrictCmekCryptoKeyProjects
ou a restriçãocompute.disableNestedVirtualization
específica do Compute Engine. As incompatibilidades com estas restrições entre a origem e o destino não são analisadas nem comunicadas. - Funcionalidades específicas do serviço que podem ser desativadas para um determinado pacote de controlos. 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 seu projeto de origem usar estas funcionalidades desativadas, estas incompatibilidades não são analisadas nem comunicadas.
Analisar a mudança 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
Assured Workloads de destino.
No exemplo de pedido abaixo, substitua os seguintes parâmetros pelos seus:
- ENDPOINT_URI: o URI do ponto final do serviço
Assured Workloads.
Este URI tem de ser o ponto final correspondente à localização 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 multirregional nos EUA. - DESTINATION_ORGANIZATION_ID: o ID da organização da carga de trabalho de destino para a qual o projeto de origem vai ser migrado. Por
exemplo:
919698201234
- DESTINATION_LOCATION_ID: a localização da carga de trabalho de destino. Por exemplo:
us-west1
ouus
. Corresponde ao valordata region
da carga de trabalho. - DESTINATION_WORKLOAD_ID: o ID da pasta Assured Workloads de destino para onde o projeto de origem vai 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 migrar. Por exemplo:
my-project-123
- ASSET_TYPES: opcional. Um tipo de recurso por parâmetro de consulta que filtra os resultados apenas para os tipos especificados.
Por exemplo:
cloudresourcemanager.googleapis.com/Project
- PAGE_SIZE: opcional. Parâmetro de consulta para o número de resultados a devolver por página, até um máximo de 50. Por exemplo:
5
- PAGE_TOKEN: opcional. Parâmetro de consulta para o token para continuar
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
Por 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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 conclusões 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ó contêm as conclusões 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 conclusões 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 só contêm as conclusões 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, reveja e resolva todos os avisos ou bloqueios e, em seguida, execute novamente a análise para verificar se foram resolvidos. Em seguida, pode avançar para a transferência do projeto.
O que se segue?
- Compreenda os pacotes de controlos do Assured Workloads.
- Saiba que produtos são suportados para cada pacote de controlos.