Mengenkripsi data menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

Halaman ini menjelaskan cara mengenkripsi data yang disimpan di instance AI AML dengan kunci enkripsi yang dikelola pelanggan (CMEK).

Ringkasan

Semua data pelanggan dalam instance AI AML dienkripsi saat dalam penyimpanan menggunakan kunci CMEK. Anda membuat dan mengelola kunci di dalam Cloud Key Management Service (Cloud KMS), dan Anda mengontrol akses ke kunci menggunakan Identity and Access Management. Jika Anda menonaktifkan untuk sementara atau menghancurkan kunci CMEK secara permanen, data yang dienkripsi dengan kunci tersebut tidak dapat diakses.

AI AML hanya mendukung CMEK dengan menggunakan Cloud KMS. Tidak mendukung Enkripsi Default Google.

CMEK memberi Anda kontrol atas kunci Anda, termasuk tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batasan kriptografis. Dengan Cloud KMS, Anda juga dapat melihat log audit dan mengontrol siklus proses kunci, tetapi juga menimbulkan biaya tambahan untuk layanan Cloud KMS.

Cloud KMS dapat berjalan di project yang sama dengan AML AI atau di project terpisah tempat Anda mengelola kunci secara terpusat untuk beberapa project. Google Cloud

Konfigurasi enkripsi disiapkan saat Anda membuat instance. Setelah instance dibuat, Anda tidak dapat menetapkan kunci Cloud KMS yang berbeda. Anda tetap dapat merotasi kunci.

Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, lihat dokumentasi Cloud KMS.

Level perlindungan

Cloud KMS memungkinkan Anda memilih dari berbagai tingkat perlindungan yang berbeda, termasuk berikut ini:

  • Kunci software
  • Modul Keamanan Hardware (HSM) menggunakan Cloud HSM

Pelajari cara mengonfigurasi CMEK di AML AI. Tidak semua tingkat perlindungan tersedia di semua wilayah. Perhatikan bahwa AI AML tidak mendukung Kunci Enkripsi yang Disediakan Pelanggan (CSEK) atau Cloud External Key Manager.

Data pelanggan

Semua data pelanggan yang ditangani oleh AML AI dienkripsi dalam penyimpanan menggunakan kunci CMEK yang ditentukan dalam resource Instance induk yang sesuai. Hal ini mencakup semua data pelanggan yang terkait dengan resource AI AML, seperti set data, konfigurasi mesin, model, dan lainnya. Semua penyimpanan sementara dan persisten data pelanggan, termasuk salinan input dan output, fitur ML yang dihasilkan, parameter hiper model, bobot model, dan hasil prediksi, dienkripsi menggunakan kunci CMEK dari instance yang sesuai.

Lihat persyaratan khusus layanan untuk mengetahui definisi data pelanggan, yang mungkin tidak mencakup ID resource, atribut, atau label data lainnya.

Mengenkripsi data input dan output

Konfigurasi enkripsi AI AML di instance hanya digunakan untuk resource AI AML dan datanya. AML AI tidak mengelola enkripsi data input atau output di project Anda Google Cloud. Jika Anda ingin data ini dienkripsi menggunakan CMEK, Anda harus menyiapkan kunci Cloud KMS agar sesuai dengan tingkat perlindungan kunci yang dipilih dan dikonfigurasi di set data BigQuery. Anda juga dapat menggunakan kembali kunci yang sama yang digunakan oleh AML AI.

Baca selengkapnya tentang enkripsi di BigQuery.

Rotasi kunci

Merotasi kunci secara berkala dan otomatis adalah praktik keamanan yang direkomendasikan. Dengan CMEK, rotasi kunci dikontrol oleh Anda. Saat Anda merotasi kunci, data yang dienkripsi dengan versi kunci sebelumnya tidak akan otomatis dienkripsi ulang dengan versi kunci baru.

