1. סקירה כללית
Cloud KMS הוא שירות לניהול מפתחות שמתארח בענן, שמאפשר לכם לנהל מפתחות קריפטוגרפיים לשירותי הענן באותו אופן שבו מנהלים אותו בארגון. היא כוללת תמיכה בהצפנה, פענוח, חתימה ואימות באמצעות מגוון סוגים ומקורות של מפתחות, כולל Cloud HSM למפתחות שמגובים בחומרה. במדריך הזה תלמדו איך להצפין ולפענח נתונים באמצעות מפתחות אסימטריים של Cloud KMS.
כך תלמדו
- איך מפעילים את ממשק Cloud KMS API
- איך יוצרים טבעת מפתחות
- איך יוצרים מפתח הצפנה להצפנה/פענוח אסימטריים
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
ב-Codelab הזה משתמשים ב-Cloud Shell, סביבה וירטואלית חינמית שפועלת ב-Google Cloud. ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB, והיא פועלת ב-Google Cloud כדי לשפר משמעותית את ביצועי הרשת והאימות. מריצים את כל הפקודות מהמעטפת הזו, אלא אם צוין אחרת.
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-asymmetric-encryption-key
עם המטרה asymmetric-encryption
בתוך טבעת המפתחות שיצרת.
$ gcloud kms keys create "my-asymmetric-encryption-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. הצפנת נתונים
כשמשתמשים במפתחות אסימטריים, Cloud KMS לא מבצע את ההצפנה. במקום זאת, הוא מספק גישה למפתח ציבורי ומצפינים נתונים באמצעות המפתח הציבורי באמצעות קריפטוגרפיה של מפתח ציבורי. בעזרת מפתחות אסימטריים אפשר לבצע הצפנה בלי צורך בגישה ל-Cloud KMS או לממשקי API אחרים של Google Cloud. ההצפנה מתבצעת באמצעות כלי קריפטוגרפי כמו openssl
, או באמצעות שפת תכנות או ספרייה שתומכות בהצפנת מפתחות ציבוריים.
מורידים את המפתח הציבורי מ-Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --output-file ./key.pub
יוצרים קובץ עם נתונים להצפנה, ומשתמשים בכלי שורת הפקודה openssl
כדי להצפין את הנתונים שבקובץ:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \ -in ./data.txt \ -inkey ./key.pub \ -pkeyopt "rsa_padding_mode:oaep" \ -pkeyopt "rsa_oaep_md:sha512" \ -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
הנתונים המוצפנים (שנקראים גם 'טקסט מוצפן') יישמרו בדיסק data.txt.enc
. אם תפתחו את הקובץ data.txt.enc
, תראו שיש בו תווים מוזרים שלא ניתנים להדפסה. הסיבה לכך היא שהנתונים שמתקבלים הם בפורמט בינארי.
כשמאחסנים את המידע המוצפן במסד נתונים או משדרים אותו כחלק מבקשת HTTP, ייתכן שיהיה צורך לקודד את הנתונים. מנגנון הקידוד הנפוץ ביותר של מידע מוצפן (ciphertext) הוא base64.
Cloud KMS לא מאחסן טקסט ללא הצפנה שאתם מספקים. עליך לשמור את המידע המוצפן הזה במיקום מאובטח, כי הוא יידרש לאחזור של הערך של הטקסט ללא הצפנה.
6. פענוח הנתונים
בניגוד להצפנה, כדי לפענח נתונים שהוצפנו באמצעות מפתח Cloud KMS אסימטרי נדרשת גישה אונליין לשירות Cloud KMS. מפענחים את המידע המוצפן מהקובץ באמצעות כלי שורת הפקודה gcloud
:
$ gcloud kms asymmetric-decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --version "1" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
כלי שורת הפקודה gcloud
קורא את המידע המוצפן מהקובץ ומפענח אותו באמצעות Cloud KMS. שימו לב שבדוגמה הזו מופיעה הארגומנט --plaintext-file
בתור -
. הפעולה הזו מורה ל-gcloud
להדפיס את התוצאה בטרמינל.
המסוף ידפיס את my-contents
, שהוא אותו ערך של טקסט ללא הצפנה מהקובץ שלמעלה.
7. מעולה!
הפעלתם את ממשק Cloud KMS API, יצרתם מפתח הצפנה אסימטרי ונתונים מוצפנים ומפוענחו! Cloud KMS הוא מוצר רב-עוצמה, והצפנה/פענוח שאתגרו את היכולות שלו.
פינוי מקום
אם סיימת לבחון את הנושא, כדאי למחוק את הפרויקט.
- עוברים אל Cloud Platform Console
- בוחרים את הפרויקט שרוצים להשבית ולוחצים על 'מחיקה'. למעלה. הפעולה הזו תתזמן את הפרויקט למחיקה.
מידע נוסף
רישיון
היצירה הזו בשימוש ברישיון Creative Commons Attribution 2.0 גנרי.