1. סקירה כללית
Cloud KMS הוא שירות לניהול מפתחות שמתארח בענן ומאפשר לכם לנהל מפתחות קריפטוגרפיים לשירותי הענן שלכם באותו אופן שבו אתם מנהלים אותם בשרתים מקומיים. הוא כולל תמיכה בהצפנה, בפענוח, בחתימה ובאימות באמצעות מגוון סוגים ומקורות של מפתחות, כולל Cloud HSM למפתחות שמגובים בחומרה. במדריך הזה נסביר איך להצפין ולפענח נתונים באמצעות מפתחות סימטריים של Cloud KMS.
מה תלמדו
- איך מפעילים את Cloud KMS API
- איך יוצרים אוסף מפתחות של Cloud KMS
- איך ליצור מפתח הצפנה של Cloud KMS להצפנה או לפענוח סימטריים
- איך מבצעים רוטציה למפתח הצפנה סימטרי של Cloud KMS
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, אתם צריכים ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
ב-codelab הזה תשתמשו ב-Cloud Shell, סביבה וירטואלית חינמית שפועלת ב-Google Cloud. ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אלא אם צוין אחרת, מריצים את כל הפקודות מה-Shell הזה.
3. הפעלת שירות Cloud KMS
כדי להשתמש ב-Cloud KMS, צריך קודם להפעיל את השירות בפרויקט. צריך לעשות את זה רק פעם אחת לכל פרויקט. כדי להפעיל את שירות Cloud KMS, מריצים את הפקודה הבאה:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
יכולה לעבור עד דקה לפני שהתכונה תופעל. הפקודה תדווח על הצלחה כשהיא תסתיים.
4. יצירת מפתח KMS
יוצרים אוסף מפתחות של Cloud KMS. ב-Cloud KMS, אוסף מפתחות הוא אוסף לוגי של מפתחות קריפטוגרפיים. אוסף המפתחות מכיל מטא-נתונים על המפתחות, כמו המיקום שלהם. יוצרים אוסף מפתחות בשם my-keyring באזור global:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
עכשיו יוצרים מפתח הצפנה בשם my-symmetric-key עם המטרה encryption בתוך אוסף המפתחות שיצרתם.
$ gcloud kms keys create "my-symmetric-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "encryption"
5. הצפנת נתונים
יוצרים קובץ עם נתונים להצפנה ומשתמשים בכלי gcloud של שורת הפקודה כדי להצפין את הנתונים בקובץ:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file ./data.txt \
--ciphertext-file ./data.txt.enc
הנתונים המוצפנים (שנקראים גם 'טקסט מוצפן') נשמרים ב-data.txt.enc בדיסק. אם תפתחו את הקובץ data.txt.enc, תראו שהוא מכיל תווים מוזרים שלא ניתן להדפיס. הסיבה לכך היא שהנתונים שמתקבלים הם בפורמט בינארי.
כשמאחסנים את הטקסט המוצפן במסד נתונים או מעבירים אותו כחלק מבקשת HTTP, יכול להיות שיהיה צורך לקודד את הנתונים. מנגנון קידוד נפוץ הוא base64.
Cloud KMS לא שומר אף אחד מהטקסטים הרגילים שאתם מספקים. צריך לשמור את מידע מוצפן (ciphertext) הזה במיקום מאובטח, כי הוא יידרש כדי לאחזר את ערך הטקסט לא מוצפן.
6. פענוח נתונים
מפענחים את הטקסט המוצפן מהקובץ באמצעות כלי שורת הפקודה gcloud:
$ gcloud kms decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
כלי שורת הפקודה gcloud קורא את הטקסט המוצפן מהקובץ ומפענח אותו באמצעות Cloud KMS. בדוגמה הזו, הארגומנט --plaintext-file מוגדר כ--. הפעולה הזו נותנת ל-gcloud הוראה להדפיס את התוצאה במסוף.
הערך my-contents יודפס במסוף, והוא זהה לערך הטקסט הפשוט מהקובץ שלמעלה.
7. החלפת מפתחות
ב-Cloud KMS, מפתח הצפנה הוא למעשה אוסף של גרסאות של מפתחות הצפנה. אתם יכולים ליצור גרסאות חדשות של מפתחות הצפנה כדי לבצע רוטציית מפתחות. Cloud KMS יכול גם לבצע רוטציה של מפתחות באופן אוטומטי לפי לוח זמנים.
כדי לבצע רוטציה למפתח באופן ידני, יוצרים גרסה חדשה של מפתח הצפנה ומגדירים אותה כגרסה הראשית:
$ gcloud kms keys versions create \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key" \
--primary
כל הבקשות העתידיות להצפנת נתונים ישתמשו במפתח החדש הזה. המפתחות הישנים עדיין זמינים לפענוח נתונים שהוצפנו בעבר באמצעות המפתחות האלה. Cloud KMS קובע באופן אוטומטי את מפתח הפענוח המתאים על סמך הטקסט המוצפן שסופק – אין צורך לציין איזו גרסת מפתח קריפטוגרפי תשמש לפענוח.
כדי למנוע פענוח של ערכי מידע מוצפן (ciphertext) שהוצפנו באמצעות גרסה ישנה יותר של מפתח קריפטוגרפי באמצעות Cloud KMS, אפשר להשבית או להשמיד את הגרסה הזו של המפתח הקריפטוגרפי. השבתה היא פעולה הפיכה, בעוד שהשמדה היא פעולה סופית. כדי להשבית גרסה:
$ gcloud kms keys versions disable "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-symmetric-key"
8. מעולה!
הפעלתם את Cloud KMS API, יצרתם מפתח הצפנה סימטרי והצפנתם ופענחתם נתונים. Cloud KMS הוא מוצר רב-עוצמה, והצפנה ופענוח הם רק חלק קטן מהיכולות שלו.
פינוי נפח
אם סיימתם את הבדיקה, כדאי למחוק את הפרויקט.
- נכנסים אל Cloud Platform Console.
- בוחרים את הפרויקט שרוצים לסגור ולוחצים על Delete (מחיקה) בחלק העליון. הפעולה הזו תגרום לכך שהפרויקט יתוזמן למחיקה.
מידע נוסף
רישיון
עבודה זו מורשית תחת רישיון Creative Commons שמותנה בייחוס 2.0 כללי.