בנושא הזה מוסבר איך להצפין מחדש נתונים באמצעות מפתח סימטרי של Cloud Key Management Service. אפשר להתאים את הדוגמאות האלה למפתחות אסימטריים. אם יש חשד לשימוש לא מורשה במפתח, צריך להצפין מחדש את הנתונים שמוגנים על ידי המפתח הזה, ואז להשבית את הגרסה הקודמת של המפתח או לתזמן את ההשמדה שלה.
לפני שמתחילים
כדי שהתרחיש הזה יפעל, צריכים להתקיים התנאים הבאים.
כבר הצפנתם נתונים באמצעות Cloud KMS.
גרסת המפתח ששימשה להצפנה לא מושבתת, לא מתוזמנת להשמדה ולא מושמדת. אתם משתמשים בגרסת המפתח הזו כדי לפענח את הנתונים המוצפנים.
כבר סובבת מפתחות. רוטציית מפתחות יוצרת גרסה ראשית חדשה של המפתח. משתמשים בגרסה החדשה של המפתח הראשי כדי להצפין מחדש את הנתונים.
הצפנה מחדש של נתונים באמצעות מפתחות אסימטריים
בדוגמאות שבנושא הזה מוסבר איך להצפין מחדש נתונים באמצעות מפתח סימטרי. כשמשתמשים במפתח סימטרי, Cloud KMS מסיק באופן אוטומטי את גרסת המפתח שבה צריך להשתמש לפענוח. כשמשתמשים במפתח אסימטרי, צריך לציין את גרסת המפתח.
- כשפועלים לפי הוראות לשימוש ב-Google Cloud CLI, תמיד צריך לכלול את הדגל
--version. - כשפועלים לפי ההוראות לשימוש ב-API, משתמשים ב-
CryptoKeyVersionsבמקום ב-CryptoKeys. מידע נוסף על הצפנה ופענוח של נתונים באמצעות מפתח אסימטרי
תהליך העבודה להצפנה מחדש של נתונים באמצעות מפתחות אסימטריים דומה לזה שמתואר בנושא הזה.
תהליך עבודה של הצפנה מחדש של נתונים
כדי להצפין מחדש את הנתונים ולהשבית את גרסת המפתח ששימשה להצפנה המקורית או לתזמן את ההשמדה שלה, פועלים לפי השלבים הבאים.
פענוח הנתונים באמצעות גרסת המפתח הקודמת
מערכת Cloud KMS משתמשת אוטומטית בגרסת המפתח הנכונה כדי לפענח נתונים, כל עוד גרסת המפתח לא מושבתת, לא מתוזמנת להשמדה או לא מושמדת. בדוגמאות הבאות אפשר לראות איך לפענח את הנתונים. זהו אותו קוד פענוח שמשמש בהצפנה ופענוח.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms decrypt \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--ciphertext-file FILE_TO_DECRYPT \
--plaintext-file DECRYPTED_OUTPUT
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח שרוצים להשתמש בו לפענוח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
FILE_TO_DECRYPT: הנתיב לקובץ שרוצים לפענח. -
DECRYPTED_OUTPUT: הנתיב שבו רוצים לשמור את הפלט המפוענח.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Cloud de Confiance ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
הטקסט המפוענח שמוחזר ב-JSON מ-Cloud KMS מקודד ב-Base64.
כדי לפענח נתונים מוצפנים, שולחים בקשת POST, מציינים את הפרויקט המתאים ואת פרטי המפתח, ומזינים את הטקסט המוצפן (שנקרא גם טקסט מוצפן) שרוצים לפענח בשדה ciphertext של גוף הבקשה.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של הפרויקט שמכיל את מחזיק המפתחות ואת המפתח שרוצים להשתמש בהם לפענוח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
KEY_RING: אוסף המפתחות שמכיל את המפתח שרוצים להשתמש בו לפענוח. -
KEY_NAME: השם של המפתח שרוצים להשתמש בו לפענוח. -
ENCRYPTED_DATA: הנתונים המוצפנים שרוצים לפענח.
זוהי דוגמה למטען ייעודי (payload) עם נתונים בקידוד base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
הצפנה מחדש של הנתונים באמצעות גרסת המפתח הראשי החדשה
Cloud KMS משתמש באופן אוטומטי בגרסת המפתח הראשית החדשה כדי להצפין נתונים. בדוגמאות הבאות מוצגות דרכים להצפנת הנתונים. זהו אותו קוד הצפנה שמופיע במאמר הצפנה ופענוח.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms encrypt \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--plaintext-file FILE_TO_ENCRYPT \
--ciphertext-file ENCRYPTED_OUTPUT
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח שרוצים להשתמש בו להצפנה. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
FILE_TO_ENCRYPT: הנתיב לקובץ שרוצים להצפין. -
ENCRYPTED_OUTPUT: הנתיב שבו רוצים לשמור את הפלט המוצפן.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Cloud de Confiance ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כשמשתמשים ב-JSON וב-API בארכיטקטורת REST, צריך לקודד את התוכן ב-Base64 לפני שאפשר להצפין אותו באמצעות Cloud KMS.
כדי להצפין נתונים, שולחים POSTבקשה, מציינים את הפרויקט המתאים ואת פרטי המפתח, ומזינים את הטקסט בקידוד Base64 שרוצים להצפין בשדה plaintext של גוף הבקשה.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של הפרויקט שמכיל את מחזיק המפתחות ואת המפתח שרוצים להשתמש בהם להצפנה. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
KEY_RING: אוסף המפתחות שמכיל את המפתח שרוצים להשתמש בו להצפנה. -
KEY_NAME: השם של המפתח שרוצים להשתמש בו להצפנה. -
PLAINTEXT_TO_ENCRYPT: נתוני הטקסט הפשוט שרוצים להצפין. צריך לקודד את הטקסט הפשוט ב-Base64 לפני שמפעילים את שיטתencrypt.
זוהי דוגמה למטען ייעודי (payload) עם נתונים בקידוד base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
השבתה או תזמון של השמדת גרסת המפתח הקודמת
אם ביצעתם רוטציה למפתח בתגובה לאירוע חשוד, אחרי שהצפנתם מחדש את הנתונים, משביתים את גרסת המפתח הקודמת או מתזמנים את ההשמדה שלה.
השבתה של גרסת מפתח פעילה
אפשר להשבית רק גרסת מפתח שהוגדרה כ'מופעלת'. הפעולה הזו מתבצעת באמצעות השיטה UpdateCryptoKeyVersion.
המסוף
נכנסים לדף Key Management במסוף Cloud de Confiance .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח שאת גרסת המפתח שלו רוצים להשבית.
לוחצים על המפתח שרוצים להשבית את הגרסה שלו.
מסמנים את התיבה לצד גרסאות המפתח שרוצים להשבית.
לוחצים על השבתה בכותרת.
בהודעת האישור, לוחצים על השבתה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys versions disable key-version \
--key key \
--keyring key-ring \
--location location
מחליפים את key-version בגרסת המפתח שרוצים להשבית, את key בשם המפתח, את key-ring בשם אוסף המפתחות שבו נמצא המפתח ואת location במיקום של אוסף המפתחות ב-Cloud KMS.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Cloud de Confiance ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
תזמון השמדה של גרסת מפתח
אפשר לתזמן השמדה רק של גרסאות מפתח שמוגדרות כ'מופעלות' או כ'מושבתות'. הפעולה הזו מתבצעת באמצעות השיטה DestroyCryptoKeyVersion.
המסוף
נכנסים לדף Key Management במסוף Cloud de Confiance .
מסמנים את התיבה לצד גרסת המפתח שרוצים לתזמן להשמדה.
לוחצים על השמדה בכותרת.
בהנחיית האישור, מזינים את שם המפתח ולוחצים על תזמון השמדה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys versions destroy KEY_VERSION \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VERSION: מספר הגרסה של גרסת המפתח שרוצים להשמיד. -
KEY_NAME: השם של המפתח שרוצים להשמיד את הגרסה שלו. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Cloud de Confiance ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
משמידים גרסת מפתח על ידי קריאה לשיטה CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \
--request "POST" \
--header "authorization: Bearer TOKEN"