Mengaktifkan enkripsi kunci rahasia

Dokumen ini menjelaskan cara mengaktifkan enkripsi rahasia konsumen (kredensial klien) aplikasi developer yang disimpan di database Cassandra.

Ringkasan

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

Tabel berikut menjelaskan opsi enkripsi untuk data dalam penyimpanan di Apigee untuk cloud pribadi:

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 berikut di semua node pemroses pesan dan server pengelolaan:

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

Tugas-tugas ini dijelaskan dalam dokumen ini.

Hal yang perlu Anda ketahui tentang fitur enkripsi kunci

Langkah-langkah dalam dokumen ini menjelaskan cara mengaktifkan fitur KEK, yang memungkinkan Apigee mengenkripsi kunci rahasia yang digunakan untuk mengenkripsi rahasia konsumen aplikasi developer saat disimpan dalam penyimpanan di database Cassandra.

Secara default, nilai yang ada dalam database tidak akan berubah (dalam teks biasa) dan akan terus berfungsi seperti sebelumnya.

Jika Anda melakukan operasi tulis pada entity yang tidak dienkripsi, entity tersebut akan dienkripsi saat operasi disimpan. Misalnya, jika Anda mencabut token yang tidak dienkripsi, lalu menyetujuinya, token yang baru disetujui akan dienkripsi.

Menjaga keamanan kunci

Pastikan untuk menyimpan salinan keystore tempat KEK disimpan di lokasi yang aman. Sebaiknya gunakan mekanisme aman Anda sendiri untuk menyimpan salinan keystore. Seperti yang dijelaskan dalam petunjuk dalam dokumen ini, keystore harus ditempatkan di setiap node pemroses pesan dan server pengelolaan tempat file konfigurasi lokal dapat mereferensikannya. Namun, penting juga untuk 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 for Private Cloud 4.50.00.10 atau yang lebih baru.
  • Anda harus menjadi administrator Apigee Edge for Private Cloud.

Langkah 1: Buat keystore

Ikuti langkah-langkah berikut untuk membuat keystore yang akan 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 ditampilkan. (Anda dapat memberikan nama keystore apa pun yang Anda inginkan):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    Saat diminta, masukkan sandi. Anda akan menggunakan sandi ini di bagian selanjutnya saat mengonfigurasi server pengelolaan dan pemroses pesan.

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

  2. (Opsional) Pastikan 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: Konfigurasi server pengelolaan

Selanjutnya, konfigurasikan server pengelolaan. Jika Anda telah menginstal server pengelolaan di beberapa node, Anda harus mengulangi langkah-langkah ini di setiap node.

  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 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 sudah siap:

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

Langkah 3: Buat aplikasi developer

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

  1. Buat 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 kunci enkripsi dibuat.

Langkah 4: Konfigurasi pemroses pesan

Sebelum enkripsi diaktifkan di 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, 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
  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

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

  4. Mulai ulang pemroses pesan 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 Anda telah menginstal pemroses pesan di beberapa node, ulangi langkah 1-4 di setiap node pemroses pesan.

Ringkasan

Setiap aplikasi developer yang Anda buat mulai sekarang akan memiliki rahasia kredensial yang dienkripsi dalam penyimpanan di database Cassandra.

Menggunakan variabel lingkungan untuk properti konfigurasi

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

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

Variabel lingkungan yang sesuai adalah:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

Jika Anda menetapkan variabel lingkungan ini, Anda dapat menghilangkan properti konfigurasi ini dari file konfigurasi pada node pemroses pesan dan server pengelolaan, karena properti tersebut 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 pemroses pesan dan server pengelolaan, 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 Tetapkan 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 di node pemroses pesan atau server pengelolaan. Lihat Langkah 2: Konfigurasi server pengelolaan dan Langkah 3: Konfigurasi 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 variabel lingkungan untuk properti konfigurasi.
conf_keymanagement_kmscred.encryption.kek.pass T/A Opsional jika Anda menggunakan variabel lingkungan untuk menetapkan properti ini. Lihat juga Menggunakan variabel lingkungan untuk properti konfigurasi.