Esegui la migrazione di un carico di lavoro

Questa pagina descrive come eseguire un'analisi di conformità prima di eseguire la migrazione di un progetto esistente in una cartella Assured Workloads. Questa analisi confronta il progetto di origine e la cartella Assured Workloads di destinazione per determinare quali modifiche potrebbero essere necessarie prima o dopo l'avvio della migrazione. Ad esempio, se hai un progetto che vuoi spostare in una cartella Assured Workloads configurata per FedRAMP Moderate, puoi risolvere in modo proattivo eventuali potenziali violazioni della conformità che potrebbero verificarsi prima di spostare il progetto.

L'analisi del trasferimento restituisce i seguenti tipi di risultati:

  • Il progetto di origine utilizza prodotti o servizi non supportati.
  • Il progetto di origine contiene risorse che si trovano in una posizione non consentita.
  • Il progetto di origine è configurato con valori di vincolo delle norme dell'organizzazione incompatibili con la cartella Assured Workloads di destinazione.

È importante rilevare questi problemi prima di tentare un trasferimento. Per impostazione predefinita, una cartella Assured Workloads può contenere solo tipi di risorse per i servizi supportati dal pacchetto di controllo della cartella. Se il progetto contiene risorse per un servizio non supportato dal pacchetto di controllo della cartella, potrebbe essere necessario eseguire nuovamente il deployment o rimuovere queste risorse.

Sebbene tu possa modificare l'elenco predefinito dei servizi supportati per una cartella Workload garantiti modificando il relativo criterio dell'organizzazione per il limite di utilizzo delle risorse, consentendo così di eseguire il deployment di servizi non conformi nella cartella, il servizio non conforme e le relative risorse verranno ignorati dai controlli di conformità in background. Pertanto, attivando un servizio non supportato, scegli di accettare il rischio che il tuo carico di lavoro non sia più in conformità.

Prima di iniziare

  • Raccogliere gli ID risorsa sia per il progetto di origine sia per la cartella Assured Workloads di destinazione.
  • Assegna o verifica le autorizzazioni IAM sia nel progetto di origine sia nella cartella Assured Workloads di destinazione per assicurarti che chi chiama sia autorizzato a eseguire la migrazione.

Autorizzazioni IAM richieste

Per eseguire un'analisi di migrazione, all'utente che chiama devono essere concesse autorizzazioni IAM utilizzando un ruolo predefinito che include un insieme più ampio di autorizzazioni o un ruolo personalizzato limitato alle autorizzazioni minime necessarie.

Sono richieste le seguenti autorizzazioni:

  • assuredworkloads.workload.get sul carico di lavoro di destinazione
  • cloudasset.assets.searchAllResources nel progetto di origine
  • orgpolicy.policy.get nel progetto di origine e nella cartella Assured Workloads di destinazione

Eseguire un'analisi di migrazione

Quando esegui un'analisi sul progetto di origine e sulla cartella dei carichi di lavoro garantiti di destinazione, devi risolvere eventuali risultati prima di spostare il progetto nella destinazione. Sebbene i risultati non ti impediscano di spostare il progetto, potrebbero comportare violazioni della conformità nella cartella Assured Workloads di destinazione.

Questi risultati sono di due tipi diversi:

  • Avviso: un risultato di avviso si verifica quando il progetto di origine è potenzialmente incompatibile con la destinazione e potrebbe comportare una violazione della conformità. Gli avvisi devono essere esaminati per verificare che l'incompatibilità sia accettabile o debba essere risolta prima del trasferimento.
  • Blocco: un risultato di blocco si verifica quando viene rilevata una violazione della conformità tra il progetto di origine e la destinazione. I blocchi devono essere risolti prima di procedere con uno spostamento.

Vengono segnalati i seguenti tipi di risultati:

  • Località delle risorse: molti pacchetti di controllo applicano limitazioni di località per le risorse in modo che rispettino i requisiti di conformità, ad esempio se il progetto di origine contiene risorse che si trovano in una località non consentita.

    Per risolvere il problema, sposta le risorse interessate in posizioni consentite, eliminale o modifica l'impostazione del vincolo del criterio dell'organizzazione gcp.resourceLocations del target.

  • Prodotti/servizi non supportati: ogni pacchetto di controllo supporta un elenco specifico di Google Cloud prodotti e servizi. Se il progetto utilizza un servizio non supportato dal pacchetto di controllo della cartella Workload garantiti di destinazione, questo verrà indicato come un rilevamento.

  • Vincoli dei criteri dell'organizzazione: il progetto di origine potrebbe essere configurato con valori di vincolo dei criteri dell'organizzazione diversi da quelli della cartella Assured Workloads di destinazione o non conformi al pacchetto di controllo di destinazione. Questa analisi viene eseguita solo per i vincoli pertinenti al pacchetto di controllo della cartella Workload garantiti di destinazione. Non vengono valutati tutti i valori dei vincoli del progetto. Sono possibili diversi risultati, ad esempio i seguenti problemi:

    • Il progetto e il criterio effettivo della destinazione non sono compatibili.
    • Il progetto contiene valori di vincolo dei criteri dell'organizzazione che non sono impostati sulla destinazione o viceversa.
    • Il progetto contiene valori di vincolo dei criteri dell'organizzazione non conformi al pacchetto di controllo di destinazione.

    Se viene trovato un blocco per un vincolo dei criteri dell'organizzazione, la risposta include i valori previsti conformi al pacchetto di controllo target. Puoi utilizzare questi valori previsti per apportare modifiche al progetto prima di eseguire una migrazione.

