Mengaktifkan kunci enkripsi yang dikelola pelanggan (CMEK) untuk set data Cloud Healthcare API

Secara default, Google Cloud otomatis mengenkripsi data saat dalam penyimpanan menggunakan kunci enkripsi yang dikelola oleh Google. Jika Anda memiliki persyaratan kepatuhan atau peraturan khusus terkait kunci yang melindungi data, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) untuk set data Cloud Healthcare API. Alih-alih Google yang memiliki dan mengelola kunci enkripsi yang melindungi data Anda, set data Cloud Healthcare API Anda dienkripsi menggunakan kunci yang Anda kontrol dan kelola di Cloud Key Management Service (Cloud KMS).

Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk waktu dan alasan mengaktifkannya, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).

Sebelum memulai

Tentukan apakah set data Cloud Healthcare API dan Cloud KMS Anda akan berada di project Google Cloud yang sama atau berbeda. Untuk panduan, lihat Pemisahan tugas.

Untuk tujuan dokumentasi, konvensi berikut digunakan:

  • PROJECT_ID: project ID Cloud Healthcare API
  • KMS_PROJECT_ID: project ID tempat Cloud KMS berjalan, yang mungkin sama dengan PROJECT_ID

Untuk informasi tentang project ID dan nomor project Google Cloud, lihat Mengidentifikasi project.

Batasan

  • Anda hanya dapat menggunakan kunci Cloud KMS saat membuat set data Cloud Healthcare API. Anda tidak dapat mengaktifkan, mengubah, atau menonaktifkan kunci Cloud KMS pada set data Cloud Healthcare API yang ada.
  • Hanya penyimpanan FHIR, DICOM, dan HL7v2 yang didukung dalam set data terenkripsi CMEK. Perlindungan CMEK berlaku untuk penyimpanan DICOM, FHIR, dan HL7v2 dalam set data dan resource-nya.
  • Anda tidak dapat melakukan de-identifikasi resource terenkripsi CMEK.

Operasi CMEK

Kunci Cloud KMS digunakan saat resource terenkripsi CMEK dibuat, dibaca, diperbarui, atau dihapus, dan untuk tugas operasional seperti penagihan atau memastikan kunci tersedia.

Pertimbangan kunci eksternal

Untuk informasi tentang cara menggunakan kunci yang Anda kelola dalam sistem partner pengelolaan kunci eksternal yang didukung untuk melindungi data dalam Google Cloud, lihat Cloud External Key Manager.

Jika Anda kehilangan kunci yang dikelola di luar Google Cloud, Google tidak dapat memulihkan data Anda.

Tidak tersedianya kunci dan kehilangan data

Jika set data dienkripsi oleh kunci, dan kunci tersebut menjadi tidak tersedia dan tetap tidak tersedia, Cloud Healthcare API akan menonaktifkan dan akhirnya menghapus set data. Terkadang, kunci tidak tersedia jika dinonaktifkan atau dihancurkan, atau jika tidak dapat diakses karena izin dicabut, tetapi perilaku ini terjadi jika kunci tidak tersedia karena alasan apa pun. Tingkat perlindungan kunci atau apakah kunci tersebut merupakan kunci eksternal tidak memengaruhi perilaku ini. Kunci eksternal juga dapat menjadi tidak tersedia secara tidak terduga. Misalnya, masalah konektivitas mungkin muncul antara resource Google Cloud dan EKM Anda.

Proses berikut menjelaskan cara memeriksa ketersediaan kunci, dan cara set data dapat dinonaktifkan dan dihapus:

  1. Setelah set data Cloud Healthcare API yang dienkripsi CMEK dibuat, Cloud Healthcare API akan memeriksa status kunci setiap lima menit untuk memastikan kunci tersedia. Jika kunci tidak tersedia, Cloud Healthcare API akan terus mendukung permintaan ke set data hingga satu jam.

  2. Setelah satu jam, jika Cloud Healthcare API masih tidak dapat terhubung dengan Cloud KMS, set data Cloud Healthcare API akan dinonaktifkan sebagai tindakan pengamanan. Untuk mengaktifkan kembali set data Cloud Healthcare API, hubungi perwakilan dukungan Anda.

    Jika dinonaktifkan, Anda hanya dapat mengirim permintaan datasets.get dan datasets.delete ke set data Cloud Healthcare API. Permintaan lain gagal dengan error 400 FAILED_PRECONDITION.

  3. Jika set data Cloud Healthcare API tetap tidak tersedia selama lebih dari 30 hari, set data tersebut akan dihapus secara permanen. Semua penyimpanan DICOM, FHIR, dan HL7v2 dalam set data dan data terkaitnya juga akan dihapus. Jika dihapus, data ini tidak dapat dipulihkan.

Pembuatan kunci

