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