يوضّح هذا المستند كيفية تفعيل تشفير أسرار مستخدِمي تطبيق المطوّر (بيانات اعتماد العميل) المخزّنة في قاعدة بيانات Cassandra.
نظرة عامة
في السابق، كان Apigee Edge for Private Cloud يقدّم تشفيرًا اختياريًا لبيانات "خريطة القيم الرئيسية" (KVM) ورموز الوصول إلى OAuth.
يوضّح الجدول التالي خيارات التشفير للبيانات غير النشطة في Apigee for Private Cloud:
الكيان | التشفير مفعَّل تلقائيًا | التشفير متاح اختياريًا | المستندات ذات الصلة |
آلات متجه الدعم | لا | نعم | راجِع لمحة عن وحدات التحكّم في حدود الجلسة المشفَّرة. |
رموز الدخول عبر OAuth | لا | نعم | راجِع الرموز المميّزة للتجزئة لمزيد من الأمان. |
مفاتيح العميل الخاصة بتطبيقات المطوّرين | لا | نعم | لتفعيل هذه الميزة، عليك تنفيذ خطوات الضبط الواردة في هذا المستند. |
لتفعيل تشفير بيانات اعتماد العميل، عليك تنفيذ المهام التالية على جميع عقد معالج الرسائل وخادم الإدارة:
- أنشئ ملف تخزين مفاتيح لحفظ مفتاح تشفير المفتاح (KEK). تستخدم Apigee هذا المفتاح المشفَّر لتشفير المفاتيح السرية اللازمة لتشفير بياناتك.
- تعديل سمات الضبط على جميع عقد خادم الإدارة ومعالج الرسائل
- أنشئ تطبيق مطوّر لبدء عملية إنشاء المفتاح.
- أعِد تشغيل العقد.
يتم شرح هذه المهام في هذا المستند.
معلومات يجب معرفتها عن ميزة تشفير المفاتيح
توضّح الخطوات الواردة في هذا المستند كيفية تفعيل ميزة مفتاح التشفير المتّصل بالخدمات (KEK)، ما يسمح لخدمة Apigee بتشفير المفاتيح السرية المستخدَمة لتشفير أسرار مطوّري التطبيقات ومستخدِمي التطبيقات عند تخزينها في قاعدة بيانات Cassandra.
بشكل تلقائي، ستظل أي قيم حالية في قاعدة البيانات بدون تغيير (بنص عادي) وستستمر في العمل كما في السابق.
إذا أجريت أي عملية كتابة على عنصر غير مشفَّر، سيتم تشفيره عند حفظ العملية. على سبيل المثال، إذا أبطلت رمزًا مميزًا غير مشفَّر ثم وافقت عليه في وقت لاحق، سيتم تشفير الرمز المميّز الذي تمت الموافقة عليه مؤخرًا.
الحفاظ على أمان المفاتيح
احرص على تخزين نسخة من ملف تخزين المفاتيح الذي يتم فيه تخزين مفتاح KEK في مكان آمن. وننصحك باستخدام آليتك الآمنة الخاصة بك لحفظ نسخة من ملف تخزين المفاتيح. كما توضّح التعليمات الواردة في هذا المستند، يجب وضع ملف تخزين مفاتيح على كلّ من معالج الرسائل وعقدة خادم الإدارة حيث يمكن لملف الإعدادات المحلي الرجوع إليه. ولكن من المهم أيضًا تخزين نسخة من ملف تخزين المفاتيح في مكان آخر للاحتفاظ بها كنسخة احتياطية.
جارٍ تفعيل تشفير المفتاح
اتّبِع الخطوات التالية لتشفير مفتاح العميل السري:
المتطلبات الأساسية
يجب استيفاء هذه المتطلبات قبل تنفيذ الخطوات الواردة في هذا المستند:
- يجب تثبيت الإصدار 4.50.00.10 أو إصدار أحدث من Apigee Edge for Private Cloud أو الترقية إلى الإصدار الأحدث.
- يجب أن تكون مشرفًا في Apigee Edge for Private Cloud.
الخطوة 1: إنشاء ملف تخزين مفاتيح
اتّبِع الخطوات التالية لإنشاء ملف تخزين مفاتيح يتضمن مفتاح تشفير المفاتيح (KEK):
- نفِّذ الأمر التالي لإنشاء ملف تخزين مفاتيح لتخزين مفتاح سيتم استخدامه في
تشفير مفتاح تشفير المفتاح (KEK). أدخِل الأمر كما هو موضَّح تمامًا. (يمكنك تقديم أي اسم تريده لمستودع المفاتيح):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
أدخِل كلمة مرور عندما يُطلب منك ذلك. ستستخدم كلمة المرور هذه في أقسام لاحقة عند إعداد خادم الإدارة ومعالج الرسائل.
ينشئ هذا الأمر ملف تخزين مفاتيح kekstore.p12 يحتوي على مفتاح يحمل الاسم المعرِّف KEYSTORE_NAME.
- (اختياري) تأكَّد من إنشاء الملف بشكل صحيح باستخدام الأمر التالي. إذا كان الملف صحيحًا، سيعرض الأمر مفتاحًا بالاسم المستعار KEYSTORE_NAME:
keytool -list -keystore kekstore.p12
العمل مع ملفات تخزين مفاتيح BCFKS لأنظمة التشغيل التي تستخدم بروتوكول FIPS
إذا كنت تستخدم Edge for Private Cloud على نظام تشغيل متوافق مع معيار FIPS، عليك إنشاء ملف تخزين مفاتيح من النوع BCFKS. يمكن إنشاء ملف تخزين مفاتيح التشفير هذا على جهاز غير متوافق مع معيار FIPS، ثم نقله إلى جهاز متوافق مع معيار FIPS. لإنشاء ملف تخزين المفاتيح، استخدِم الأمر التالي:
keytool -genseckey -alias <KEYSTORE_NAME> -keyalg AES -keysize 256 \
-storetype BCFKS -keystore keystore.bcfks \
-providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
-keypass keystorepass -storepass keystorepass
قد تحتاج إلى تنفيذ إعدادات Java إضافية على الجهاز الذي تُنشئ منه ملف تخزين المفاتيح هذا. قد تحتاج إلى تعديل ملف أمان Java على الجهاز (يقع عادةً في /usr/lib/jvm/jre/lib/security/java.security). في هذا الملف، ابحث عن السمات التالية وعدِّلها:
# Don't rely on /dev/random for generating random numbers
securerandom.source=file:/dev/urandom
securerandom.strongAlgorithms=PKCS11:SunPKCS11-NSS-FIPS
الخطوة 2: ضبط إعدادات خادم الإدارة
بعد ذلك، عليك ضبط إعدادات خادم الإدارة. إذا كانت لديك خوادم إدارة مثبّتة على عدة عقد، عليك تكرار هذه الخطوات على كل عقدة.
- انسخ ملف تخزين المفاتيح الذي أنشأته في الخطوة 1 إلى دليل على عقدة خادم الإدارة، مثل
/opt/apigee/customer/application
. على سبيل المثال:cp certs/kekstore.p12 /opt/apigee/customer/application
- تأكَّد من أنّ الملف قابل للقراءة من قِبل المستخدِم
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- أضِف السمات التالية إلى
/opt/apigee/customer/application/management-server.properties
. إذا لم يكن الملف متوفّرًا، أنشِئه. اطّلِع أيضًا على مرجع ملفّات المواقع.
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
يُرجى العِلم أنّ
KEK_PASSWORD
قد يكون مطابقًا لـKEYSTORE_PASSWORD
استنادًا إلى الأداة المستخدَمة لإنشاء ملف تخزين المفاتيح. - أعِد تشغيل خادم الإدارة باستخدام الأوامر التالية:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
يعرض الأمر
wait_for_ready
الرسالة التالية عندما يكون خادم الإدارة جاهزًا:Checking if management-server is up: management-server is up.
- إذا كانت لديك خوادم إدارة مثبَّتة على عُقد متعددة، كرِّر الخطوات من 1 إلى 4 أعلاه على كل عقدة خادم الإدارة.
الخطوة 3: إنشاء تطبيق مطوِّر
بعد تعديل خوادم الإدارة، عليك إنشاء تطبيق مطوّر لبدء إنشاء المفتاح المستخدَم لتشفير بيانات بيانات اعتماد العميل:
- أنشئ تطبيق مطوِّر لبدء إنشاء مفتاح تشفير البيانات (KEK). لمعرفة الخطوات، يمكنك الاطّلاع على تسجيل تطبيق.
- احذف تطبيق المطوِّر إذا أردت. لست بحاجة إلى الاحتفاظ به بعد إنشاء مفتاح التشفير.
الخطوة 4: ضبط معالجات الرسائل
لن تتمكّن طلبات وقت التشغيل من معالجة أي بيانات اعتماد مشفّرة إلى أن يتم تفعيل التشفير في معالِجات الرسائل.
- انسخ ملف تخزين المفاتيح الذي أنشأته في الخطوة 1 إلى دليل في عقدة معالج الرسائل،
مثل
/opt/apigee/customer/application
. على سبيل المثال:cp certs/kekstore.p12 /opt/apigee/customer/application
- تأكَّد من أنّ الملف قابل للقراءة من قِبل المستخدِم
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- أضِف السمات التالية إلى
/opt/apigee/customer/application/message-processor.properties
. إذا لم يكن الملف متوفّرًا، أنشِئه. راجِع أيضًا مرجع ملف الموقع.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
يُرجى العلم أنّ
KEK_PASSWORD
قد يكون مطابقًا لـKEYSTORE_PASSWORD
استنادًا إلى الأداة المستخدَمة لإنشاء ملف تخزين المفاتيح. - أعِد تشغيل معالِج الرسائل باستخدام الأوامر التالية:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
يعرض الأمر
wait_for_ready
الرسالة التالية عندما يصبح معالج الرسائل جاهزًا لمعالجة الرسائل:Checking if message-processor is up: message-processor is up.
- إذا كانت لديك معالجات رسائل مثبّتة على عُقد متعدّدة، كرِّر الخطوات من 1 إلى 4 على كل عقدة لمعالجة الرسائل.
ملخّص
سيتم تشفير بيانات اعتماد أي من تطبيقات المطوّرين التي تنشئها من الآن فصاعدًا في قاعدة بيانات Cassandra.
استخدام متغيّرات البيئة لتحديد خصائص الضبط
يمكنك بدلاً من ذلك ضبط السمات التالية الخاصة بمعالج الرسائل وإعداد خادم الإدارة باستخدام متغيّرات البيئة. في حال ضبطها، تلغي متغيّرات البيئة الخصائص التي تم ضبطها في معالج الرسائل أو ملف إعدادات خادم الإدارة.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
في ما يلي متغيّرات البيئة المقابلة:
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
في حال ضبط متغيّرات البيئة هذه، يمكنك حذف سمات الضبط هذه منملفّات الضبط في عقدتَي معالج الرسائل وخادم الإدارة، لأنّه سيتم تجاهلها:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
مرجع ملف الملكية
يوضّح هذا القسم سمات الضبط التي يجب ضبطها على جميع معالجات الرسائل وعقد الخادم الإداري، كما هو موضّح سابقًا في هذا المستند.
الموقع | تلقائي | الوصف |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
يجب أن يكون true لتفعيل تشفير المفتاح.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
اضبط allowFallback على true لضمان استمرار عمل بيانات الاعتماد الحالية بتنسيق النص العادي.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
لا ينطبق | أدخِل مسار متجر مفاتيح KEK على وحدة معالجة الرسائل أو عقدة خادم الإدارة. راجِع الخطوة 2: ضبط ملف إدارة الخادم والخطوة 3: ضبط معالجات الرسائل. |
conf_keymanagement_kmscred.encryption.kek.alias
|
لا ينطبق | الاسم المستعار الذي يتم تخزين مفتاح KEK بناءً عليه في ملف تخزين المفاتيح. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
لا ينطبق | اختيارية في حال استخدام متغيّرات البيئة لضبط هذه الخصائص. اطّلِع أيضًا على استخدام متغيّرات البيئة لمواقع الضبط. |
conf_keymanagement_kmscred.encryption.kek.pass
|
لا ينطبق | اختيارية في حال استخدام متغيّرات البيئة لضبط هذه السمات راجِع أيضًا استخدام متغيّرات البيئة لخصائص الضبط. |