במאמר הזה מוסבר איך להפעיל את ההצפנה של סודות הצרכן (פרטי הכניסה של הלקוח) של אפליקציית המפתח שמאוחסנים במסד הנתונים של 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):
- מריצים את הפקודה הבאה כדי ליצור מאגר מפתחות לאחסון מפתח שישמש להצפנה של המפתח להצפנת מפתחות הצפנה. מזינים את הפקודה בדיוק כמו שהיא מוצגת. (אפשר לציין כל שם שרוצים למאגר המפתחות):
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
|
לא רלוונטי | אופציונלי אם משתמשים במשתני סביבה כדי להגדיר את המאפיינים האלה. מידע נוסף זמין במאמר שימוש במשתני סביבה למאפייני הגדרה. |