בדף הזה מוסבר איך משתמשים ב-Cloud Key Management Service (Cloud KMS) כדי לבצע את הפעולות הבאות שקשורות למפתחות סימטריים:
- הצפנה של תוכן טקסטואלי או בינארי (טקסט לא מוצפן) באמצעות מפתח Cloud KMS.
- פענוח טקסט מוצפן שהוצפן באמצעות מפתח של Cloud KMS.
אם רוצים להשתמש במפתח אסימטרי להצפנה, אפשר לעיין במאמר הצפנה ופענוח של נתונים באמצעות מפתח אסימטרי. מידע על הצפנה סימטרית גולמית זמין במאמר בנושא הצפנה סימטרית גולמית.
לפני שמתחילים
מוודאים שלמשתמש שקורא לשיטות ההצפנה והפענוח יש את ההרשאות
cloudkms.cryptoKeyVersions.useToEncryptו-cloudkms.cryptoKeyVersions.useToDecryptבמפתח.דרך אחת לתת למשתמש הרשאה להצפין או לפענח היא להוסיף את המשתמש לתפקידי ה-IAM
roles/cloudkms.cryptoKeyEncrypter,roles/cloudkms.cryptoKeyDecrypterאוroles/cloudkms.cryptoKeyEncrypterDecrypterשל המפתח הזה. התפקידroles/cloudkms.adminלא כולל את שתי ההרשאות האלה. מידע נוסף זמין במאמר הרשאות ותפקידים.
הצפנה
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 ב- Google Cloud ולהתקין את 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=", }
פענוח
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 ב- Google Cloud ולהתקין את 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...", }
המאמרים הבאים
- מידע נוסף על הצפנה סימטרית גולמית
- מידע נוסף על הצפנת מעטפה
- אפשר לנסות את ה-Codelab בנושא הצפנה ופענוח של נתונים באמצעות Cloud KMS.