Mengaktifkan enkripsi kunci rahasia

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

Ringkasan

Secara tradisional, Apigee Edge untuk Private Cloud telah menyediakan enkripsi opsional untuk data key value map (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 Hashing token untuk keamanan tambahan.
Rahasia konsumen aplikasi developer Tidak Ya Untuk mengaktifkan, lakukan langkah-langkah konfigurasi dalam dokumen ini.

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

  • Buat keystore untuk menyimpan Key encryption key (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.
  • Membuat aplikasi developer untuk memicu pembuatan kunci.
  • Mulai ulang node.

Tugas-tugas ini dijelaskan dalam dokumen ini.

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 rahasia tersebut disimpan dalam database Cassandra.

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

Jika Anda melakukan operasi tulis pada entitas yang tidak dienkripsi, operasi 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 pada setiap node server proses dan pengelolaan pesan tempat file konfigurasi lokal dapat mereferensikannya. Namun, penting juga untuk menyimpan salinan keystore di tempat lain agar tetap aman dan sebagai cadangan.

Mengaktifkan enkripsi kunci

Ikuti langkah-langkah berikut untuk menggunakan enkripsi kunci rahasia pelanggan:

Prasyarat

Anda harus memenuhi persyaratan berikut 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 merupakan administrator Apigee Edge untuk administrator Private Cloud.

Langkah 1: Buat keystore

Ikuti langkah-langkah berikut untuk membuat keystore guna 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 apa pun yang Anda inginkan):
    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 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: Konfigurasikan server pengelolaan

Selanjutnya, konfigurasikan server pengelolaan. Jika memiliki server pengelolaan yang diinstal pada beberapa node, Anda harus mengulangi langkah-langkah ini pada 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 memiliki server pengelolaan yang diinstal di beberapa node, ulangi langkah 1-4 di atas pada setiap node server pengelolaan.

Langkah 3: Membuat aplikasi developer

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

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

Langkah 4: Konfigurasikan pemroses pesan

Sebelum 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, 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 menginstal pemroses pesan pada beberapa node, ulangi langkah 1-4 pada setiap node pemroses pesan.

Ringkasan

Mulai sekarang, setiap aplikasi developer yang Anda buat akan memiliki rahasia kredensial yang dienkripsi saat disimpan di database Cassandra.

Menggunakan variabel lingkungan untuk properti konfigurasi

Anda juga bisa menetapkan properti konfigurasi server pengelolaan dan pemroses pesan 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 variabel lingkungan ini ditetapkan, Anda dapat menghilangkan properti konfigurasi ini dari file konfigurasi pada node server pengelolaan dan pemroses pesan, 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 pada semua node server pemroses dan pengelolaan pesan, seperti yang dijelaskan sebelumnya dalam dokumen ini.

Properti Default Deskripsi
conf_keymanagement_kmscred.encryption.enabled false Harus 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 Sediakan jalur ke keystore KEK pada pemroses pesan atau node server pengelolaan. Lihat Langkah 2: Konfigurasikan server pengelolaan dan Langkah 3: Konfigurasikan pemroses pesan.
conf_keymanagement_kmscred.encryption.kek.alias T/A Alias yang digunakan untuk menyimpan KEK dalam 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.