Per risolvere il problema, determina quale vincolo dei criteri dell'organizzazione deve essere modificato e apporta le modifiche necessarie.

Tipi di risultati non supportati

L'analisi della migrazione non supporta i seguenti tipi di risultati:

  • Incompatibilità a livello di risorsa per vincoli delle policy dell'organizzazione diversi da gcp.resourceLocations. Ad esempio, alcuni pacchetti di controllo sono configurati con il vincolo gcp.restrictCmekCryptoKeyProjects globale o con il vincolo compute.disableNestedVirtualization specifico di Compute Engine. Le incompatibilità con questi vincoli tra l'origine e la destinazione non vengono analizzate o registrate.
  • Funzionalità specifiche del servizio che possono essere disattivate per un determinato pacchetto di controllo. Ad esempio, i controlli di uptime di Cloud Monitoring sono disattivati per le cartelle IL4 e le funzioni remote di BigQuery sono disattivate per le cartelle ITAR. Se il progetto di origine utilizza queste funzionalità disabilitate, queste incompatibilità non vengono analizzate o segnalate.

Analisi dello spostamento di un progetto in una cartella Assured Workloads

Il metodo analyzeWorkloadMove esegue un'analisi dello spostamento del progetto di origine nella cartella Workload garantiti di destinazione.

Nell'esempio di richiesta riportato di seguito, sostituisci i seguenti parametri con i tuoi:

  • ENDPOINT_URI: l'URI dell'endpoint del servizio Assured Workloads. Questo URI deve essere l'endpoint corrispondente alla posizione del workload di destinazione, ad esempio https://us-west1-assuredworkloads.googleapis.com per un workload regionalizzato nella regione us-west1 e https://us-assuredworkloads.googleapis.com per un workload multi-regione negli Stati Uniti.
  • DESTINATION_ORGANIZATION_ID: l'ID organizzazione per il workload di destinazione a cui verrà eseguita la migrazione del progetto di origine. Ad esempio: 919698201234
  • DESTINATION_LOCATION_ID: la posizione del carico di lavoro di destinazione. Ad esempio: us-west1 o us. Corrisponde al valore data region del carico di lavoro.
  • DESTINATION_WORKLOAD_ID: l'ID della cartella Workloads garantiti di destinazione in cui verrà eseguita la migrazione del progetto di origine. Ad esempio: 00-701ea036-7152-4780-a867-9f5
  • SOURCE_PROJECT_ID: parametro di query per l'ID del progetto di origine di cui eseguire la migrazione. Ad esempio: my-project-123
  • ASSET_TYPES: facoltativo. Un tipo di risorsa per parametro di query che filtra i risultati solo in base ai tipi specificati. Ad esempio: cloudresourcemanager.googleapis.com/Project.
  • PAGE_SIZE: facoltativo. Parametro di query per il numero di risultati da restituire per pagina. Ad esempio: 5
  • PAGE_TOKEN: facoltativo. Parametro di query per il token per continuare con i risultati suddivisi in pagine. Ad esempio: CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

Metodo HTTP, URL e parametri di query:

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

Ad esempio:

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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
}

Per filtrare i risultati in base a un tipo di asset specifico, utilizza il parametro di query 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

I risultati conterranno solo i risultati del tipo specificato (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"
}

Per filtrare i risultati in base a più tipi di asset, aggiungi ciascuno come parametro di query aggiuntivo:

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

I risultati conterranno solo i risultati dei tipi specificati (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"
}

Dopo aver eseguito l'analisi di migrazione, esamina e risolvi eventuali avvisi o blocchi, quindi esegui di nuovo l'analisi per verificare che siano stati risolti. A questo punto, puoi procedere con il trasferimento del progetto.

Passaggi successivi