Mengaktifkan enkripsi kunci rahasia

Dokumen ini menjelaskan cara mengaktifkan enkripsi rahasia konsumen aplikasi developer (kredensial klien) disimpan dalam {i>database<i} Cassandra.

Ringkasan

Secara tradisional, Apigee Edge untuk Private Cloud telah menyediakan enkripsi opsional untuk peta nilai kunci data (KVM) dan token akses OAuth.

Tabel berikut menjelaskan opsi enkripsi untuk data dalam penyimpanan di Apigee untuk Private Cloud:

Entity Enkripsi diaktifkan secara default Enkripsi tersedia secara opsional Dokumentasi terkait
KVM Tidak Ya Lihat Tentang KVM terenkripsi.
Token akses OAuth Tidak Ya Lihat Melakukan hashing token untuk keamanan tambahan.
Rahasia konsumen aplikasi developer Tidak Ya Untuk mengaktifkannya, lakukan langkah-langkah konfigurasi dalam dokumen ini.

Untuk mengaktifkan enkripsi kredensial klien, Anda harus melakukan tugas-tugas berikut di semua node server pengelolaan dan pemroses pesan:

  • Buat keystore untuk menyimpan Kunci enkripsi kunci (KEK). Apigee menggunakan kunci terenkripsi ini untuk mengenkripsi kunci rahasia yang diperlukan untuk mengenkripsi data Anda.
  • Mengedit properti konfigurasi di semua server pengelolaan dan node pemroses pesan.
  • Buat aplikasi developer untuk memicu pembuatan kunci.
  • Mulai ulang node.

Tugas ini dijelaskan dalam dokumen ini.

Yang perlu Anda ketahui tentang kunci fitur enkripsi

Langkah-langkah dalam dokumen ini menjelaskan cara mengaktifkan fitur KEK, yang memungkinkan Apigee mengenkripsi kunci rahasia yang digunakan untuk mengenkripsi aplikasi developer rahasia konsumen ketika mereka disimpan dalam {i>database<i} Cassandra.

Secara {i>default<i}, setiap nilai yang ada dalam {i>database<i} tidak akan berubah (dalam teks polos) dan akan terus berfungsi seperti sebelumnya.

Jika Anda melakukan operasi tulis apa pun pada entitas yang tidak terenkripsi, hal itu akan dienkripsi disimpan. Misalnya, jika Anda mencabut token yang tidak terenkripsi, lalu menyetujuinya token tersebut, token yang baru disetujui akan dienkripsi.

Menjaga keamanan kunci

Pastikan untuk menyimpan salinan keystore, tempat KEK disimpan di lokasi yang aman. Sebaiknya gunakan yang aman untuk menyimpan salinan keystore. Seperti yang dijelaskan oleh instruksi dalam dokumen ini, keystore harus ditempatkan pada setiap pemroses pesan dan node server pengelolaan tempat bisa mereferensikannya. Namun, Anda juga harus menyimpan salinan keystore di tempat lain untuk disimpan dengan aman dan sebagai cadangan.

Mengaktifkan enkripsi kunci

Ikuti langkah-langkah berikut untuk enkripsi kunci rahasia konsumen:

Prasyarat

Anda harus memenuhi persyaratan ini sebelum melakukan langkah-langkah dalam dokumen ini:

  • Anda harus menginstal atau mengupgrade ke Apigee Edge untuk Private Cloud 4.50.00.10 atau yang lebih baru.
  • Anda harus menjadi administrator Apigee Edge untuk Private Cloud.

Langkah 1: Buat keystore

Ikuti langkah-langkah berikut untuk membuat keystore untuk menyimpan kunci enkripsi kunci (KEK):

  1. Jalankan perintah berikut untuk membuat keystore guna menyimpan kunci yang akan digunakan untuk mengenkripsi KEK. Masukkan perintah persis seperti yang ditunjukkan. (Anda dapat memberikan nama keystore yang diinginkan):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    Jika diminta, masukkan sandi. Anda akan menggunakan sandi ini di bagian berikutnya saat Anda mengkonfigurasi server pengelolaan dan pemroses pesan.

    Perintah ini membuat file keystore kekstore.p12 yang berisi kunci dengan alias KEYSTORE_NAME.

  2. (Opsional) Pastikan bahwa file dibuat dengan benar menggunakan perintah berikut. Jika file sudah benar, perintah akan menampilkan kunci dengan alias KEYSTORE_NAME:
    keytool -list -keystore kekstore.p12

Langkah 2: Konfigurasikan server pengelolaan

