این سند توضیح میدهد که چگونه رمزگذاری اسرار مصرفکننده برنامه توسعهدهنده (اطلاعات اعتباری کارخواه) ذخیرهشده در پایگاه داده Cassandra را فعال کنید.
نمای کلی
بهطور سنتی، Apigee Edge for Private Cloud رمزگذاری اختیاری برای دادههای نقشه مقدار کلید (KVM) و نشانهای دسترسی OAuth ارائه میدهد.
جدول زیر گزینههای رمزگذاری برای دادههای درحال استراحت در Apigee for Private Cloud را شرح میدهد:
| نهاد | رمزگذاری بهطور پیشفرض فعال است | رمزگذاری بهصورت اختیاری دردسترس است | مستندات مرتبط |
| KVMs | نه | بله | درباره KVM رمزگذاریشده ببینید. |
| کدهای دسترسی OAuth | نه | بله | رمزگذاری نشانها برای امنیت بیشتر را ببینید. |
| رمزهای مصرفکننده برنامه توسعهدهنده | نه | بله | برای فعال کردن، مراحل پیکربندی را در این سند انجام دهید. |
برای فعال کردن رمزگذاری اعتبارنامههای مشتری، باید کارهای زیر را در همه گرههای سرور مدیریت و پردازشگر پیام انجام دهید:
- برای ذخیره کردن کلید رمزگذاری کلید (KEK) یک انبار کلید ایجاد کنید. Apigee از این کلید رمزگذاریشده برای رمزگذاری کلیدهای محرمانه موردنیاز برای رمزگذاری دادههایتان استفاده میکند.
- خصوصیات پیکربندی را در همه گرههای سرور مدیریت و پردازشگر پیام ویرایش کنید.
- برای راهاندازی ایجاد کلید، برنامه توسعهدهنده ایجاد کنید.
- گرهها را بازراهاندازی کنید.
این تکالیف در این سند توضیح داده شده است.
آنچه باید درباره ویژگی رمزگذاری کلید بدانید
مراحل این سند توضیح میدهد که چگونه ویژگی KEK را فعال کنید، که به Apigee اجازه میدهد کلیدهای مخفی مورداستفاده برای رمزگذاری اسرار مصرفکننده برنامه توسعهدهنده را هنگام ذخیره شدن در حالت استراحت در پایگاه داده Cassandra رمزگذاری کند.
بهطور پیشفرض، هر مقدار موجود در پایگاه داده بدون تغییر (بهصورت نوشتار ساده) باقی میماند و همچنان مثل قبل کار خواهد کرد.
اگر هرگونه عملیات نوشتاری روی نهاد رمزگذارینشدهای انجام دهید، وقتی عملیات ذخیره میشود، رمزگذاری خواهد شد. برای مثال، اگر یک کد بدون رمزگذاری را باطل کنید و سپس آن را تأیید کنید، کد تأییدشده جدید رمزگذاری خواهد شد.
حفظ امنیت کلیدها
حتماً نسخهای از انبار کلید را که KEK در آن ذخیره شده است در مکانی امن نگهداری کنید. توصیه میکنیم از سازوکار امن خودتان برای ذخیره کردن نسخه پشتیبان از انبار کلید استفاده کنید. همانطور که دستورالعملهای این سند توضیح میدهد، یک انبار کلید باید در هر گره سرور مدیریت و پردازشگر پیام قرار داده شود تا فایل پیکربندی محلی بتواند به آن ارجاع دهد. اما همچنین مهم است که یک نسخه از keystore را در جای دیگری برای نگهداری ایمن و بهعنوان پشتیبان ذخیره کنید.
فعال کردن رمزگذاری کلید
برای رمزگذاری کلید محرمانه مصرفکننده، این مراحل را دنبال کنید:
پیشنیازها
قبلاز انجام مراحل این سند، باید این الزامات را برآورده کنید:
- باید Apigee Edge for Private Cloud 4.50.00.10 یا نسخههای جدیدتر را نصب کنید یا به آن ارتقا دهید.
- باید سرپرست Apigee Edge for Private Cloud باشید.
مرحله ۱: تولید کردن انبار کلید
برای ایجاد یک keystore برای نگهداری کلید رمزگذاری کلید (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
مرحله ۲: پیکربندی سرور مدیریت
سپس، سرور مدیریت را پیکربندی کنید. اگر سرورهای مدیریت را روی چند گره نصب کردهاید، باید این مراحل را روی هر گره تکرار کنید.
- فایل انبار کلید را که در «مرحله ۱» تولید کردید در دایرکتوری گره سرور مدیریت، مثلاً
/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.
- اگر سرورهای مدیریت نصبشده روی چند گره دارید، مراحل ۱ تا ۴ بالا را روی هر گره سرور مدیریت تکرار کنید.
مرحله ۳: ایجاد برنامه توسعهدهنده
اکنون که سرورهای مدیریت بهروزرسانی شدهاند، باید برنامه توسعهدهندهای ایجاد کنید تا تولید کلید مورداستفاده برای رمزگذاری دادههای اطلاعات اعتباری مشتری را راهاندازی کنید:
- برای راهاندازی ایجاد کلید رمزگذاری داده (KEK)، برنامه «توسعهدهنده» ایجاد کنید. برای مراحل، ثبت برنامه را ببینید.
- درصورت تمایل، برنامه توسعهدهنده را حذف کنید. پساز تولید کلید رمزگذاری، دیگر نیازی به نگهداری آن ندارید.
مرحله ۴: پیکربندی پردازشگرهای پیام
تا زمانی که رمزگذاری در پردازشگرهای پیام فعال نشود، درخواستهای زمان اجرا نمیتوانند هیچ اعتبارنامه رمزگذاریشدهای را پردازش کنند.
- فایل انبار کلید را که در «مرحله ۱» تولید کردید در فهرست راهنمای گره پردازشگر پیام کپی کنید،
برای مثال
/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.
- اگر پردازشگرهای پیام را روی چندین گره نصب کردهاید، مراحل ۱ تا ۴ را روی هر گره پردازشگر پیام تکرار کنید.
خلاصه
همه برنامههای توسعهدهندهای که ازاینپس ایجاد میکنید، رمزهای اعتباریشان در پایگاه داده 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 را در گره سرور مدیریت یا پردازشگر پیام ارائه دهید. به مرحله ۲: پیکربندی سرور مدیریت و مرحله ۳: پیکربندی پردازشگرهای پیام مراجعه کنید. |
conf_keymanagement_kmscred.encryption.kek.alias
|
موجود نیست | نام مستعاری که KEK در آن در مخزن کلید ذخیره میشود. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
موجود نیست | اگر از متغیرهای محیطی برای تنظیم این داراییها استفاده میکنید، اختیاری است. همچنین ببینید استفاده از متغیرهای محیطی برای ویژگیهای پیکربندی. |
conf_keymanagement_kmscred.encryption.kek.pass
|
موجود نیست | اگر از متغیرهای محیطی برای تنظیم این داراییها استفاده میکنید، اختیاری است. همچنین ببینید استفاده از متغیرهای محیطی برای ویژگیهای پیکربندی. |