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 Sedang, Anda dapat menangani secara proaktif potensi pelanggaran kepatuhan yang mungkin terjadi sebelum memindahkan project.

Jenis temuan berikut ditampilkan oleh analisis pemindahan:

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

Temuan ini penting untuk ditemukan sebelum mencoba melakukan pemindahan. Secara default, folder Assured Workloads hanya dapat berisi jenis resource untuk layanan yang didukung oleh paket kontrol folder. 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 pembatasan penggunaan resource-nya, sehingga memungkinkan layanan yang tidak mematuhi kebijakan untuk 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 workload Anda tidak mematuhi persyaratan kepatuhan.

Sebelum memulai

  • Kumpulkan ID resource untuk project sumber dan folder Assured Workloads tujuan.
  • Tetapkan atau verifikasi izin IAM di project sumber dan folder Assured Workloads tujuan untuk memastikan pemanggil diberi otorisasi untuk melakukan migrasi.

Izin IAM yang diperlukan

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

Izin berikut diperlukan:

  • assuredworkloads.workload.get pada workload tujuan
  • cloudasset.assets.searchAllResources pada project sumber
  • orgpolicy.policy.get di project sumber dan folder Workload Terjamin tujuan

Melakukan analisis migrasi

Saat melakukan analisis pada project sumber dan folder Beban Kerja Terjamin tujuan, Anda harus mengatasi temuan apa pun sebelum memindahkan project ke tujuan. Meskipun temuan tersebut tidak mencegah Anda memindahkan project, temuan tersebut dapat mengakibatkan pelanggaran kepatuhan di folder Workload Terjamin tujuan.

Temuan ini terdiri dari dua jenis:

  • Peringatan: Hasil peringatan terjadi saat project sumber berpotensi tidak kompatibel dengan tujuan, dan dapat menyebabkan 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 pemindahan.

Jenis temuan berikut dilaporkan:

  • Lokasi resource: Banyak paket kontrol menerapkan batasan lokasi agar resource 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 Assurance 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 efektif folder Assured Workloads tujuan, atau tidak mematuhi paket kontrol target. Analisis ini hanya dilakukan untuk batasan yang relevan dengan paket kontrol folder Asuransi Workload tujuan; semua nilai batasan project tidak dievaluasi. Beberapa hasil mungkin terjadi, seperti masalah berikut:

    • Project Anda dan kebijakan efektif tujuan 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 yang mematuhi 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 mana yang perlu diubah, dan buat perubahan yang diperlukan.

Jenis temuan yang 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 ini antara sumber dan tujuan tidak dianalisis atau dilaporkan.
  • Fitur khusus layanan yang dapat dinonaktifkan untuk paket kontrol tertentu. Misalnya, pemeriksaan waktu aktif 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 Workload Terjamin tujuan.

Pada 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 diregionalisasi di region us-west1 dan https://us-assuredworkloads.googleapis.com untuk beban kerja multi-region di AS.
  • DESTINATION_ORGANIZATION_ID: ID organisasi untuk beban kerja tujuan tempat project sumber akan dimigrasikan. Misalnya: 919698201234
  • DESTINATION_LOCATION_ID: Lokasi workload tujuan. Misalnya us-west1 atau us. Nilai ini sesuai dengan nilai data region beban kerja.
  • DESTINATION_WORKLOAD_ID: ID folder Asuransi Workload 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 ke jenis yang ditentukan. Misalnya: 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 di-pagination. 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

Hasil 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 setiap jenis 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 Anda melakukan analisis migrasi, tinjau dan selesaikan peringatan atau pemblokir, lalu jalankan analisis lagi untuk memverifikasi bahwa peringatan atau pemblokir tersebut telah ditangani. Kemudian, Anda dapat melanjutkan dengan memindahkan project.

Langkah selanjutnya