فعال کردن رمزگذاری کلید مخفی

این سند نحوه فعال کردن رمزگذاری اسرار مصرف‌کننده برنامه‌های توسعه‌دهنده (اعتبار مشتری) ذخیره شده در پایگاه داده 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) دنبال کنید:

  1. دستور زیر را برای ایجاد یک keystore برای ذخیره کلیدی که برای رمزگذاری KEK استفاده می شود، اجرا کنید. دستور را دقیقاً مطابق شکل وارد کنید. (شما می توانید هر نام فروشگاه کلیدی را که می خواهید ارائه کنید):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    وقتی از شما خواسته شد، یک رمز عبور وارد کنید. هنگام پیکربندی سرور مدیریت و پردازشگر پیام، از این رمز عبور در بخش های بعدی استفاده خواهید کرد.

    این دستور یک فایل kekstore.p12 keystore تولید می کند که حاوی کلیدی با نام مستعار KEYSTORE_NAME است.

  2. (اختیاری) با دستور زیر بررسی کنید که فایل به درستی تولید شده است. اگر فایل صحیح باشد، فرمان کلیدی را با نام مستعار KEYSTORE_NAME برمی‌گرداند:
    keytool -list -keystore kekstore.p12

مرحله 2: سرور مدیریت را پیکربندی کنید

سپس سرور مدیریت را پیکربندی کنید. اگر سرورهای مدیریتی را روی چندین گره نصب کرده اید، باید این مراحل را در هر نود تکرار کنید.

  1. فایل keystore را که در مرحله 1 ایجاد کردید در دایرکتوری روی گره سرور مدیریت مانند /opt/apigee/customer/application کپی کنید. به عنوان مثال:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. اطمینان حاصل کنید که فایل توسط کاربر apigee قابل خواندن است:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. ویژگی های زیر را به /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 استفاده می شود.

  4. با استفاده از دستورات زیر سرور مدیریت را راه اندازی مجدد کنید:
    /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.
    
  5. اگر سرورهای مدیریتی را روی چندین گره نصب کرده اید، مراحل 1-4 بالا را در هر گره سرور مدیریتی تکرار کنید.

مرحله 3: یک برنامه توسعه دهنده ایجاد کنید

اکنون که سرورهای مدیریت به روز شده اند، باید یک برنامه توسعه دهنده ایجاد کنید تا کلیدی را که برای رمزگذاری داده های اعتبار مشتری استفاده می شود، راه اندازی کند:

  1. یک برنامه توسعه دهنده ایجاد کنید تا کلید رمزگذاری داده (KEK) ایجاد شود. برای مراحل، به ثبت برنامه مراجعه کنید.
  2. در صورت تمایل برنامه توسعه دهنده را حذف کنید. پس از تولید کلید رمزگذاری، نیازی نیست آن را در اطراف نگه دارید.

مرحله 4: پردازشگرهای پیام را پیکربندی کنید

تا زمانی که رمزگذاری در پردازنده‌های پیام فعال نشود، درخواست‌های زمان اجرا نمی‌توانند هیچ اعتبار رمزگذاری شده را پردازش کنند.

  1. فایل keystore که در مرحله 1 ایجاد کردید را در دایرکتوری روی گره پردازشگر پیام، مانند /opt/apigee/customer/application کپی کنید. به عنوان مثال:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. اطمینان حاصل کنید که فایل توسط کاربر apigee قابل خواندن است:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. ویژگی های زیر را به /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 استفاده می شود.

  4. با استفاده از دستورات زیر پردازنده پیام را مجددا راه اندازی کنید:
    /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.
  5. اگر پردازنده های پیام را روی چندین گره نصب کرده اید، مراحل 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 اگر از متغیرهای محیطی برای تنظیم این ویژگی ها استفاده می کنید، اختیاری است. همچنین استفاده از متغیرهای محیطی برای ویژگی‌های پیکربندی را ببینید.