Bagian berikut menjelaskan cara membuat key ring dan kunci Cloud KMS. Hanya kunci enkripsi simetris Cloud KMS yang didukung.

Lokasi yang didukung

Kunci Cloud KMS tersedia di lokasi Cloud Healthcare API. Buat ring kunci di lokasi yang cocok dengan region atau multi-region set data Cloud Healthcare API Anda.

  • Setiap set data Cloud Healthcare API multi-regional harus menggunakan key ring multi-regional dari lokasi yang cocok. Misalnya, set data Cloud Healthcare API di region us harus dilindungi dengan key ring dari region us, dan set data Cloud Healthcare API di region eu harus dilindungi dengan key ring dari region europe.

  • Set data Cloud Healthcare API regional harus menggunakan kunci regional yang cocok. Misalnya, set data Cloud Healthcare API di region asia-northeast1 harus dilindungi dengan key ring dari region asia-northeast1.

  • Anda tidak dapat menggunakan region global saat mengonfigurasi CMEK untuk set data Cloud Healthcare API.

Untuk mengetahui informasi selengkapnya, lihat lokasi Cloud Healthcare API dan lokasi Cloud KMS.

Membuat key ring dan kunci

Selesaikan langkah-langkah berikut di project Google Cloud yang menjalankan Cloud KMS:

  1. Buat key ring.
  2. Buat kunci.

Memberikan izin enkripsi dan dekripsi

Untuk melindungi data Cloud Healthcare API Anda dengan kunci Cloud KMS, berikan peran CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci tersebut kepada akun layanan Cloud Healthcare Service Agent. Untuk mengetahui petunjuknya, lihat Izin CMEK set data.

Setelah memberikan peran ke akun layanan, Cloud Healthcare API dapat mengenkripsi dan mendekripsi resource terenkripsi CMEK. Aplikasi Anda tidak perlu menentukan kunci saat membaca atau menulis data. Cloud Healthcare API menangani enkripsi.

Saat pemohon membaca atau menulis objek yang dienkripsi dengan kunci Cloud KMS, mereka akan mengakses objek seperti biasa. Selama permintaan, agen layanan akan otomatis mengenkripsi atau mendekripsi objek yang diminta, asalkan kedua kondisi berikut terpenuhi:

  • Agen layanan masih memiliki izin yang diperlukan.
  • Kunci tersedia dan diaktifkan.

Membuat set data Cloud Healthcare API yang dienkripsi CMEK

Contoh berikut menunjukkan cara membuat set data terenkripsi CMEK.

Anda harus menentukan ID resource kunci Cloud KMS saat membuat set data. Kunci ini peka huruf besar/kecil dan dalam format berikut:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Untuk melihat ID resource kunci Cloud KMS, lihat Mendapatkan ID resource Cloud KMS.

Konsol

  1. Di konsol Google Cloud, buka halaman Browser.

    Buka Browser

  2. Klik Buat set data. Halaman Create dataset akan ditampilkan.

  3. Di kolom Name, masukkan ID untuk set data yang tunduk pada persyaratan ukuran dan karakter yang diizinkan untuk set data.

  4. Pilih salah satu jenis lokasi berikut:

    • Region. Set data berada secara permanen dalam satu region Google Cloud. Setelah memilih opsi ini, ketik atau pilih lokasi di kolom Region.

    • Multi-region. Set data berada secara permanen dalam lokasi yang mencakup beberapa region Google Cloud. Setelah memilih opsi ini, ketik atau pilih lokasi multi-region di kolom Multi-region.

  5. Di bagian Encryption, pilih salah satu jenis enkripsi berikut:

    • Kunci enkripsi yang dikelola Google: Metode enkripsi default. Gunakan metode ini jika Anda ingin Google mengelola kunci enkripsi yang melindungi data Anda dalam set data Cloud Healthcare API ini.

    • Kunci Cloud KMS: Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).

  6. Klik Create. Halaman Browser akan ditampilkan. Set data baru akan ditampilkan dalam daftar set data.

gcloud

Buat set data menggunakan perintah gcloud healthcare datasets create.

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

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud healthcare datasets create DATASET_ID \
  --location=LOCATION \
  --encryption-key=KEY_RESOURCE_ID

Windows (PowerShell)

gcloud healthcare datasets create DATASET_ID `
  --location=LOCATION `
  --encryption-key=KEY_RESOURCE_ID

Windows (cmd.exe)

gcloud healthcare datasets create DATASET_ID ^
  --location=LOCATION ^
  --encryption-key=KEY_RESOURCE_ID

Anda akan melihat respons seperti berikut:

