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

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

  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. فایل keystore را که در مرحله ۱ تولید کردید در دایرکتوری‌ای در گره سرور مدیریت، مثل /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

    توجه داشته باشید که بسته به ابزار مورداستفاده برای تولید keystore، ممکن است 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. برنامه Developer ایجاد کنید تا ایجاد کلید رمزگذاری داده (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 موجود نیست مسیر keystore مربوط به KEK را در پردازشگر پیام یا گره سرور مدیریت ارائه دهید. به مرحله ۲: پیکربندی سرور مدیریت و مرحله ۳: پیکربندی پردازشگرهای پیام مراجعه کنید.
conf_keymanagement_kmscred.encryption.kek.alias موجود نیست نام مستعاری که KEK در آن در مخزن کلید ذخیره می‌شود.
conf_keymanagement_kmscred.encryption.keystore.pass موجود نیست اگر از متغیرهای محیطی برای تنظیم این ویژگی‌ها استفاده می‌کنید، اختیاری است. همچنین ببینید استفاده از متغیرهای محیطی برای ویژگی‌های پیکربندی.
conf_keymanagement_kmscred.encryption.kek.pass موجود نیست اگر از متغیرهای محیطی برای تنظیم این ویژگی‌ها استفاده می‌کنید، اختیاری است. همچنین ببینید استفاده از متغیرهای محیطی برای ویژگی‌های پیکربندی.