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

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

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

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

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

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

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

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

  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 یکسان باشد.

  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. برای راه‌اندازی ایجاد کلید رمزگذاری داده (KEK)، برنامه «توسعه‌دهنده» ایجاد کنید. برای مراحل، ثبت برنامه را ببینید.
  2. درصورت تمایل، برنامه توسعه‌دهنده را حذف کنید. پس‌از تولید کلید رمزگذاری، دیگر نیازی به نگهداری آن ندارید.

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

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

  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 یکسان باشد بسته به ابزاری که برای تولید انبار کلید استفاده می‌شود.

  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. اگر پردازشگرهای پیام را روی چندین گره نصب کرده‌اید، مراحل ۱ تا ۴ را روی هر گره پردازشگر پیام تکرار کنید.

خلاصه

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