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

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

סקירה כללית

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • צריך להתקין את Apigee Edge או לשדרג ל-Private Cloud מגרסה 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. מעתיקים את קובץ ה-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, בהתאם לכלי שמשמש ליצירת מאגר המפתחות.

  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 ב-Keystore.
conf_keymanagement_kmscred.encryption.keystore.pass לא רלוונטי אופציונלי אם אתם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. למידע נוסף, ראו שימוש במשתני סביבה למאפיינים של הגדרות אישיות.
conf_keymanagement_kmscred.encryption.kek.pass לא רלוונטי אופציונלי אם אתם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. למידע נוסף, ראו שימוש במשתני סביבה למאפיינים של הגדרות אישיות.