Esegui la migrazione di un carico di lavoro

Questa pagina descrive come eseguire un'analisi di conformità prima di eseguire la migrazione di un un progetto esistente in una cartella Assured Workloads. Questa analisi mette a confronto il progetto di origine e la cartella Assured Workloads di destinazione determinare quali modifiche potrebbero essere necessarie prima o dopo l'avvio 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 dello spostamento 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 un percorso non consentito in ogni località.
  • Il progetto di origine è configurato con valori di vincolo dei criteri dell'organizzazione incompatibili con la cartella Assured Workloads di destinazione.

È importante scoprire questi risultati prima di tentare una mossa. Per impostazione predefinita, una cartella Assured Workloads può contenere solo tipi di risorse per servizi supportati da pacchetto di controlli della cartella. Se il progetto contiene risorse per un non supportato dal pacchetto di controllo della cartella, potresti aver bisogno per rieseguire il deployment o rimuovere queste risorse.

Anche se è possibile modificare l'elenco predefinito dei servizi supportati per un Cartella Assured Workloads modificandone criterio dell'organizzazione per il limite di utilizzo delle risorse consentendo il deployment nella tua cartella di servizi non conformi— il servizio non conforme e le sue risorse verranno ignorati di conformità. 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

  • Raccogli gli ID risorsa sia per il progetto di origine sia per la destinazione Cartella Assured Workloads.
  • Assegna o verifica le autorizzazioni IAM su entrambe le piattaforme di origine e la cartella Assured Workloads di destinazione assicurati che il chiamante sia autorizzato a eseguire la migrazione.

Autorizzazioni IAM richieste

Per eseguire un'analisi della migrazione, al chiamante deve essere concesso IAM le autorizzazioni utilizzando ruolo predefinito che include un un set più ampio di autorizzazioni o un ruolo personalizzato limitato a le autorizzazioni minime necessarie.

Sono richieste le seguenti autorizzazioni:

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

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: si verifica un risultato quando il progetto di origine è potenzialmente incompatibili con la destinazione e potrebbero comportare una violazione della conformità. Gli avvisi devono essere esaminati per verificare se l'incompatibilità è accettabile o se deve 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 relative alle località. per far rispettare i requisiti di conformità, come nel caso in cui la tua Il progetto contiene risorse che si trovano in una località non consentita.

    Per risolvere il problema, sposta le risorse interessate nelle località consentite, eliminale o modifica l'organizzazione gcp.resourceLocations della destinazione dell'impostazione del vincolo del criterio.

  • Prodotti/servizi non supportati: ogni pacchetto di controllo supporta una un elenco specifico di prodotti e servizi Google Cloud. 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 del criterio effettivo della cartella Assured Workloads di destinazione o non essere conforme al pacchetto di controllo di destinazione. Questa analisi viene eseguita solo per i vincoli pertinenti al pacchetto di controllo della cartella Assured Workloads di destinazione. Non vengono valutati tutti i valori dei vincoli del progetto. Sono possibili diversi risultati, come i seguenti problemi:

    • Il progetto e il criterio effettivo della destinazione non sono compatibili.
    • Nel progetto sono presenti valori di vincolo del criterio dell'organizzazione che non sono impostati sulla destinazione o viceversa.
    • Il progetto ha valori di vincolo del criterio dell'organizzazione che non sono conformi al pacchetto di controlli 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 usare 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 dei criteri dell'organizzazione altro di 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 Assured Workloads di destinazione.

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

  • ENDPOINT_URI: Assured Workloads URI endpoint di servizio. Questo URI deve essere l'endpoint corrispondente alla posizione del carico di lavoro di destinazione, ad esempio https://us-west1-assuredworkloads.googleapis.com per un carico di lavoro regionalizzato nella regione us-west1 e https://us-assuredworkloads.googleapis.com per un carico di lavoro multi-regione negli Stati Uniti.
  • DESTINATION_ORGANIZATION_ID: l'ID organizzazione per il carico di lavoro 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 alla Valore data region del carico di lavoro.
  • DESTINATION_WORKLOAD_ID: l'ID della destinazione Cartella Assured Workloads 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. Uno. tipo di asset per query che filtrerà i risultati solo per i 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 ricerca:

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 la 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