Arbeitslast migrieren

Auf dieser Seite wird beschrieben, wie Sie eine Complianceanalyse durchführen, bevor Sie ein vorhandenes Projekt zu einem Assured Workloads-Ordner migrieren. Bei dieser Analyse werden das Quellprojekt und der Assured Workloads-Zielordner verglichen, um festzustellen, welche Änderungen vor oder nach dem Initiieren der Migration erforderlich sein könnten. Wenn Sie beispielsweise ein Projekt in einen Assured Workloads-Ordner verschieben möchten, der für FedRAMP Moderate konfiguriert ist, können Sie alle potenziellen Complianceverstöße proaktiv beheben, bevor Sie das Projekt verschieben.

Die folgenden Ergebnistypen werden von der Bewegungsanalyse zurückgegeben:

  • Im Quellprojekt werden nicht unterstützte Produkte oder Dienste verwendet.
  • Das Quellprojekt enthält Ressourcen, die sich an einem unzulässigen Standort befinden.
  • Das Quellprojekt ist mit Werten für Einschränkungen der Organisationsrichtlinie konfiguriert, die mit dem Assured Workloads-Zielordner nicht kompatibel sind.

Es ist wichtig, diese Ergebnisse vor dem Verschieben zu ermitteln. Standardmäßig kann ein Assured Workloads-Ordner nur Ressourcentypen für die Dienste enthalten, die vom Steuerungspaket des Ordners unterstützt werden. Wenn Ihr Projekt Ressourcen für einen Dienst enthält, der vom Steuerpaket des Ordners nicht unterstützt wird, müssen Sie diese Ressourcen möglicherweise noch einmal bereitstellen oder entfernen.

Sie können die Standardliste der unterstützten Dienste für einen Assured Workloads-Ordner ändern, indem Sie die Organisationsrichtlinie zur Einschränkung der Ressourcennutzung ändern. Dadurch können nicht konforme Dienste in Ihrem Ordner bereitgestellt werden. Der nicht konforme Dienst und seine Ressourcen werden bei Zuverlässigkeitsüberprüfungen im Hintergrund ignoriert. Wenn Sie einen nicht unterstützten Dienst aktivieren, akzeptieren Sie daher das Risiko, dass Ihre Arbeitslast nicht mehr den Compliance-Anforderungen entspricht.

Hinweise

  • Erfassen Sie die Ressourcen-IDs sowohl für das Quellprojekt als auch für den Assured Workloads-Zielordner.
  • Weisen Sie IAM-Berechtigungen zu oder überprüfen Sie sie sowohl für das Quellprojekt als auch für den Assured Workloads-Zielordner, um sicherzustellen, dass der Aufrufer zum Ausführen der Migration autorisiert ist.

Erforderliche IAM-Berechtigungen

Zum Durchführen einer Migrationsanalyse müssen dem Aufrufer IAM-Berechtigungen mithilfe einer vordefinierten Rolle mit einem umfassenderen Satz von Berechtigungen oder einer benutzerdefinierten Rolle gewährt werden, die auf die unbedingt erforderlichen Berechtigungen beschränkt ist.

Folgende Berechtigungen sind erforderlich:

  • assuredworkloads.workload.get für die Zielarbeitslast
  • cloudasset.assets.searchAllResources für das Quellprojekt
  • orgpolicy.policy.get für das Quellprojekt und den Zielordner für Assured Workloads

Migrationsanalyse durchführen

Wenn Sie eine Analyse des Quellprojekts und des Zielordners Assured Workloads durchführen, sollten Sie sich mit allen Ergebnissen befassen, bevor Sie das Projekt an das Ziel verschieben. Die Ergebnisse hindern Sie zwar nicht daran, das Projekt zu verschieben, können aber zu Complianceverstößen im Zielordner Assured Workloads führen.

Es gibt zwei verschiedene Arten von Ergebnissen:

  • Warnung: Wenn das Quellprojekt potenziell mit dem Ziel nicht kompatibel ist, wird eine Warnung angezeigt, was zu einem Complianceverstoß führen kann. Warnungen sollten untersucht werden, um sicherzustellen, dass die Inkompatibilität entweder akzeptabel ist oder vor der Verschiebung behoben werden sollte.
  • Blocker: Ein Blockerergebnis tritt auf, wenn ein Complianceverstoß zwischen dem Quellprojekt und dem Ziel erkannt wird. Hindernisse müssen vor dem Verschieben beseitigt werden.

