הפעלת הצפנה של מפתח סודי

במסמך הזה מוסבר איך להפעיל את ההצפנה של סודות צרכנים של אפליקציות למפתחים (פרטי כניסה של לקוח) במסד הנתונים של Cassandra.

סקירה כללית

באופן מסורתי, ב-Apigee Edge לענן פרטי סיפק הצפנה אופציונלית למיפוי של ערכי מפתחות נתוני (KVM) ואסימוני גישה ל-OAuth.

בטבלה הבאה מתוארות אפשרויות ההצפנה של נתונים באחסון ב-Apigee לענן פרטי:

ישות ההצפנה מופעלת כברירת מחדל יש אפשרות להצפנה מסמכי תיעוד קשורים
מכונות KVM לא כן מידע על מכונות KVM מוצפנות
אסימוני גישה מסוג OAuth לא כן אפשר לקרוא מידע נוסף בקטע גיבוב אסימונים כאמצעי אבטחה נוסף.
סודות צרכנים של אפליקציות למפתחים לא כן כדי להפעיל את ההגדרה, צריך לבצע את שלבי ההגדרה שמפורטים במסמך הזה.

כדי להפעיל הצפנה של פרטי כניסה של לקוח, צריך לבצע את המשימות הבאות ב- כל הצמתים של מעבד ההודעות ושרתי הניהול:

  • יצירה של מאגר מפתחות לצורך אחסון מפתח להצפנת מפתחות הצפנה (KEK). ב-Apigee משתמשים במפתח המוצפן הזה כדי להצפין את המפתחות הסודיים שנדרשים להצפנת הנתונים.
  • עריכת המאפיינים של ההגדרות האישיות בכל הצמתים של שרתי הניהול ומעבדי ההודעות.
  • צריך ליצור אפליקציה למפתחים כדי להפעיל יצירת מפתחות.
  • מפעילים מחדש את הצמתים.

המשימות האלה מוסברות במסמך הזה.

מה צריך לדעת לגבי המפתח תכונת הצפנה

בשלבים במסמך הזה מוסבר איך להפעיל את תכונת KEK, שמאפשרת ל-Apigee להצפין את מפתחות סודיים שמשמשים להצפנת אפליקציות למפתחים של סודות הצרכן כאשר הם מאוחסנים במנוחה במסד הנתונים של Cassandra.

כברירת מחדל, כל הערכים הקיימים במסד הנתונים לא ישתנו (בטקסט פשוט) ימשיכו לפעול כמו קודם.

אם מבצעים פעולת כתיבה כלשהי על ישות לא מוצפנת, היא תוצפן כאשר נשמרה. לדוגמה, אם תבטלו אסימון לא מוצפן ולאחר מכן תאשרו שלו, האסימון החדש שאושר יוצפן.

שמירה על בטיחות המפתחות

יש לאחסן עותק של מאגר המפתחות שבו מאוחסן ה-KEK במיקום בטוח. מומלץ להשתמש בניסוח האוטומטי מנגנון מאובטח לשמירת עותק של מאגר המפתחות. כפי שמוסבר בהוראות במסמך הזה, צריך למקם מאגר מפתחות בכל צומת של מעבד הודעות ושרת ניהול, שבו יכול להפנות אליו. אבל חשוב גם לאחסן עותק של מאגר המפתחות במקום אחר, לשמירה ולגיבוי.

הפעלה של הצפנת מפתחות

יש לפעול לפי השלבים הבאים להצפנת מפתחות סודיים של צרכנים:

דרישות מוקדמות

לפני שמבצעים את השלבים במסמך הזה, צריך לעמוד בדרישות הבאות:

  • עליכם להתקין או לשדרג ל-Apigee Edge לענן פרטי 4.50.00.10 ואילך.
  • צריך להיות לכם תפקיד של Apigee Edge לאדמין בענן פרטי.

שלב 1: יצירת מאגר מפתחות

כדי ליצור מאגר מפתחות לשמירת המפתח להצפנת מפתחות הצפנה (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

שלב 2: מגדירים את שרת הניהול

בשלב הבא, מגדירים את שרת הניהול. אם יש לכם שרתי ניהול שמותקנים במספר צמתים, תצטרכו לחזור על השלבים האלה בכל צומת.

  1. מעתיקים את קובץ מאגר המפתחות שיצרתם בשלב 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-4 שלמעלה בכל ניהול הצומת של השרת.

שלב 3: יוצרים אפליקציה למפתחים

עכשיו, כששרתי הניהול עודכנו, צריך ליצור אפליקציה למפתחים כדי להפעיל את היצירה של המפתח המשמש להצפנה של נתוני פרטי הכניסה של הלקוח:

  1. כדי ליצור מפתח להצפנת נתונים (KEK), צריך ליצור אפליקציה למפתחים. לשלבים: ראה רישום אפליקציה.
  2. אם רוצים, אפשר למחוק את האפליקציה למפתחים. אין צורך לשמור אותה בסביבה לאחר ההצפנה נוצר מפתח.

שלב 4: הגדרה של מעבדי הודעות

עד שמפעילים את ההצפנה במעבדי ההודעות, לא תהיה אפשרות לעבד פרטי כניסה מוצפנים בבקשות בזמן הריצה.

  1. מעתיקים את קובץ מאגר המפתחות שיצרתם בשלב 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. אם מותקנים מעבדי הודעות בכמה צמתים, צריך לחזור על השלבים 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 לא רלוונטי מספקים את הנתיב למאגר המפתחות של KEK בצומת של מעבד ההודעות או של שרת הניהול. ראו שלב 2: הגדרת הניהול שרת ושלב 3: הגדרת מעבדי הודעות.
conf_keymanagement_kmscred.encryption.kek.alias לא רלוונטי כינוי ששמור בו את ה-KEK במאגר המפתחות.
conf_keymanagement_kmscred.encryption.keystore.pass לא רלוונטי אופציונלי אם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. עוד באותו הקשר שימוש בסביבה משתנים למאפייני ההגדרות האישיות.
conf_keymanagement_kmscred.encryption.kek.pass לא רלוונטי אופציונלי אם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. עוד באותו הקשר שימוש בסביבה משתנים למאפייני ההגדרות האישיות.