Satu resource AI AML dapat disimpan secara internal sebagai beberapa unit. Jika, selama masa aktif resource AI AML, versi kunci dirotasi, tidak semua unit dapat dienkripsi dengan versi kunci yang sama.

Jika Anda mengganti kunci, tidak ada cara di AI AML untuk memaksa enkripsi ulang atau untuk menentukan apakah versi kunci yang lebih lama aman untuk dihapus.

Baca selengkapnya tentang rotasi kunci dengan Cloud KMS.

Membuat kunci dan memberikan izin

Petunjuk berikut menjelaskan cara membuat kunci untuk instance dan memberikan izin untuk mengenkripsi dan mendekripsi data instance dengan kunci tersebut.

  1. Di project Google Cloud tempat Anda ingin mengelola kunci:

    1. Aktifkan Cloud KMS API.

    2. Buat key ring menggunakan metode projects.locations.keyRings.create. Lokasi key ring Cloud KMS harus cocok dengan lokasi instance yang Anda enkripsi.

      REST

      Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

      • KMS_PROJECT_ID: ID Google Cloud project untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu wilayah yang didukung
        Tampilkan lokasi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: ID yang ditentukan pengguna untuk key ring

      Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

      curl

      Jalankan perintah berikut:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d "" \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"

      PowerShell

      Jalankan perintah berikut:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Content

      Anda akan melihat respons JSON seperti berikut:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID",
        "createTime": "2023-03-14T15:52:55.358979323Z"
      }
      

      gcloud

      Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

      • KMS_PROJECT_ID: ID Google Cloud project untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu wilayah yang didukung
        Tampilkan lokasi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: ID yang ditentukan pengguna untuk key ring

      Jalankan perintah berikut:

      Linux, macOS, atau Cloud Shell

      gcloud kms keyrings create KEY_RING_ID \
        --project KMS_PROJECT_ID --location LOCATION

      Windows (PowerShell)

      gcloud kms keyrings create KEY_RING_ID `
        --project KMS_PROJECT_ID --location LOCATION

      Windows (cmd.exe)

      gcloud kms keyrings create KEY_RING_ID ^
        --project KMS_PROJECT_ID --location LOCATION
      Anda akan menerima respons kosong:
      $

    3. Buat kunci menggunakan metode projects.locations.keyRings.cryptoKeys.

      REST

      Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

      • KMS_PROJECT_ID: ID project Google Cloud project untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu wilayah yang didukung
        Tampilkan lokasi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: ID yang ditentukan pengguna untuk key ring
      • KEY_ID: ID yang ditentukan pengguna untuk kunci

      Meminta isi JSON:

      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      

      Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

      curl

      Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

      cat > request.json << 'EOF'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      EOF

      Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID"

      PowerShell

      Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

      @'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Content

      Anda akan melihat respons JSON seperti berikut:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID",
        "primary": {
          "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1",
          "state": "ENABLED",
          "createTime": "2023-03-14T15:52:55.358979323Z",
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
          "generateTime": "2023-03-14T15:52:55.358979323Z"
        },
        "purpose": "ENCRYPT_DECRYPT",
        "createTime": "2023-03-14T15:52:55.358979323Z",
        "versionTemplate": {
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        "destroyScheduledDuration": "86400s"
      }
      

      gcloud

      Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

      • KMS_PROJECT_ID: ID project Google Cloud project untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu wilayah yang didukung
        Tampilkan lokasi
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: ID yang ditentukan pengguna untuk key ring
      • KEY_ID: ID yang ditentukan pengguna untuk kunci

      Jalankan perintah berikut:

      Linux, macOS, atau Cloud Shell

      gcloud kms keys create KEY_ID \
        --keyring KEY_RING_ID \
        --project KMS_PROJECT_ID \
        --location LOCATION \
        --purpose "encryption"

      Windows (PowerShell)

      gcloud kms keys create KEY_ID `
        --keyring KEY_RING_ID `
        --project KMS_PROJECT_ID `
        --location LOCATION `
        --purpose "encryption"

      Windows (cmd.exe)

      gcloud kms keys create KEY_ID ^
        --keyring KEY_RING_ID ^
        --project KMS_PROJECT_ID ^
        --location LOCATION ^
        --purpose "encryption"
      Anda akan menerima respons kosong:
      $

  2. Jika Anda belum membuat instance AML AI di project AML AI, akun layanan AML AI belum ada. Buat akun layanan.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project untuk project tempat AML AI berjalan

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Windows (PowerShell)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Windows (cmd.exe)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID

    Anda akan melihat respons seperti berikut:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com

  3. Berikan peran IAM CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) ke akun layanan AML AI. Beri izin ini pada kunci yang Anda buat.

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project untuk project tempat AML AI berjalan
    • KEY_ID: ID yang ditentukan pengguna untuk kunci
    • LOCATION: lokasi key ring; gunakan salah satu wilayah yang didukung
      Tampilkan lokasi
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1
    • KEY_RING_ID: ID yang ditentukan pengguna untuk key ring
    • PROJECT_NUMBER: Google Cloud nomor project untuk project tempat AML AI berjalan

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \
      --location LOCATION --keyring=KEY_RING_ID \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Windows (PowerShell)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID `
      --location LOCATION --keyring=KEY_RING_ID `
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com `
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Windows (cmd.exe)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^
      --location LOCATION --keyring=KEY_RING_ID ^
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Anda akan melihat respons seperti berikut:

    Updated IAM policy for key KEY_ID.
    bindings:
    - members:
      - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwYCq0Sq4Ho=
    version: 1
    

    Untuk mengetahui informasi selengkapnya tentang perintah ini, lihat dokumentasi gcloud kms keys add-iam-policy-binding.