Die folgenden Arten von Ergebnissen werden gemeldet:

  • Ressourcenstandorte: Viele Steuerpakete erzwingen Standorteinschränkungen für Ressourcen, um die Complianceanforderungen zu erfüllen, z. B. wenn Ihr Quellprojekt Ressourcen enthält, die sich an einem unzulässigen Standort befinden.

    Verschieben Sie die betroffenen Ressourcen an zulässige Speicherorte, löschen Sie sie oder ändern Sie die Einschränkungseinstellung der Organisationsrichtlinie gcp.resourceLocations, um dieses Problem zu beheben.

  • Nicht unterstützte Produkte/Dienste: Jedes Steuerpaket unterstützt eine spezifische Liste von Google Cloud-Produkten und -Diensten. Wenn Ihr Projekt einen Dienst verwendet, der vom Steuerungspaket des Assured Workloads-Zielordners nicht unterstützt wird, wird dies als Ergebnis aufgeführt.

  • Einschränkungen für Organisationsrichtlinien: Ihr Quellprojekt ist möglicherweise mit Einschränkungen für Organisationsrichtlinien konfiguriert, die von der geltenden Richtlinie des Assured Workloads-Zielordners abweichen oder nicht mit dem Zielsteuerungspaket konform sind. Diese Analyse wird nur für Einschränkungen durchgeführt, die für das Steuerpaket des Assured Workloads-Zielordners relevant sind. Es werden keine Einschränkungswerte des Projekts ausgewertet. Verschiedene Ergebnisse sind möglich, z. B. die folgenden Probleme:

    • Ihr Projekt und die geltende Richtlinie des Ziels sind nicht kompatibel.
    • Ihr Projekt hat Einschränkungswerte für Organisationsrichtlinien, die nicht für das Ziel festgelegt sind oder umgekehrt.
    • Ihr Projekt hat Einschränkungswerte für Organisationsrichtlinien, die nicht mit dem Zielsteuerungspaket konform sind.

    Wenn ein Blocker für eine Einschränkung der Organisationsrichtlinie gefunden wird, enthält die Antwort die erwarteten Werte, die mit dem Zielsteuerpaket konform sind. Anhand dieser erwarteten Werte können Sie Änderungen an Ihrem Projekt vornehmen, bevor Sie eine Migration ausführen.

Ermitteln Sie zum Beheben dieses Problems, welche Einschränkung der Organisationsrichtlinie geändert werden muss, und nehmen Sie die erforderlichen Änderungen vor.

Nicht unterstützte Ergebnistypen

Die folgenden Ergebnistypen werden bei der Migrationsanalyse nicht unterstützt:

  • Inkompatibilitäten auf Ressourcenebene für Einschränkungen von Organisationsrichtlinien außer gcp.resourceLocations. Einige Steuerpakete sind beispielsweise mit der globalen Einschränkung gcp.restrictCmekCryptoKeyProjects oder der Compute Engine-spezifischen Einschränkung compute.disableNestedVirtualization konfiguriert. Inkompatibilitäten mit diesen Einschränkungen zwischen Quelle und Ziel werden nicht analysiert oder gemeldet.
  • Dienstspezifische Funktionen, die für ein bestimmtes Kontrollpaket deaktiviert werden können. Beispielsweise sind die Verfügbarkeitsdiagnosen von Cloud Monitoring für IL4-Ordner und die Remote-Funktionen von BigQuery für ITAR-Ordner deaktiviert. Wenn Ihr Quellprojekt solche deaktivierten Features verwendet, werden diese Inkompatibilitäten nicht analysiert oder gemeldet.

Verschieben eines Projekts in einen Assured Workloads-Ordner

Mit der Methode analyzeWorkloadMove wird analysiert, wie das Quellprojekt in den Assured Workloads-Zielordner verschoben wird.

Ersetzen Sie im folgenden Anfragebeispiel die folgenden Parameter durch Ihren eigenen:

  • ENDPOINT_URI: Der Assured Workloads-Dienstendpunkt-URI. Dieser URI muss der Endpunkt sein, der dem Standort der Zielarbeitslast entspricht, z. B. https://us-west1-assuredworkloads.googleapis.com für eine regionale Arbeitslast in der Region us-west1 und https://us-assuredworkloads.googleapis.com für eine multiregionale Arbeitslast in den USA.
  • DESTINATION_ORGANIZATION_ID: Die Organisations-ID für die Zielarbeitslast, zu der das Quellprojekt migriert wird. Beispiel: 919698201234
  • DESTINATION_LOCATION_ID: Der Speicherort der Zielarbeitslast. Beispiel: us-west1 oder us Er entspricht dem Wert data region der Arbeitslast.
  • DESTINATION_WORKLOAD_ID: Die ID des Assured Workloads-Zielordners, in den das Quellprojekt migriert wird. Beispiel: 00-701ea036-7152-4780-a867-9f5
  • SOURCE_PROJECT_ID: Abfrageparameter für die ID des zu migrierenden Quellprojekts. Beispiel: my-project-123
  • ASSET_TYPES: Optional. Ein Asset-Typ pro Abfrageparameter, mit dem die Ergebnisse nur nach den angegebenen Typen gefiltert werden. Beispiel: cloudresourcemanager.googleapis.com/Project.
  • PAGE_SIZE: Optional. Abfrageparameter für die Anzahl der Ergebnisse, die pro Seite zurückgegeben werden sollen. Beispiel: 5
  • PAGE_TOKEN: Optional. Abfrageparameter für das Token, um die paginierten Ergebnisse fortzusetzen. Beispiel: CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

HTTP-Methode, URL und Suchparameter:

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

Beispiel:

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

Sie sollten in etwa folgende JSON-Antwort erhalten:

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

Verwenden Sie den Abfrageparameter asset_types, um die Ergebnisse nach einem bestimmten Asset-Typ zu filtern:

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

Die Ergebnisse enthalten nur Ergebnisse des angegebenen Typs (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"
}

Wenn Sie die Ergebnisse nach mehreren Asset-Typen filtern möchten, fügen Sie jeden als zusätzlichen Abfrageparameter hinzu:

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

Die Ergebnisse enthalten nur Ergebnisse der angegebenen Typen (cloudresourcemanager.googleapis.com/Project und 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"
}

Nachdem Sie die Migrationsanalyse durchgeführt haben, prüfen und beheben Sie alle Warnungen oder Hindernisse und führen Sie die Analyse dann noch einmal aus, um sicherzustellen, dass sie behoben wurden. Anschließend können Sie mit dem Verschieben des Projekts fortfahren.

Nächste Schritte