Berikutnya, konfigurasikan server pengelolaan. Jika Anda memiliki server pengelolaan yang diinstal di beberapa {i>node<i}, Anda harus mengulangi langkah-langkah ini pada setiap {i>node<i}.

  1. Salin file keystore yang Anda buat di Langkah 1 ke direktori di node server pengelolaan, seperti /opt/apigee/customer/application. Contoh:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Pastikan file dapat dibaca oleh pengguna apigee:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. Tambahkan properti berikut ke /opt/apigee/customer/application/management-server.properties. Jika file tidak ada, buat file tersebut. Lihat juga Referensi file properti.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Perhatikan bahwa KEK_PASSWORD mungkin sama dengan KEYSTORE_PASSWORD, bergantung pada alat yang digunakan untuk membuat keystore.

  4. Mulai ulang server pengelolaan dengan menggunakan perintah berikut:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    Perintah wait_for_ready menampilkan pesan berikut saat server pengelolaan siap:

    Checking if management-server is up: management-server is up.
    
  5. Jika Anda menginstal server pengelolaan di beberapa node, ulangi langkah 1-4 di atas untuk setiap pengelolaan node server.

Langkah 3: Membuat aplikasi developer

Setelah server pengelolaan diupdate, Anda harus membuat aplikasi developer untuk memicu pembuatan dari kunci yang digunakan untuk mengenkripsi data kredensial klien:

  1. Membuat aplikasi Developer untuk memicu pembuatan kunci enkripsi data (KEK). Untuk mengetahui langkah-langkahnya, lihat Mendaftarkan aplikasi.
  2. Hapus aplikasi developer jika Anda mau. Anda tidak perlu menyimpannya setelah proses enkripsi akan dibuat.

Langkah 4: Konfigurasikan pemroses pesan

Hingga enkripsi diaktifkan dalam pemroses pesan, permintaan runtime tidak akan dapat memproses kredensial terenkripsi apa pun.

  1. Salin file keystore yang Anda buat di Langkah 1 ke direktori di node pemroses pesan, misalnya /opt/apigee/customer/application. Contoh:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Pastikan file dapat dibaca oleh pengguna apigee:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. Tambahkan properti berikut ke /opt/apigee/customer/application/message-processor.properties. Jika file tidak ada, buat file tersebut. Lihat juga Referensi file properti.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Perlu diketahui bahwa KEK_PASSWORD mungkin sama dengan KEYSTORE_PASSWORD bergantung pada alat yang digunakan untuk menghasilkan keystore.

  4. Mulai ulang pemroses pesan dengan menggunakan perintah berikut:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    Perintah wait_for_ready menampilkan pesan berikut saat pemroses pesan siap memproses pesan:

    Checking if message-processor is up: message-processor is up.
  5. Jika pemroses pesan terinstal di beberapa node, ulangi langkah 1-4 untuk setiap node node pemroses pesan.

Ringkasan

Semua aplikasi developer yang Anda buat mulai sekarang akan memiliki secret kredensial yang dienkripsi saat tidak digunakan di database Cassandra.

Menggunakan variabel lingkungan untuk properti konfigurasi

Atau, Anda dapat menyetel konfigurasi server pengelolaan dan pemroses pesan berikut menggunakan variabel lingkungan. Jika ditetapkan, variabel lingkungan akan menggantikan properti yang ditetapkan dalam pemroses pesan atau file konfigurasi server pengelolaan.

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

Variabel lingkungan terkait adalah:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

Jika menetapkan variabel lingkungan ini, Anda dapat menghilangkan properti konfigurasi ini dari file konfigurasi di node server pengelolaan dan pemroses pesan, karena properti ini akan diabaikan:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

Referensi file properti

Bagian ini menjelaskan properti konfigurasi yang harus Anda tetapkan di semua node server manajemen dan pemroses pesan, seperti yang dijelaskan sebelumnya dalam dokumen ini.

Properti Default Deskripsi
conf_keymanagement_kmscred.encryption.enabled false Harus berupa true untuk mengaktifkan enkripsi kunci.
conf_keymanagement_kmscred.encryption.allowFallback false Setel allowFallback ke true untuk memastikan kredensial teks biasa yang ada terus berfungsi.
conf_keymanagement_kmscred.encryption.keystore.path T/A Berikan jalur ke keystore KEK pada pemroses pesan atau node server pengelolaan. Lihat Langkah 2: Konfigurasikan pengelolaan server dan Langkah 3: Konfigurasikan pemroses pesan.
conf_keymanagement_kmscred.encryption.kek.alias T/A Alias yang digunakan untuk menyimpan KEK di keystore.
conf_keymanagement_kmscred.encryption.keystore.pass T/A Opsional jika Anda menggunakan variabel lingkungan untuk menetapkan properti ini. Lihat juga Menggunakan lingkungan variabel untuk properti konfigurasi.
conf_keymanagement_kmscred.encryption.kek.pass T/A Opsional jika Anda menggunakan variabel lingkungan untuk menetapkan properti ini. Lihat juga Menggunakan lingkungan variabel untuk properti konfigurasi.