Mengenkripsi data menggunakan kunci enkripsi yang dikelola pelanggan (CMEK)

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

Ringkasan

Semua Data Pelanggan dalam Instance AML AI dienkripsi menggunakan kunci CMEK saat disimpan dalam penyimpanan. Anda akan mengelola kunci dalam Cloud Key Management Service dan mengontrol akses ke kunci tersebut menggunakan Identity and Access Management. Jika Anda menonaktifkan sementara atau menghancurkan kunci CMEK secara permanen, data yang dienkripsi dengan kunci tersebut tidak dapat diakses.

CMEK memberi Anda kontrol atas lebih banyak aspek siklus proses dan pengelolaan kunci, serta menimbulkan biaya tambahan untuk layanan Cloud KMS.

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

Anda menetapkan kunci CMEK saat membuat instance. Semua instance harus dikonfigurasi menggunakan CMEK dan tidak dapat diubah untuk menggunakan enkripsi default Google.

Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk kapan dan mengapa harus mengaktifkannya, lihat dokumentasi Cloud KMS.

Data Pelanggan

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

AML AI tidak mengelola enkripsi data input atau output di project Google Cloud Anda. Jika ingin data ini dienkripsi, Anda harus menyiapkan kunci CMEK terpisah di project Google Cloud. Kunci KMS yang ditentukan dalam instance digunakan untuk resource AML AI beserta datanya.

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. Anda dapat menggunakan kunci yang dibuat langsung di Cloud KMS atau kunci yang dikelola secara eksternal yang Anda sediakan dengan Cloud External Key Manager.

  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 project Google Cloud untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu region yang didukung:
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • 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": CREATE_TIME
      }
      

      gcloud

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

      • LOCATION: lokasi key ring; gunakan salah satu region yang didukung:
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • 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 \
        --location LOCATION
      

      Windows (PowerShell)

      gcloud kms keyrings create KEY_RING_ID `
        --location LOCATION
      

      Windows (cmd.exe)

      gcloud kms keyrings create KEY_RING_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 untuk project yang berisi key ring
      • LOCATION: lokasi key ring; gunakan salah satu region yang didukung:
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • 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": CREATE_TIME,
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
          "generateTime": GENERATE_TIME
        },
        "purpose": "ENCRYPT_DECRYPT",
        "createTime": CREATE_TIME,
        "versionTemplate": {
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        "destroyScheduledDuration": "86400s"
      }
      

      gcloud

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

      • LOCATION: lokasi key ring; gunakan salah satu region yang didukung:
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • 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 \
        --location LOCATION \
        --purpose "encryption"
      

      Windows (PowerShell)

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

      Windows (cmd.exe)

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

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

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

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

    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. Berikan izin ini pada kunci yang Anda buat.

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

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

    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 instance yang dienkripsi CMEK:

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

Jika Anda menonaktifkan atau menghancurkan kunci enkripsi untuk suatu instance, Anda tidak akan dapat melihat atau mengambil data instance. Semua data yang disimpan dalam instance tidak dapat diakses, termasuk resource API seperti set data, model, konfigurasi mesin, hasil backtest, dan hasil prediksi. Pengguna dengan peran pelihat AML AI masih dapat melihat metadata instance seperti nama instance.

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

Kebijakan organisasi CMEK

AML AI mendukung batasan kebijakan organisasi yang dapat memerlukan perlindungan CMEK.

Kebijakan dapat membatasi CryptoKey Cloud KMS yang dapat digunakan untuk perlindungan CMEK. Misalnya, saat AML AI berada dalam daftar kebijakan Deny untuk layanan batasan constraints/gcp.restrictNonCmekServices, AML AI menolak untuk membuat instance baru yang tidak dilindungi CMEK.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi kebijakan organisasi, lihat kebijakan organisasi CMEK.

Apa langkah selanjutnya?