Sekarang Anda dapat membuat instance dan menentukan kunci yang akan digunakan untuk enkripsi.

Menghapus akses

Ada beberapa cara untuk menghapus akses ke kunci dari instance yang dienkripsi CMEK:

Sebaiknya Anda mencabut izin dari akun layanan AML AI sebelum menonaktifkan atau menghapus kunci. Perubahan pada izin disebarkan dalam hitungan detik, sehingga Anda dapat mengamati dampak penonaktifan atau penghancuran kunci.

Jika Anda menonaktifkan atau menghancurkan kunci enkripsi untuk instance, Anda akan kehilangan kemampuan untuk menggunakan atau mengambil data pelanggan yang terkait dengan instance tersebut. Semua data pelanggan yang disimpan di instance menjadi tidak dapat diakses, termasuk model, konfigurasi mesin, hasil pengujian ulang, dan hasil prediksi. Pengguna dengan peran pelihat AI AML apa pun masih dapat melihat kolom seperti nama instance atau kolom resource lain yang ditampilkan dengan mengambil resource AI AML.

Setiap operasi yang menggunakan atau mengekspor data pelanggan, misalnya mengekspor metadata backtestResults, akan gagal.

Pengguna dengan peran AML AI Administrator atau Pemilik dapat menghapus instance.

Kebijakan organisasi CMEK

AI AML tidak mendukung kebijakan organisasi CMEK. Namun, AI AML selalu memerlukan penggunaan CMEK, terlepas dari kebijakan organisasi constraints/gcp.restrictNonCmekServices.

Interaksi dengan VPC-SC

Jika Anda telah mengonfigurasi AML AI di dalam perimeter VPC-SC, kunci CMEK harus tetap dapat diakses oleh akun layanan. Jika kunci tidak berada di dalam perimeter VPC-SC yang sama, ada beberapa cara untuk mencapainya, termasuk:

  • Menggunakan aturan keluar untuk memasukkan resource ke daftar yang diizinkan
  • Menggunakan peering perimeter VPC

Apa langkah selanjutnya?