Enkripsi data

Secara default, data berikut disimpan terenkripsi di platform runtime campuran:

  • Menyimpan data ke dalam cache
  • Data kunci kontrak
  • Data sistem pengelolaan kunci (KMS)
  • Data peta nilai kunci (KVM)

Enkripsi data tidak memerlukan konfigurasi khusus dari Anda. Namun, jika karena alasan tertentu Anda ingin menggunakan kunci enkripsi Anda sendiri (mengganti kunci default), Anda dapat melakukannya, seperti yang dijelaskan dalam topik ini.

Cakupan kunci enkripsi

Kunci enkripsi Apigee Hybrid memiliki cakupan. Misalnya, kunci KMS memiliki cakupan organisasi. Artinya, kunci tersebut digunakan untuk mengenkripsi data KMS bagi seluruh organisasi. Tabel berikut mencantumkan cakupan untuk setiap jenis kunci:

Kunci enkripsi Cakupan
Kontrak Khusus organisasi
KMS Khusus organisasi
KVM Organisasi atau lingkungan

Jika kebijakan KVM menentukan cakupan apiproxy atau policy (revisi proxy API), kunci tingkat organisasi akan digunakan untuk mengenkripsi data. Untuk ringkasan umum tentang cara KVM digunakan di Apigee Edge, lihat Menggunakan peta nilai kunci.

Cache Khusus lingkungan

Tentang kunci enkripsi default

Secara default, Apigee hybrid menyediakan kumpulan kunci yang dienkode Base64 yang digunakan untuk mengenkripsi data kontrak, KVM, KMS, dan cache. Penginstal campuran Apigee menyimpan kunci di platform runtime sebagai Kubernetes Secrets, dan menggunakannya untuk mengenkripsi data Anda dengan enkripsi standar AES-128. Kunci berada di bawah kontrol Anda; platform pengelolaan campuran tidak pernah mengetahuinya kapan saja.

Kunci default diterapkan ke semua komponen campuran Apigee baru saat Anda membuatnya.

Mengubah kunci enkripsi default

Meskipun tidak diperlukan, Anda dapat mengubah kunci enkripsi default jika mau. Untuk mengganti satu atau beberapa kunci default, ikuti langkah-langkah berikut:

  1. Salin stanza berikut ke dalam file penggantian Anda. Konfigurasi ini memungkinkan Anda mengubah kunci enkripsi KMS dan KVM untuk tingkat organisasi serta kunci enkripsi KVM dan cache untuk tingkat lingkungan:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Buat kunci baru untuk setiap kunci yang ingin Anda ganti. Setiap kunci harus berupa string yang dienkode Base64 dengan panjang tepat 16, 24, atau 32 byte. Lihat juga Cara membuat kunci encode.
  3. Ganti kunci default dengan kunci baru. Dalam contoh ini, semua kunci default diganti dengan kunci:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

Mengganti tombol default

Anda dapat mengganti kunci untuk organisasi atau lingkungan tertentu yang disebutkan dalam file penggantian. Saat Anda membuat komponen, kunci yang Anda tentukan untuk organisasi atau setiap lingkungan akan menggantikan default.

  1. Salin stanza berikut ke dalam file penggantian Anda. Konfigurasi ini memungkinkan Anda mengubah kunci enkripsi KMS dan KVM untuk tingkat organisasi serta kunci enkripsi KVM dan cache untuk tingkat lingkungan:
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Buat kunci baru untuk setiap kunci yang ingin Anda ganti. Setiap kunci harus berupa string yang dienkode Base64 dengan panjang tepat 16, 24, atau 32 byte. Lihat juga Cara membuat kunci yang dienkode.
  3. Tentukan kunci yang ingin Anda ganti. Dalam contoh ini, semua kunci default diganti dengan kunci:
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="

Menerapkan perubahan utama

Terapkan file penggantian ke cluster Anda seperti dengan perintah Helm berikut:
  • Jika Anda mengubah kunci kontrak atau kunci KVM untuk organisasi, perbarui organisasi:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • Jika Anda mengubah kunci Cache atau kunci KVM untuk lingkungan, perbarui lingkungan:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • Jika Anda mengubah kunci KMS, perbarui organisasi dan lingkungan:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

Catatan tentang kompatibilitas mundur

Jika Anda menghapus kunci enkripsi dalam file penggantian saat pertama kali menginstal Apigee hybrid, Anda akan menonaktifkan enkripsi secara efektif dan nilai akan disimpan tanpa dienkripsi. Jika pada waktu berikutnya Anda mengaktifkan enkripsi dengan memberikan kunci, data yang keluar tetap tidak dienkripsi; namun, data mendatang yang ditambahkan akan dienkripsi. Sistem akan terus berfungsi seperti biasa dengan data yang tidak dienkripsi dan data baru yang dienkripsi.

Selain itu, perhatikan bahwa Anda tidak dapat mengubah kunci enkripsi setelah data runtime dienkripsi.

Cara membuat kunci yang dienkode

Kunci yang dienkode Base-64 dan diformat dengan benar diperlukan untuk enkripsi KVM, KMS, dan cache. Kunci yang digunakan untuk tujuan ini harus dienkode Base-64 dari string yang panjangnya 16, 24, atau 32 byte, seperti yang dijelaskan di bawah:

Contoh perintah berikut menghasilkan string yang sesuai, yang dihasilkan secara acak, berenkode Base64, dan terdiri dari 32 karakter:

head -c 32 /dev/random | openssl base64