במאמר הזה מוסבר איך להפעיל את ההצפנה של סודות הצרכן (פרטי הכניסה של הלקוח) של אפליקציית המפתח שמאוחסנים במסד הנתונים של Cassandra.
סקירה כללית
בעבר, Apigee Edge for Private Cloud סיפק הצפנה אופציונלית לנתוני מפות של ערכי מפתחות (KVM) ולטוקני גישה של OAuth.
בטבלה הבאה מתוארות אפשרויות ההצפנה של נתונים במנוחה ב-Apigee for Private Cloud:
| ישות | ההצפנה מופעלת כברירת מחדל | אפשרות להצפנה | מסמכים קשורים |
| מתגי KVM | לא | כן | מידע על KVM מוצפנים |
| טוקני גישה מסוג OAuth | לא | כן | גיבוב (hashing) של טוקנים לאבטחה נוספת |
| סודות צרכן של אפליקציות למפתחים | לא | כן | כדי להפעיל את התכונה, צריך לבצע את שלבי ההגדרה שמפורטים במסמך הזה. |
כדי להפעיל הצפנה של פרטי הכניסה של הלקוח, צריך לבצע את המשימות הבאות בכל הצמתים של מעבד הבקשות ושרת הניהול:
- יוצרים מאגר מפתחות כדי לאחסן מפתח להצפנת מפתחות הצפנה (KEK). Apigee משתמשת במפתח המוצפן הזה כדי להצפין את המפתחות הסודיים שנדרשים להצפנת הנתונים שלכם.
- עורכים את מאפייני ההגדרות בכל הצמתים של שרת הניהול ומעבד הבקשות.
- יוצרים אפליקציה למפתחים כדי להפעיל יצירת מפתח.
- מפעילים מחדש את הצמתים.
הפעולות האלה מוסברות במאמר הזה.
מה שצריך לדעת על תכונת ההצפנה באמצעות מפתחות
במאמר הזה מוסבר איך להפעיל את התכונה KEK, שמאפשרת ל-Apigee להצפין את המפתחות הסודיים שמשמשים להצפנת הסודות של הצרכנים באפליקציות למפתחים, כשהם מאוחסנים במנוחה במסד הנתונים של Cassandra.
כברירת מחדל, כל הערכים הקיימים במסד הנתונים יישארו ללא שינוי (בטקסט פשוט) וימשיכו לפעול כמו קודם.
אם מבצעים פעולת כתיבה כלשהי בישות לא מוצפנת, היא תוצפן כשהפעולה תישמר. לדוגמה, אם מבטלים טוקן לא מוצפן ואז מאשרים אותו, הטוקן החדש שאושר יהיה מוצפן.
שמירה על בטיחות המפתחות
חשוב לשמור עותק של מאגר המפתחות שבו מאוחסן ה-KEK במקום בטוח. מומלץ להשתמש במנגנון מאובטח משלכם כדי לשמור עותק של מאגר המפתחות. כפי שמוסבר בהוראות במסמך הזה, צריך להציב מאגר מפתחות בכל מעבד בקשות ובכל צומת של שרת ניהול, שבהם קובץ התצורה המקומי יכול להפנות אליו. אבל חשוב גם לשמור עותק של מאגר המפתחות במקום אחר, כדי שיהיה לכם גיבוי.
הפעלת הצפנת מפתחות
כדי להצפין את המפתח הסודי של הצרכן, פועלים לפי השלבים הבאים:
דרישות מוקדמות
כדי לבצע את השלבים שמפורטים במסמך הזה, אתם צריכים לעמוד בדרישות הבאות:
- צריך להתקין את Apigee Edge for Private Cloud בגרסה 4.50.00.10 ואילך, או לשדרג לגרסה הזו.
- אתם צריכים להיות אדמינים ב-Apigee Edge for Private Cloud.
שלב 1: יוצרים מאגר מפתחות (keystore)
כדי ליצור מאגר מפתחות שיכיל את המפתח להצפנת מפתחות (KEK):
- מריצים את הפקודה הבאה כדי ליצור מאגר מפתחות שבו יאוחסן מפתח שישמש להצפנת ה-KEK. מזינים את הפקודה בדיוק כמו שהיא מוצגת. (אפשר לתת למאגר המפתחות כל שם שרוצים):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
כשמופיעה בקשה, מזינים סיסמה. תשתמשו בסיסמה הזו בקטעים הבאים כשתגדירו את שרת הניהול ואת מעבד הבקשות.
הפקודה הזו יוצרת קובץ מאגר מפתחות בשם kekstore.p12 שמכיל מפתח עם הכינוי KEYSTORE_NAME.
- (אופציונלי) כדי לוודא שהקובץ נוצר בצורה נכונה, מריצים את הפקודה הבאה: אם הקובץ תקין, הפקודה מחזירה מפתח עם הכינוי KEYSTORE_NAME:
keytool -list -keystore kekstore.p12
שלב 2: מגדירים את שרת הניהול
בשלב הבא, מגדירים את שרת הניהול. אם שרתי הניהול מותקנים בכמה צמתים, צריך לחזור על השלבים האלה בכל צומת.
- מעתיקים את קובץ מאגר המפתחות שיצרתם בשלב 1 לספרייה בצומת של שרת הניהול, למשל
/opt/apigee/customer/application. לדוגמה:cp certs/kekstore.p12 /opt/apigee/customer/application
- מוודאים שהמשתמש
apigeeיכול לקרוא את הקובץ:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- מוסיפים את המאפיינים הבאים ל-
/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, בהתאם לכלי שבו השתמשתם כדי ליצור את מאגר המפתחות. - מפעילים מחדש את שרת הניהול באמצעות הפקודות הבאות:
/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.
- אם שרתי הניהול מותקנים בכמה צמתים, חוזרים על שלבים 1 עד 4 בכל צומת של שרת ניהול.
שלב 3: יוצרים אפליקציית מפתחים
אחרי שמעדכנים את שרתי הניהול, צריך ליצור אפליקציה למפתחים כדי להפעיל את היצירה של המפתח שמשמש להצפנת הנתונים של פרטי הכניסה של הלקוח:
- יוצרים אפליקציית מפתחים כדי להפעיל את היצירה של מפתח להצפנת מפתחות הצפנה (KEK). במאמר רישום אפליקציה מוסבר איך לעשות זאת.
- אם רוצים, מוחקים את אפליקציית המפתחים. אין צורך לשמור אותו אחרי שנוצר מפתח ההצפנה.
שלב 4: הגדרת מעבדי בקשות
עד שההצפנה תופעל במעבדי הבקשות, בקשות בזמן ריצה לא יוכלו לעבד פרטי כניסה מוצפנים.
- מעתיקים את קובץ מאגר המפתחות שיצרתם בשלב 1 לספרייה בצומת של מעבד ההודעות, למשל
/opt/apigee/customer/application. לדוגמה:cp certs/kekstore.p12 /opt/apigee/customer/application
- מוודאים שהמשתמש
apigeeיכול לקרוא את הקובץ:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- מוסיפים את המאפיינים הבאים ל-
/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, בהתאם לכלי שבו השתמשתם כדי ליצור את מאגר המפתחות. - מפעילים מחדש את מעבד הבקשות באמצעות הפקודות הבאות:
/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.
- אם יש לכם מעבדי בקשות שמותקנים בכמה צמתים, חזרו על שלבים 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
|
לא רלוונטי | אופציונלי אם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. מידע נוסף זמין במאמר שימוש במשתני סביבה למאפייני הגדרה. |