این سند نحوه فعال کردن رمزگذاری اسرار مصرفکننده برنامههای توسعهدهنده (اعتبار مشتری) ذخیره شده در پایگاه داده Cassandra را توضیح میدهد.
نمای کلی
به طور سنتی، Apigee Edge برای Private Cloud رمزگذاری اختیاری را برای داده های نقشه ارزش کلیدی (KVM) و نشانه های دسترسی OAuth ارائه می کند.
جدول زیر گزینه های رمزگذاری برای داده ها در حالت استراحت در Apigee for Private Cloud را توضیح می دهد:
موجودیت | رمزگذاری به طور پیش فرض فعال است | رمزگذاری به صورت اختیاری در دسترس است | مستندات مرتبط |
KVM ها | خیر | بله | درباره KVM های رمزگذاری شده رجوع کنید. |
نشانه های دسترسی OAuth | خیر | بله | برای امنیت بیشتر به هش توکن ها مراجعه کنید. |
اسرار مصرف کننده برنامه توسعه دهنده | خیر | بله | برای فعال کردن، مراحل پیکربندی را در این سند انجام دهید. |
برای فعال کردن رمزگذاری اعتبار مشتری، باید وظایف زیر را در تمام گرههای پردازشگر پیام و سرور مدیریت انجام دهید:
- یک فروشگاه کلید برای ذخیره یک کلید رمزگذاری کلید (KEK) ایجاد کنید. Apigee از این کلید رمزگذاری شده برای رمزگذاری کلیدهای مخفی مورد نیاز برای رمزگذاری داده های شما استفاده می کند.
- ویژگی های پیکربندی را در تمام گره های سرور مدیریت و پردازشگر پیام ویرایش کنید.
- یک برنامه توسعه دهنده برای ایجاد کلید ایجاد کنید.
- گره ها را مجددا راه اندازی کنید.
این وظایف در این سند توضیح داده شده است.
آنچه باید در مورد ویژگی رمزگذاری کلید بدانید
مراحل این سند نحوه فعال کردن ویژگی KEK را توضیح میدهد، که به Apigee اجازه میدهد تا کلیدهای مخفی مورد استفاده برای رمزگذاری اسرار مصرفکننده برنامه توسعهدهنده را هنگامی که در حالت استراحت در پایگاه داده Cassandra ذخیره میشوند، رمزگذاری کند.
به طور پیش فرض، هر مقدار موجود در پایگاه داده بدون تغییر باقی می ماند (در متن ساده) و مانند قبل به کار خود ادامه می دهد.
اگر هر عملیات نوشتنی را روی یک موجودیت رمزگذاری نشده انجام دهید، زمانی که عملیات ذخیره شد، رمزگذاری خواهد شد. به عنوان مثال، اگر یک توکن رمزگذاری نشده را لغو کنید و بعداً آن را تأیید کنید، رمز تأیید شده جدید رمزگذاری می شود.
ایمن نگه داشتن کلیدها
حتماً یک کپی از فروشگاه کلیدی که KEK در آن ذخیره می شود را در مکانی امن ذخیره کنید. توصیه می کنیم از مکانیسم ایمن خود برای ذخیره یک کپی از keystore استفاده کنید. همانطور که دستورالعملهای این سند توضیح میدهند، باید روی هر پردازشگر پیام و گره سرور مدیریتی یک کلید ذخیره قرار داده شود که فایل پیکربندی محلی بتواند به آن ارجاع دهد. اما همچنین مهم است که یک نسخه از keystore را در جای دیگری برای نگهداری و به عنوان پشتیبان ذخیره کنید.
فعال کردن رمزگذاری کلید
مراحل زیر را برای رمزگذاری کلید مخفی مصرف کننده دنبال کنید:
پیش نیازها
قبل از انجام مراحل این سند باید این الزامات را رعایت کنید:
- باید Apigee Edge را برای Private Cloud 4.50.00.10 یا جدیدتر نصب یا ارتقا دهید.
- شما باید یک مدیر Apigee Edge برای Private Cloud باشید.
مرحله 1: یک فروشگاه کلید ایجاد کنید
این مراحل را برای ایجاد یک فروشگاه کلید برای نگه داشتن کلید رمزگذاری کلید (KEK) دنبال کنید:
- دستور زیر را برای ایجاد یک keystore برای ذخیره کلیدی که برای رمزگذاری KEK استفاده می شود، اجرا کنید. دستور را دقیقاً مطابق شکل وارد کنید. (شما می توانید هر نام فروشگاه کلیدی را که می خواهید ارائه کنید):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
وقتی از شما خواسته شد، یک رمز عبور وارد کنید. هنگام پیکربندی سرور مدیریت و پردازشگر پیام، از این رمز عبور در بخش های بعدی استفاده خواهید کرد.
این دستور یک فایل kekstore.p12 keystore تولید می کند که حاوی کلیدی با نام مستعار KEYSTORE_NAME است.
- (اختیاری) با دستور زیر بررسی کنید که فایل به درستی تولید شده است. اگر فایل صحیح باشد، فرمان کلیدی را با نام مستعار KEYSTORE_NAME برمیگرداند:
keytool -list -keystore kekstore.p12
کار با کلیدهای BCFKS برای سیستم عامل های مجهز به FIPS
اگر از Edge برای Private Cloud در یک سیستم عامل دارای FIPS استفاده می کنید، باید یک keystore از نوع BCFKS ایجاد کنید. چنین ذخیرهسازی کلیدی را میتوان بر روی یک دستگاه غیر FIPS ایجاد کرد و سپس به دستگاه سازگار با FIPS منتقل کرد. برای تولید keystore از دستور زیر استفاده کنید:
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
ممکن است لازم باشد تنظیمات جاوا اضافی را در دستگاهی که در آن این فروشگاه کلید را ایجاد می کنید، انجام دهید. ممکن است لازم باشد فایل امنیتی جاوا دستگاه (که معمولاً در /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: سرور مدیریت را پیکربندی کنید
سپس سرور مدیریت را پیکربندی کنید. اگر سرورهای مدیریتی را روی چندین گره نصب کرده اید، باید این مراحل را در هر نود تکرار کنید.
- فایل keystore را که در مرحله 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
یکسان باشد، بسته به ابزاری که برای تولید keystore استفاده می شود. - با استفاده از دستورات زیر سرور مدیریت را راه اندازی مجدد کنید:
/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: پردازشگرهای پیام را پیکربندی کنید
تا زمانی که رمزگذاری در پردازندههای پیام فعال نشود، درخواستهای زمان اجرا نمیتوانند هیچ اعتبار رمزگذاری شده را پردازش کنند.
- فایل keystore که در مرحله 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
یکسان باشد، بسته به ابزاری که برای تولید keystore استفاده می شود. - با استفاده از دستورات زیر پردازنده پیام را مجددا راه اندازی کنید:
/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 | N/A | مسیر ذخیره کلید KEK را در پردازنده پیام یا گره سرور مدیریت ارائه دهید. مرحله 2: پیکربندی سرور مدیریت و مرحله 3: پیکربندی پردازشگرهای پیام را ببینید. |
conf_keymanagement_kmscred.encryption.kek.alias | N/A | نام مستعاری که KEK با آن در keystore ذخیره می شود. |
conf_keymanagement_kmscred.encryption.keystore.pass | N/A | اگر از متغیرهای محیطی برای تنظیم این ویژگی ها استفاده می کنید، اختیاری است. همچنین استفاده از متغیرهای محیطی برای ویژگیهای پیکربندی را ببینید. |
conf_keymanagement_kmscred.encryption.kek.pass | N/A | اگر از متغیرهای محیطی برای تنظیم این ویژگی ها استفاده می کنید، اختیاری است. همچنین استفاده از متغیرهای محیطی برای ویژگیهای پیکربندی را ببینید. |