Memigrasikan workload

Halaman ini menjelaskan cara melakukan analisis kepatuhan sebelum memigrasikan project yang ada ke folder Assured Workloads. Analisis ini membandingkan project sumber dan folder Assured Workloads tujuan untuk menentukan perubahan yang mungkin diperlukan sebelum atau setelah Anda memulai migrasi. Misalnya, jika memiliki project yang ingin dipindahkan ke folder Assured Workloads yang dikonfigurasi untuk FedRAMP Moderate, Anda dapat secara proaktif mengatasi potensi pelanggaran kepatuhan yang mungkin terjadi sebelum memindahkan project.

Jenis temuan berikut ditampilkan oleh analisis gerakan:

  • Project sumber menggunakan produk atau layanan yang tidak didukung.
  • Project sumber berisi resource yang terletak di lokasi yang dilarang.
  • Project sumber dikonfigurasi dengan nilai batasan kebijakan organisasi yang tidak kompatibel dengan folder Assured Workloads tujuan.

Temuan ini penting untuk ditemukan sebelum mencoba beralih. Secara default, folder Assured Workloads hanya dapat berisi jenis resource untuk layanan yang didukung oleh paket kontrol folder tersebut. Jika project Anda berisi resource untuk layanan yang tidak didukung oleh paket kontrol folder, Anda mungkin perlu men-deploy ulang atau menghapus resource tersebut.

Meskipun Anda dapat mengubah daftar default layanan yang didukung untuk folder Assured Workloads dengan mengubah kebijakan organisasi terkait pembatasan penggunaan resource, sehingga layanan yang tidak mematuhi kebijakan dapat di-deploy di folder Anda, layanan yang tidak mematuhi kebijakan dan resource-nya akan diabaikan oleh pemeriksaan kepatuhan latar belakang. Oleh karena itu, dengan mengaktifkan layanan yang tidak didukung, Anda memilih untuk menerima risiko bahwa hal tersebut dapat menyebabkan beban kerja tidak dipatuhkan.

Sebelum memulai

  • Kumpulkan ID resource untuk project sumber dan folder Assured Workloads tujuan.
  • Tetapkan atau verifikasi izin IAM pada project sumber dan folder Assured Workloads tujuan untuk memastikan bahwa pemanggil diizinkan untuk melakukan migrasi.

Izin IAM yang diperlukan

Untuk melakukan analisis migrasi, pemanggil harus diberi izin IAM menggunakan peran standar yang mencakup kumpulan izin yang lebih luas, atau peran khusus yang dibatasi untuk izin minimum yang diperlukan.

Izin berikut diperlukan:

  • assuredworkloads.workload.get pada beban kerja tujuan
  • cloudasset.assets.searchAllResources di project sumber
  • orgpolicy.policy.get di project sumber dan tujuan folder Assured Workloads

Melakukan analisis migrasi

Saat melakukan analisis pada project sumber dan folder Assured Workloads tujuan, Anda harus mengatasi semua temuan sebelum memindahkan project ke tujuan. Meskipun temuan ini tidak mencegah Anda memindahkan project, mereka dapat mengakibatkan pelanggaran kepatuhan di folder Assured Workloads tujuan.

Temuan ini terdiri dari dua jenis yang berbeda:

  • Peringatan: Hasil peringatan terjadi saat project sumber berpotensi tidak kompatibel dengan tujuan, dan dapat mengakibatkan pelanggaran kepatuhan. Peringatan harus diselidiki untuk memverifikasi bahwa inkompatibilitas dapat diterima atau harus diatasi sebelum pemindahan.
  • Pemblokir: Hasil pemblokir terjadi saat pelanggaran kepatuhan terdeteksi antara project sumber dan tujuan. Pemblokir harus diatasi sebelum melanjutkan tindakan.

Jenis temuan berikut dilaporkan:

  • Lokasi resource: Banyak paket kontrol yang menerapkan pembatasan lokasi untuk resource agar mematuhi persyaratan kepatuhan, seperti jika project sumber Anda berisi resource yang berada di lokasi yang tidak diizinkan.

    Untuk mengatasi masalah ini, pindahkan resource yang terpengaruh ke lokasi yang diizinkan, hapus, atau ubah setelan batasan kebijakan organisasi gcp.resourceLocations target.

  • Produk/layanan yang tidak didukung: Setiap paket kontrol mendukung daftar produk dan layanan Google Cloud tertentu. Jika project Anda menggunakan layanan yang tidak didukung oleh paket kontrol folder Assured Workloads tujuan, hal ini akan dicantumkan sebagai temuan.

  • Batasan Kebijakan Organisasi: Project sumber Anda mungkin dikonfigurasi dengan nilai batasan kebijakan organisasi yang berbeda dengan kebijakan yang berlaku folder Assured Workloads tujuan, atau tidak sesuai dengan paket kontrol target. Analisis ini hanya dilakukan untuk batasan yang relevan dengan paket kontrol folder Assured Workloads tujuan; semua nilai batasan project tidak dievaluasi. Beberapa hasil yang memungkinkan, seperti masalah berikut:

    • Project Anda dan kebijakan tujuan yang berlaku tidak kompatibel.
    • Project Anda memiliki nilai batasan kebijakan organisasi yang tidak ditetapkan di tujuan, atau sebaliknya.
    • Project Anda memiliki nilai batasan kebijakan organisasi yang tidak sesuai dengan paket kontrol target.

    Jika pemblokir ditemukan untuk batasan kebijakan organisasi, respons akan menyertakan nilai yang diharapkan dan sesuai dengan paket kontrol target. Anda dapat menggunakan nilai yang diharapkan ini untuk membuat perubahan pada project sebelum melakukan migrasi.

