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