Migrazione di un carico di lavoro

Questa pagina descrive come eseguire un'analisi di conformità prima di eseguire la migrazione di un progetto esistente a una cartella di 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 vuoi spostare un progetto 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 una località non consentita.
  • Il progetto di origine è configurato con valori dei vincoli dei criteri dell'organizzazione incompatibili con la cartella Assured Workloads di destinazione.

Questi risultati sono importanti da scoprire prima di tentare un movimento. 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, potresti dover eseguire nuovamente il deployment o rimuovere queste risorse.

Anche se puoi modificare l'elenco predefinito dei servizi supportati per una cartella Assured Workloads modificando il criterio dell'organizzazione per la limitazione di utilizzo delle risorse, consentendo in questo modo il deployment di servizi non conformi nella tua cartella, il servizio non conforme e le relative risorse verranno ignorati dai controlli di conformità in background. Pertanto, abilitando un servizio non supportato, scegli di accettare il rischio che possa causare la mancata conformità del carico di lavoro.

Prima di iniziare

  • Raccogli gli ID risorsa sia per il progetto di origine sia per la cartella di destinazione Assured Workloads.
  • Assegna o verifica le autorizzazioni IAM sia sul progetto di origine sia sulla cartella Assured Workloads di destinazione per assicurarti che il chiamante sia autorizzato a eseguire la migrazione.

Autorizzazioni IAM richieste

Per eseguire un'analisi della migrazione, al chiamante devono essere concesse le autorizzazioni IAM utilizzando un ruolo predefinito che include un insieme più ampio di autorizzazioni, oppure 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 sul progetto di origine
  • orgpolicy.policy.get sul progetto di origine e sulla destinazione nella cartella Assured Workloads

Esecuzione di un'analisi della migrazione

Quando esegui un'analisi sul progetto di origine e sulla cartella Assured Workloads di destinazione, devi esaminare eventuali risultati prima di spostare il progetto nella destinazione. Anche se i risultati non ti impediscono di spostare il progetto, potrebbero causare violazioni della conformità nella cartella Assured Workloads di destinazione.

Questi risultati sono di due tipi diversi:

  • Avviso: si verifica un avviso quando il progetto di origine è potenzialmente incompatibile con la destinazione e potrebbe causare una violazione della conformità. Gli avvisi devono essere esaminati per verificare che l'incompatibilità sia accettabile o che debba essere risolta prima dello spostamento.
  • Bloccatore: si verifica un risultato di blocco 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 riportati i seguenti tipi di risultati:

  • Località delle risorse: molti pacchetti di controllo applicano limitazioni relative alla località per le risorse per ottemperare ai 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 nelle località consentite, eliminale o modifica l'impostazione del vincolo del criterio dell'organizzazione gcp.resourceLocations della destinazione.

  • Prodotti/servizi non supportati: ogni pacchetto di controllo supporta un elenco specifico di prodotti e servizi Google Cloud. Se il progetto utilizza un servizio non supportato dal pacchetto di controllo della cartella Assured Workloads di destinazione, verrà elencato come risultato.

  • Vincoli dei criteri dell'organizzazione: il progetto di origine potrebbe essere configurato con valori dei vincoli dei criteri dell'organizzazione diversi dal criterio effettivo 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 Assured Workloads di destinazione. Tutti i valori dei vincoli del progetto non vengono valutati. Si possono ottenere diversi risultati, tra cui i seguenti problemi:

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

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

Per risolvere il problema, determina quale vincolo del criterio dell'organizzazione deve essere modificato e apporta le modifiche richieste.

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 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 per Compute Engine; le incompatibilità con questi vincoli tra l'origine e la destinazione non vengono analizzate né segnalate.
  • Funzionalità specifiche del servizio che possono essere disabilitate per un determinato pacchetto di controllo. Ad esempio, i controlli di uptime di Cloud Monitoring sono disabilitati per le cartelle IL4 e le funzioni remote di BigQuery sono disabilitate per le cartelle ITAR; se il progetto di origine utilizza queste funzionalità disabilitate, queste incompatibilità non vengono analizzate né 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 di destinazione Assured Workloads.

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

  • ENDPOINT_URI: l'URI dell'endpoint di servizio di Assured Workloads. Questo URI deve essere l'endpoint che corrisponde alla località 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 multiregionale negli Stati Uniti.
  • DESTINATION_ORGANIZATION_ID: l'ID organizzazione del carico di lavoro di destinazione in 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 di destinazione 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. Un tipo di asset per parametro di query che filtrerà i risultati solo sui 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 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 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 eventuali 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 di essi 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 eventuali 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 della migrazione, esamina e risolvi eventuali avvisi o blocchi, quindi esegui di nuovo l'analisi per verificare che siano stati risolti. Quindi, puoi procedere con lo spostamento del progetto.

Passaggi successivi