Mengaktifkan kunci enkripsi yang dikelola pelanggan

Halaman ini menjelaskan cara mengenkripsi konten yang disimpan di repositori dengan kunci enkripsi yang dikelola pelanggan (CMEK).

Ringkasan

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 membuat repositori yang dienkripsi dengan kunci CMEK. Metadata tentang repositori, seperti nama repositori, dienkripsi dengan enkripsi default Google.

Saat Anda mengaktifkan CMEK, data dalam penyimpanan di repositori dienkripsi menggunakan kunci yang Anda kelola dalam Cloud Key Management Service. Anda dapat mengontrol akses ke kunci CMEK menggunakan Identity and Access Management. Jika Anda menonaktifkan kunci CMEK untuk sementara atau menghancurkan permanen kunci tersebut, data yang dienkripsi dengan kunci tersebut tidak dapat diakses.

CMEK memberi Anda kontrol atas lebih banyak aspek siklus proses dan pengelolaan kunci, tetapi juga menimbulkan biaya tambahan untuk layanan Cloud KMS. Repositori Artifact Registry dan resource Google Cloud lainnya yang dienkripsi dengan CMEK juga dapat memakai kuota Cloud KMS, bergantung pada jenis kunci yang Anda gunakan. Pastikan Anda memiliki kuota yang cukup untuk mengaktifkan enkripsi rahasia lapisan aplikasi bagi aplikasi dan alur kerja Anda.

Cloud KMS dapat berjalan di project Google Cloud yang sama dengan Artifact Registry atau dalam project terpisah tempat Anda mengelola kunci secara terpusat untuk beberapa project. Untuk mendukung pemisahan tugas dan kontrol yang lebih besar atas akses ke kunci, sebaiknya buat dan kelola kunci di project terpisah yang menyertakan resource Google Cloud lainnya.

Anda menetapkan kunci CMEK saat membuat repositori. Anda tidak dapat mengubah mekanisme enkripsi repositori yang ada. Jika memiliki repositori yang dienkripsi dengan CMEK, Anda tidak dapat mengubah mekanisme enkripsi ke enkripsi default Google atau menetapkan kunci Cloud KMS lain untuk enkripsi.

Untuk mengetahui informasi selengkapnya tentang CMEK secara umum, termasuk waktu dan alasan mengaktifkannya, lihat dokumentasi Cloud KMS.

Membuat kunci dan memberikan izin

Petunjuk berikut menjelaskan cara membuat kunci untuk repositori dan memberikan izin untuk mengenkripsi dan mendekripsi data repositori 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 dan kunci menggunakan salah satu opsi berikut:

      Lokasi kunci Cloud KMS harus cocok dengan lokasi repositori repositori yang akan Anda enkripsi.

  2. Jika Anda belum membuat repositori dalam project Artifact Registry, akun layanan Artifact Registry belum ada. Untuk membuat akun layanan, jalankan perintah berikut:

    gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
    

    Ganti PROJECT dengan ID project tempat Artifact Registry dijalankan.

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

    Konsol

    1. Buka halaman Kunci kriptografis.

      Buka halaman Cloud KMS

    2. Pilih kunci yang Anda buat.

    3. Berikan akses ke akun layanan Artifact Registry:

      1. Pilih TAMPILKAN Panel INFO.
      2. Klik TAMBAHKAN ANGGOTA.
      3. Tambahkan akun layanan Artifact Registry. Akun layanannya adalah service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com, dengan PROJECT-NUMBER sebagai nomor project project Google Cloud tempat Artifact Registry dijalankan.
      4. Pada bagian Select a role, pilih Cloud KMS > Cloud KMS Bigtable Encrypter/Decrypter.
      5. Klik SAVE.
    4. Ulangi langkah sebelumnya untuk memberikan akses ke akun yang akan membuat repositori.

    5. Kembali ke halaman Kunci kriptografis, lalu pilih kunci tersebut lagi.

    6. Pilih TAMPILKAN Panel INFO. Anda akan melihat peran di kolom Peran/Anggota.

    gcloud

    1. Jalankan perintah berikut untuk memberikan akses ke akun layanan Artifact Registry:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY --location LOCATION --keyring=KEYRING \
             --member serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Dari mana

      • PROJECT adalah ID project yang berisi kunci.
      • KEY adalah nama kunci.
      • LOCATION adalah lokasi utama. Lokasi kunci harus cocok dengan lokasi repositori repositori yang akan Anda enkripsi.
      • KEYRING adalah nama key ring.
      • PROJECT-NUMBER adalah nomor project project Google Cloud yang menjalankan Artifact Registry.
    2. Ulangi langkah sebelumnya untuk memberikan akses ke akun yang akan membuat repositori.

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

Anda sekarang dapat membuat repositori dan menentukan kunci yang akan digunakan untuk enkripsi.

Menghapus akses

Ada beberapa cara untuk menghapus akses ke repositori yang dienkripsi CMEK:

Sebaiknya cabut izin dari akun layanan Artifact Registry sebelum menonaktifkan atau menghancurkan kunci. Perubahan pada izin konsisten dalam hitungan detik, sehingga Anda dapat mengamati dampak dari penonaktifan atau pemusnahan kunci.

Jika Anda menonaktifkan atau menghancurkan kunci enkripsi untuk repositori, Anda tidak akan dapat melihat atau mengambil data artefak. Semua data artefak yang disimpan di repositori menjadi tidak dapat diakses, termasuk artefak build, data biner arbitrer (blob), dan manifes seperti manifes Docker atau file paket npm. Pengguna dengan peran atau peran Viewer Artifact Registry Reader masih dapat melihat metadata artefak seperti nama artefak, versi, atau tag.

Pengguna dengan peran Administrator atau peran Pemilik Artifact Registry dapat menghapus repositori.

Kebijakan organisasi CMEK

Artifact Registry mendukung batasan kebijakan organisasi yang dapat memerlukan perlindungan CMEK.

Kebijakan dapat membatasi Bigtable Cloud KMS yang dapat digunakan untuk perlindungan CMEK.

  • Jika Artifact Registry API tercantum dalam daftar kebijakan Deny untuk layanan batasan constraints/gcp.restrictNonCmekServices, Artifact Registry akan menolak untuk membuat repositori baru yang tidak dilindungi CMEK.

  • Saat constraints/gcp.restrictCmekCryptoKeyProjects dikonfigurasi, Artifact Registry akan membuat repositori yang dilindungi CMEK yang dilindungi oleh Bigtable dari project, folder, atau organisasi yang diizinkan.

Pub/Sub mendukung batasan yang sama. Saat Anda mengaktifkan Artifact Registry API di project Google Cloud, Artifact Registry akan mencoba membuat topik Pub/Sub secara otomatis dengan ID topik gcr menggunakan kunci enkripsi yang dikelola Google. Saat Pub/Sub API ada dalam daftar kebijakan Deny untuk batasan constraints/gcp.restrictNonCmekServices, Pub/Sub akan menolak membuat topik. Untuk membuat topik gcr dengan enkripsi CMEK, lihat petunjuk Pub/Sub untuk mengenkripsi topik.

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

Apa langkah selanjutnya?