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 untuk 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. Tetapi penting juga untuk menyimpan keystore di tempat lain untuk pengamanan dan sebagai cadangan.
Mengaktifkan enkripsi kunci
Ikuti langkah-langkah berikut untuk menggunakan 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 ini untuk membuat keystore untuk menyimpan kunci enkripsi kunci (KEK):
- Jalankan perintah berikut untuk menghasilkan keystore guna menyimpan kunci yang akan digunakan
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 menghasilkan file keystore kekstore.p12 yang berisi kunci dengan alias KEYSTORE_NAME.
- (Opsional) Pastikan bahwa file dibuat dengan benar menggunakan perintah berikut. Jika file
sudah benar, perintah tersebut 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}.
- 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
- Pastikan file dapat dibaca oleh pengguna
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- 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 denganKEYSTORE_PASSWORD
, bergantung pada alat yang digunakan untuk membuat keystore. - 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 sudah siap:Checking if management-server is up: management-server is up.
- 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:
- Membuat aplikasi Developer untuk memicu pembuatan kunci enkripsi data (KEK). Untuk langkah-langkahnya, lihat Mendaftarkan aplikasi.
- 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.
- 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
- Pastikan file dapat dibaca oleh pengguna
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- 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 denganKEYSTORE_PASSWORD
bergantung pada alat yang digunakan untuk menghasilkan keystore. - 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.
- Jika pemroses pesan terinstal di beberapa node, ulangi langkah 1-4 untuk setiap node node pemroses pesan.
Ringkasan
Setiap aplikasi developer yang Anda buat mulai sekarang akan dienkripsi dengan rahasia kredensial beristirahat di {i>database<i} Cassandra.
Menggunakan variabel lingkungan untuk properti konfigurasi
Sebagai alternatif, Anda dapat menyetel pemroses pesan dan konfigurasi server pengelolaan 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 menghapus properti konfigurasi ini dari file konfigurasi pada pemroses pesan dan node server pengelolaan, karena keduanya 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 pemroses pesan dan pengelolaan jaringan, 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. |