Create request issued for: [DATASET_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...
Created dataset [DATASET_ID].

REST

  1. Buat set data menggunakan metode datasets.create.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    Meminta isi JSON:

    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    

    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'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    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://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_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:

    @'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    '@  | 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://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand Content

    APIs Explorer

    Salin isi permintaan dan buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.

    Output-nya adalah sebagai berikut. Respons berisi ID untuk operasi yang berjalan lama (LRO). Operasi yang berjalan lama ditampilkan saat panggilan metode mungkin memerlukan waktu tambahan untuk diselesaikan. Perhatikan nilai OPERATION_ID. Anda memerlukan nilai ini di langkah berikutnya.

  2. Dapatkan status operasi yang berjalan lama menggunakan metode projects.locations.datasets.operations.get.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID project Google Cloud Anda
    • LOCATION: lokasi set data
    • DATASET_ID: ID set data
    • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Jalankan perintah berikut:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Jalankan perintah berikut:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs Explorer

    Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

    Output-nya adalah sebagai berikut. Jika respons berisi "done": true, operasi yang berjalan lama telah selesai.

Menentukan apakah set data dilindungi oleh Cloud KMS

Untuk setiap kunci yang telah Anda buat atau yang melindungi set data Cloud Healthcare API, Anda dapat melihat resource yang dilindungi kunci tersebut dengan pelacakan penggunaan kunci. Untuk informasi selengkapnya, lihat Melihat penggunaan kunci.

Rotasi kunci

Cloud KMS mendukung rotasi kunci otomatis dan manual ke versi baru.

Memutar kunci akan menghasilkan hal berikut:

  • Set data Cloud Healthcare API yang dibuat setelah rotasi menggunakan versi kunci baru untuk enkripsi dan semua operasi.
  • Resource dalam set data yang ada yang dienkripsi dengan kunci tidak akan otomatis dienkripsi ulang dengan versi kunci utama yang baru.

Agar enkripsi berfungsi, semua versi kunci harus tersedia. Jika tidak, set data Cloud Healthcare API akan dinonaktifkan dan semua permintaan ke set data akan gagal. Untuk informasi selengkapnya, lihat Pertimbangan kunci enkripsi eksternal dan Set data yang dinonaktifkan dan penghapusan set data permanen.

Menghapus akses Cloud Healthcare API ke kunci Cloud KMS

Anda memiliki kontrol atas kunci dan dapat menonaktifkan, menghancurkan, atau mencabut izin pada kunci sehingga Cloud Healthcare API tidak dapat mengakses data terenkripsi CMEK. Setelah Anda menghancurkan kunci atau versi kunci yang terkait dengan set data Cloud Healthcare API, semua data yang dienkripsi dengan kunci atau versi kunci tersebut akan hilang secara permanen.

Ada penundaan antara saat Anda menonaktifkan kunci atau versi kunci dan saat kunci tersebut tidak dapat digunakan lagi. Ada juga penundaan antara saat Anda mencabut izin akun layanan agen layanan Cloud Healthcare pada kunci dan saat kunci tersebut tidak dapat lagi diakses. Untuk mengetahui informasi selengkapnya, lihat Konsistensi resource Cloud KMS.

Mengekspor dan mengimpor data ke instance yang mendukung CMEK

Agar data Anda tetap dienkripsi dengan kunci yang dikelola pelanggan selama operasi ekspor, Anda harus menetapkan CMEK di tujuan penyimpanan sebelum memulai ekspor. Tidak ada persyaratan atau batasan khusus untuk mengimpor data ke set data terenkripsi CMEK saat mengimpor dari penyimpanan non-CMEK atau terenkripsi CMEK.

Pembatasan

Harga

Set data ditagih dengan cara yang sama, terlepas dari apakah set data tersebut dienkripsi dengan CMEK atau tidak. Untuk mengetahui informasi selengkapnya, lihat Harga Cloud Healthcare API.

Anda ditagih oleh Cloud KMS untuk biaya kunci dan operasi kriptografis apa pun pada kunci tersebut. Operasi ini terjadi saat Cloud Healthcare API menggunakan kunci untuk enkripsi atau dekripsi. Anda dapat mengharapkan biaya ini minimal, berdasarkan jumlah perkiraan operasi kriptografi yang dihasilkan oleh Cloud Healthcare API. Untuk mengetahui informasi selengkapnya, lihat harga Cloud KMS.

Kuota Cloud KMS dan Cloud Healthcare API

Saat Anda menggunakan CMEK di Cloud Healthcare API, project Anda dapat memakai kuota permintaan kriptografis Cloud KMS. Set data Cloud Healthcare API yang dienkripsi CMEK dan penyimpanan DICOM, FHIR, dan HL7v2-nya menggunakan kuota ini untuk semua operasi kecuali datasets.get. Operasi enkripsi dan dekripsi menggunakan kunci CMEK memengaruhi kuota Cloud KMS hanya jika Anda menggunakan kunci hardware (Cloud HSM) atau kunci eksternal (Cloud EKM). Untuk informasi selengkapnya, lihat Kuota Cloud KMS.

Langkah selanjutnya