Untuk mengatasi masalah ini, tentukan batasan kebijakan organisasi yang perlu diubah, lalu buat perubahan yang diperlukan.

Jenis temuan tidak didukung

Analisis migrasi tidak mendukung jenis temuan berikut:

  • Inkompatibilitas tingkat resource untuk batasan kebijakan organisasi selain gcp.resourceLocations. Misalnya, beberapa paket kontrol dikonfigurasi dengan batasan gcp.restrictCmekCryptoKeyProjects global atau batasan compute.disableNestedVirtualization khusus Compute Engine. Inkompatibilitas dengan batasan antara sumber dan tujuan ini tidak dianalisis atau dilaporkan.
  • Fitur khusus layanan yang mungkin dinonaktifkan untuk paket kontrol tertentu. Misalnya, cek uptime Cloud Monitoring dinonaktifkan untuk folder IL4 dan fungsi jarak jauh BigQuery dinonaktifkan untuk folder ITAR. Jika project sumber Anda menggunakan fitur yang dinonaktifkan tersebut, inkompatibilitas ini tidak akan dianalisis atau dilaporkan.

Menganalisis pemindahan project ke folder Assured Workloads

Metode analyzeWorkloadMove melakukan analisis pemindahan project sumber ke folder Assured Workloads tujuan.

Dalam contoh permintaan di bawah, ganti parameter berikut dengan parameter Anda sendiri:

  • ENDPOINT_URI: URI endpoint layanan Assured Workloads. URI ini harus berupa endpoint yang cocok dengan lokasi beban kerja tujuan, seperti https://us-west1-assuredworkloads.googleapis.com untuk beban kerja yang diregionalkan di region us-west1 dan https://us-assuredworkloads.googleapis.com untuk workload multi-region di AS.
  • DESTINATION_ORGANIZATION_ID: ID organisasi untuk beban kerja tujuan yang menjadi tujuan migrasi project sumber. Contoh: 919698201234
  • DESTINATION_LOCATION_ID: Lokasi workload tujuan. Misalnya us-west1 atau us. Ini sesuai dengan nilai data region beban kerja.
  • DESTINATION_WORKLOAD_ID: ID folder Assured Workloads tujuan tempat project sumber akan dimigrasikan. Contoh: 00-701ea036-7152-4780-a867-9f5
  • SOURCE_PROJECT_ID: Parameter kueri untuk ID project sumber yang akan dimigrasikan. Contoh: my-project-123
  • ASSET_TYPES: Opsional. Satu jenis aset per parameter kueri yang akan memfilter temuan hanya untuk jenis yang ditentukan. Contoh: cloudresourcemanager.googleapis.com/Project
  • PAGE_SIZE: Opsional. Parameter kueri untuk jumlah hasil yang akan ditampilkan per halaman. Contoh: 5
  • PAGE_TOKEN: Opsional. Parameter kueri untuk token guna melanjutkan hasil yang dipaginasi. Contoh: CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

Metode HTTP, URL, dan parameter kueri:

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

Contoh:

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

Anda akan melihat respons JSON seperti berikut:

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

Untuk memfilter temuan berdasarkan jenis aset tertentu, gunakan parameter kueri 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

Hasilnya hanya akan berisi temuan dari jenis yang ditentukan (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"
}

Untuk memfilter temuan menurut lebih dari satu jenis aset, tambahkan masing-masing aset sebagai parameter kueri tambahan:

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

Hasilnya hanya akan berisi temuan dari jenis yang ditentukan (cloudresourcemanager.googleapis.com/Project dan 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"
}

Setelah melakukan analisis migrasi, tinjau dan atasi setiap peringatan atau pemblokir, lalu jalankan analisis lagi untuk memverifikasi bahwa masalah tersebut telah ditangani. Kemudian, Anda dapat melanjutkan dengan memindahkan project.

Langkah selanjutnya