הגנה על משאבים באמצעות מפתחות Cloud KMS

אתם יכולים להגן על הדיסקים, קובצי ה-snapshot ותמונות המכונה של Compute Engine באמצעות מפתחות של Cloud Key Management Service במקום Google-owned and Google-managed encryption keys. שימוש במפתחות של Cloud KMS מאפשר לכם לשלוט במפתחות ההצפנה ולנהל אותם, ולעמוד בדרישות תאימות או רגולציה ספציפיות. מידע נוסף מופיע במאמר בנושא מפתחות הצפנה בניהול הלקוח.

מפתחות שמנוהלים ב-Cloud KMS נקראים מפתחות הצפנה בניהול הלקוח (CMEK). במאמר הזה מוסבר איך להשתמש במפתחות CMEK שנוצרו באופן ידני כדי ליצור ולהגן על דיסקים, תמונות מכונה, קובצי snapshot מיידיים וקובצי snapshot רגילים ב-Compute Engine.

כדי להשתמש במפתחות CMEK שנוצרו על ידי Cloud KMS Autokey, אפשר לעיין במאמר בנושא יצירת משאבים מוגנים באמצעות Cloud KMS Autokey.

לפני שמתחילים

  • להבין את המושגים דיסקים, תמונות, תמונות מצב רגילות ומכונות וירטואליות (VM).
  • מחליטים אם להריץ את Compute Engine ואת Cloud KMS באותו פרויקט ב- Google Cloud או בפרויקטים שונים. למידע על מזהי פרויקטים ומספרי פרויקטים ב- Google Cloud , קראו את המאמר זיהוי פרויקטים.
  • בפרויקט Google Cloud שבו פועל Cloud KMS:
    1. מפעילים את Cloud KMS API, אם הוא עדיין לא מופעל.

      התפקידים שנדרשים כדי להפעיל ממשקי API

      כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

      להפעלת ה-API

  • כדי ליצור נפח חדש של Hyperdisk Balanced במצב Confidential, צריך לוודא שתרחיש השימוש נתמך על ידי עיון במגבלות הרלוונטיות ובאזורים הנתמכים.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

תפקידים והרשאות נדרשים

סוכן השירות של Compute Engine מופיע בפורמט הבא:

service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

אפשר להשתמש ב-Google Cloud CLI כדי להקצות את התפקיד:

gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

מחליפים את מה שכתוב בשדות הבאים:

  • ‫KMS_PROJECT_ID: המזהה של הפרויקט ב-Google Cloud שמריץ את Cloud KMS (גם אם זה אותו פרויקט שמריץ את Compute Engine)
  • ‫PROJECT_NUMBER: מספר הפרויקט (לא מזהה הפרויקט ב- Google Cloud ) של הפרויקט ב- Google Cloud שבו פועלים המשאבים של Compute Engine.

כדי לוודא שלסוכן השירות של Compute Engine יש את ההרשאות הנדרשות להגנה על משאבים באמצעות מפתחות Cloud KMS, צריך לבקש מהאדמין להקצות לסוכן השירות של Compute Engine את תפקיד ה-IAM הצפנה/פענוח של Cloud KMS CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) בפרויקט.

כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות כדי להגן על משאבים באמצעות מפתחות Cloud KMS. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי להגן על משאבים באמצעות מפתחות Cloud KMS, נדרשות ההרשאות הבאות:

  • כדי לבצע רוטציה של מפתח הצפנה שמגן על דיסק: compute.disks.updateKmsKey
  • כדי לבצע רוטציה של מפתח הצפנה שמגן על קובץ snapshot: compute.snapshots.updateKmsKey

יכול להיות שהאדמין יוכל גם להעניק לסוכן השירות של Compute Engine את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מפרטי הצפנה

המפתחות של Cloud KMS שמשמשים להגנה על הנתונים ב-Compute Engine הם מפתחות AES-256. המפתחות האלה הם מפתחות להצפנת מפתחות הצפנה, והם מצפינים את המפתחות להצפנת נתונים שמצפינים את הנתונים שלכם, ולא את הנתונים עצמם.

הנתונים בדיסקים מוצפנים באמצעות Google-owned and Google-managed encryption keys. במאמר ברירת המחדל להצפנה במנוחה שבמסמכי האבטחה מפורטים המאפיינים של ברירת המחדל להצפנה ב- Google Cloud.

במצב סודי ב-Hyperdisk Balanced וב-Cloud HSM, למפתח להצפנת נתונים (DEK) יש מאפייני אבטחה נוספים עם מובלעות שמגובות בחומרה.

מגבלות

  • אי אפשר להצפין משאבים קיימים באמצעות מפתחות CMEK. אפשר להצפין דיסקים, קובצי אימג' ותמונות מצב באמצעות מפתחות CMEK רק כשיוצרים אותם.

  • כשיוצרים דיסק מ-snapshot מיידי שמוצפן באמצעות CMEK, צריך לציין את המפתח ששימש להצפנת דיסק המקור. לא צריך לציין את המפתח כשעובדים עם משאבים אחרים שמוצפנים באמצעות CMEK, כמו שיבוטים של דיסקים ותמונות מצב רגילות.

  • כשיוצרים תמונת מצב ברמה האזורית (תצוגה מקדימה) מדיסק שמוצפן באמצעות CMEK, צריך ליצור את תמונת המצב עם CMEK אזורי שנמצא באותו מיקום כמו תמונת המצב. כך תוכלו להבטיח בידוד אזורי של התמונה וגם לשפר את המהימנות שלה.

  • אי אפשר להשתמש במפתחות משלכם עם דיסקים מסוג Local SSD, כי המפתחות מנוהלים על ידי התשתית של Google Cloud ונמחקים כשה-VM מסתיים.

  • אפשר להצפין משאבים אזוריים (דיסקים) רק באמצעות מפתח באחד מהמיקומים הבאים של Cloud KMS:

    • מפתח באותו אזור שבו נמצא הדיסק.
    • מפתח במספר אזורים באותו מיקום גיאוגרפי של הדיסק.
    • מפתח במיקום הגלובלי.

    לדוגמה, דיסק בתחום us-west1-a יכול להיות מוצפן באמצעות מפתח במיקום הגלובלי, באזור us-west1 או במספר האזורים us.

    אפשר להצפין משאבים גלובליים (כמו תמונות ו-snapshots) באמצעות מפתחות בכל מיקום. מידע נוסף מופיע במאמר סוגי מיקומים ב-Cloud KMS.

  • אי אפשר לשנות או להסיר את מפתח ההצפנה של קובץ אימג' או של קובץ snapshot מואץ.

  • אי אפשר להסיר מפתח הצפנה של דיסק או של קובץ snapshot, או לשנות את המפתח מ-CMEK ל- Google-owned and managed key. במקום זאת, צרו עותק של הדיסק או קובץ ה-snapshot וציינו סוג הצפנה חדש לעותק.

    מידע נוסף זמין במאמרים הסרת ה-CMEK מדיסק והסרת ה-CMEK מתמונת מצב.

  • אי אפשר לסובב או לשנות את ה-CMEK של נפחי Confidential Hyperdisk אונליין או של נפחי Hyperdisk אונליין שמצורפים לסוגי מכונות שלא נתמכים.

  • אפשר לסובב או לשנות את ה-CMEK רק בסוגי הדיסקים הבאים:

    • כל הנפחים של Persistent Disk
    • דיסקים וקובצי snapshot שלא נוצרו באמצעות ספק Terraform שלGoogle Cloud
    • אמצעי אחסון אופליין ב-Hyperdisk
    • Offline Confidential Hyperdisk volumes
    • נפחי Hyperdisk אונליין שמצורפים לסוגי מכונות מהדור הראשון או מהדור השני
    • נפחי Hyperdisk אונליין שמחוברים לסוגי המכונות הבאים מהדור השלישי או הרביעי:

      • ‫A3,‏ A4,‏ A4X ו-A4X Max
      • C3D
      • C4N
      • ‫H3 ו-H4D
      • ‫M3,‏ M4 ו-M4N
      • Z3 ו-Z4D
      • כל גרסאות ה-TPU
      • כל סוגי המכונות בשרת פיזי
  • כדי לשנות או להחליף את מפתח ה-CMEK של דיסק או של קובץ snapshot, צריך להשתמש ב-CLI של gcloud או ב-REST. אי אפשר להשתמש במסוף Google Cloud .

  • כדי ליצור snapshot באמצעות CMEK ששונה מה-CMEK ששימש להצפנת דיסק המקור, צריך להשתמש ב-CLI של gcloud או ב-REST. אי אפשר להשתמש במסוף Google Cloud .

  • אם אתם משתמשים בספק Terraform של Google Cloud כדי ליצור או לנהל דיסקים ותמונות מצב שמוצפנים באמצעות CMEK, אתם לא יכולים לשנות או להחליף את ה-CMEK. אל תנסו לשנות או להחליף את מפתח ה-CMEK באמצעות ה-CLI של gcloud או באמצעות REST.

  • אי אפשר לשנות את המפתח של אמצעי אחסון ב-Hyperdisk שנוצרו על ידי שכפול דיסק, אלא אם מחקתם את דיסק המקור ואת כל שאר השכפולים של דיסק המקור.

יצירת מפתחות באופן ידני או אוטומטי

אתם יכולים ליצור מפתחות Cloud KMS באופן ידני או להשתמש ב-Cloud KMS Autokey. Autokey מפשט את יצירת המפתחות של Cloud KMS וניהול שלהם באמצעות אוטומציה של הקצאה והקצאת הרשאות. כשמשתמשים ב-Autokey, לא צריך להקצות מראש אוספי מפתחות, מפתחות וחשבונות שירות. במקום זאת, הם נוצרים על פי דרישה כחלק מיצירת המשאבים של Compute Engine. מידע נוסף מופיע בסקירה הכללית על Autokey.

יצירה ידנית של אוסף מפתחות ומפתח

בפרויקט Google Cloud שבו פועל Cloud KMS, יוצרים אוסף מפתחות ומפתח, כמו שמתואר במאמר יצירת אוספי מפתחות ומפתחות.

הצפנת דיסק אחסון מתמיד (persistent disk) חדש באמצעות CMEK

כדי להצפין Persistent Disk חדש, צריך לספק מפתח במהלך יצירת המכונה הווירטואלית או הדיסק.

המסוף

  1. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

  2. לוחצים על Create disk (יצירת דיסק) ומזינים את המאפיינים של הדיסק החדש.
  3. בקטע Encryption, בוחרים באפשרות Customer-managed key.
  4. בתפריט הנפתח, בוחרים את המפתח של Cloud KMS שבו רוצים להשתמש כדי להצפין את הדיסק.
  5. לוחצים על Create כדי ליצור את הדיסק.

gcloud

יוצרים דיסק מוצפן באמצעות הפקודה gcloud compute disks create, ומציינים את המפתח באמצעות הדגל --kms-key.

gcloud compute disks create DISK_NAME \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_NAME: השם של הדיסק החדש
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו מפתח Cloud KMS
  • ‫REGION: האזור שבו נמצא המפתח
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: השם של המפתח ששימש להצפנת הדיסק

REST

יוצרים בקשת POST אל ה-method‏ instances.insert. כדי להצפין דיסק, משתמשים במאפיין diskEncryptionKey עם המאפיין kmsKeyName. לדוגמה, אפשר להצפין דיסק חדש במהלך יצירת ה-VM באמצעות מפתח Cloud KMS, באמצעות הפקודה הבאה:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE"
  },
  "boot": true
 }
],
...
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שבו פועל Compute Engine
  • ‫ZONE: האזור שבו יוצרים את המכונה הווירטואלית
  • ‫MACHINE_TYPE: סוג המכונה, לדוגמה c3-standard-4
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו המפתח של Cloud KMS
  • ‫REGION: האזור שבו נמצא הדיסק
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: השם של המפתח ששימש להצפנת הדיסק
  • ‫SOURCE_IMAGE: קובץ האימג' שבו משתמשים כשיוצרים את המכונה הווירטואלית, לדוגמה: projects/debian-cloud/global/images/debian-13-trixie-v20260902

באופן דומה, אפשר להשתמש ב-method ‏disks.insert כדי ליצור Persistent Disk חדש ובלתי תלוי, ולהצפין אותו באמצעות מפתח Cloud KMS:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שבו פועל Compute Engine
  • ‫ZONE: האזור שבו יוצרים את הדיסק
  • ‫SOURCE_IMAGE: התמונה לשימוש כשיוצרים את הדיסק. לדוגמה: projects/debian-cloud/global/images/debian-13-trixie-v20260902
  • ‫DISK_NAME: שם לדיסק החדש
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו מפתח Cloud KMS
  • ‫REGION: האזור שבו נמצא הדיסק
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: השם של המפתח ששימש להצפנת הדיסק
  • ‫DISK_TYPE: סוג הדיסק שרוצים ליצור

יצירת דיסק Hyperdisk Balanced במצב סודי

אפשר ליצור דיסק חדש מסוג Hyperdisk Balanced במצב Confidential באמצעות מסוףGoogle Cloud ,‏ Google Cloud CLI או REST. כדי ליצור דיסק שלא נמצא במצב סודי, פועלים לפי השלבים במאמר בנושא יצירת דיסק אחסון מתמיד (persistent disk) מקובץ snapshot שמוצפן באמצעות CMEK.

המסוף

  1. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

  2. לוחצים על Create disk ומזינים את המאפיינים של הדיסק החדש.
  3. בקטע Disk settings, בוחרים באפשרות Hyperdisk Balanced בשדה Disk type.
  4. זה שינוי אופציונלי. משנים את הגדרות ברירת המחדל של גודל הדיסק, IOPS מוקצה וקצב העברת נתונים מוקצה.
  5. בקטע Encryption, בוחרים באפשרות Cloud KMS key.
  6. ברשימת המפתחות, בוחרים את מפתח Cloud HSM שבו רוצים להשתמש כדי להצפין את הדיסק.
  7. בקטע Confidential Computing, בוחרים באפשרות Enable Confidential Computing services.
  8. לוחצים על Create כדי ליצור את הדיסק.

gcloud

כדי להצפין דיסק חדש באמצעות מצב סודי ל-Hyperdisk Balanced, משתמשים בפקודה gcloud compute disks create. מפעילים את המצב הסודי באמצעות הדגל --confidential-compute ומציינים את המפתח באמצעות הדגל --kms-key.

gcloud compute disks create DISK_NAME \
  --type=hyperdisk-balanced \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \
  --confidential-compute

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_NAME: השם של הדיסק החדש
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו המפתח של Cloud HSM
  • ‫REGION: האזור שבו נמצא המפתח
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: השם של המפתח ששימש להצפנת הדיסק

REST

יוצרים בקשת POST ל-method‏ instances.insert. כדי להצפין דיסק באמצעות מצב סודי ל-Hyperdisk Balanced, משתמשים במאפיין diskEncryptionKey עם המאפיין kmsKeyName ומגדירים את הדגל enableConfidentialCompute. לדוגמה, אפשר להצפין דיסק חדש במהלך יצירת ה-VM באמצעות מפתח Cloud HSM, באמצעות הפקודה הבאה:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "DISK_TYPE",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE",
   "enableConfidentialCompute": true
  },
  "boot": true
 }
],
"networkInterfaces": [
  {
   "network": "global/networks/default"
  }
]
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_TYPE: סוג הדיסק שרוצים ליצור, לדוגמה hyperdisk-balanced
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud שבו פועל Compute Engine
  • ‫ZONE: האזור שבו יוצרים את המכונה הווירטואלית
  • ‫MACHINE_TYPE: סוג המכונה, לדוגמה n2d-standard-4
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו המפתח של Cloud HSM
  • ‫REGION: האזור שבו נמצא הדיסק
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: השם של המפתח ששימש להצפנת הדיסק
  • ‫SOURCE_IMAGE: קובץ האימג' שתומך ב-Confidential VM, שבו משתמשים כשיוצרים את ה-VM. לדוגמה: projects/debian-cloud/global/images/debian-13-trixie-v20260902

באופן דומה, אפשר להשתמש ב-method‏ disks.insert כדי ליצור מצב סודי חדש ל-Hyperdisk Balanced:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
 "enableConfidentialCompute": true
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: המזהה שלGoogle Cloud הפרויקט שבו פועל Compute Engine
  • ‫ZONE: האזור שבו יוצרים את הדיסק
  • ‫SOURCE_IMAGE: התמונה שתומכת ב-Confidential VM כשיוצרים את הדיסק, לדוגמה: projects/debian-cloud/global/images/debian-13-trixie-v20260902
  • ‫DISK_NAME: שם לדיסק החדש
  • ‫KMS_PROJECT_ID: הפרויקט שבבעלותו המפתח של Cloud HSM
  • ‫REGION: האזור שבו נמצא הדיסק
  • ‫KEY_RING: השם של אוסף המפתחות שכולל את המפתח
  • ‫KEY: שם המפתח ששימש להצפנת הדיסק
  • ‫DISK_TYPE: סוג הדיסק שרוצים ליצור, לדוגמה, hyperdisk-balanced.

יצירת קובץ Snapshot שמוצפן באמצעות CMEK

אפשר ליצור תמונת מצב שמוגנת באמצעות CMEK של כל דיסק, אלא אם דיסק המקור מוגן באמצעות מפתח הצפנה באספקת הלקוח (CSEK). אם דיסק המקור מוצפן באמצעות CMEK, אפשר להצפין את התמונה באמצעות אותו CMEK או באמצעות CMEK אחר.

אי אפשר להמיר קובץ snapshot שמוצפן באמצעות CMEK לשימוש ב-Google-owned and managed key , אלא אם יוצרים דיסק חדש ואז יוצרים קובץ snapshot של הדיסק הזה.

תמונות מצב של דיסקים מוצפנים באמצעות CMEK הן מצטברות.

המסוף

  1. נכנסים לדף Snapshots במסוף Google Cloud .

    כניסה לדף Snapshots

  2. לוחצים על Create snapshot.
  3. בקטע Source disk, בוחרים את דיסק המקור של קובץ ה-snapshot. התמונה מוצפנת באופן אוטומטי באמצעות אותו מפתח שמשמש את דיסק המקור.

gcloud

כדי ליצור קובץ snapshot שמוצפן באמצעות CMEK, מציינים את המפתח של Cloud KMS באמצעות הדגל --kms-key. אם דיסק המקור כבר מוצפן באמצעות CMEK, אתם יכולים להשתמש באותו מפתח או לציין מפתח אחר.

אם דיסק המקור מוצפן באמצעות CMEK ולא מציינים את הדגל --kms-key, המערכת מצפינה את קובץ ה-snapshot באופן אוטומטי באמצעות המפתח שמשמש את דיסק המקור.

אפשר ליצור את קובץ ה-snapshot במיקום האחסון שמוגדר במדיניות של הגדרות ה-snapshot, או לבחור מיקום אחסון חלופי. מידע נוסף זמין במאמר בחירת מיקום לאחסון תמונת מצב.

  • כדי ליצור קובץ snapshot במיקום ברירת המחדל שהוגדר מראש או בהתאמה אישית בהגדרות של קובץ ה-snapshot, משתמשים בפקודה gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    
  • לחלופין, כדי לבטל את הגדרות הצילום מהמצלמה וליצור צילום מהמצלמה במיקום אחסון מותאם אישית, צריך לכלול את הדגל --storage-location כדי לציין איפה לאחסן את הצילום מהמצלמה.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION \
        --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    
  • (תצוגה מקדימה) כדי ליצור קובץ snapshot ברמת האזור באזור מותר, צריך לכלול את הדגל --region כדי לציין איפה ליצור את קובץ ה-snapshot.

      gcloud beta compute snapshots create SNAPSHOT_NAME \
          --region=SNAPSHOT_SCOPE_REGION \
          --source-disk=SOURCE_DISK_NAME \
          --source-disk-zone=SOURCE_ZONE \
          --snapshot-type=SNAPSHOT_TYPE \
          --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SNAPSHOT_NAME: שם לקובץ ה-snapshot.
  • ‫SOURCE_ZONE: האזור של דיסק המקור.
  • ‫SOURCE_DISK_NAME: השם של אמצעי האחסון בדיסק שממנו רוצים ליצור קובץ snapshot.
  • ‫KMS_PROJECT_ID: הפרויקט שמכיל את מפתח ההצפנה שמאוחסן ב-Cloud Key Management Service.
  • ‫KEY_REGION: האזור שבו נמצא המפתח של Cloud KMS.
  • ‫KEY_RING: השם של אוסף המפתחות שמכיל את מפתח Cloud KMS.
  • ‫SNAPSHOT_KEY: השם של מפתח Cloud KMS שמשמש להצפנת קובץ ה-snapshot.
  • ‫SNAPSHOT_TYPE: סוג ה-snapshot, ‏STANDARD או ARCHIVE. אם לא מציינים סוג של snapshot, נוצר STANDARD snapshot.
  • ‫STORAGE_LOCATION: אופציונלי: לתמונות מצב בהיקף גלובלי, האזור במספר אזורים של Cloud Storage או האזור של Cloud Storage שבו רוצים לאחסן את תמונת המצב. אפשר לציין רק מיקום אחסון אחד.

    משתמשים בפרמטר --storage-location רק כשרוצים לשנות את מיקום האחסון שהוגדר כברירת מחדל (מוגדר מראש או בהתאמה אישית) בהגדרות של קובץ ה-Snapshot.

  • ‫SNAPSHOT_SCOPE_REGION: אופציונלי: עבור קובצי snapshot בהיקף אזורי, האזור שאליו מוגדר ההיקף של קובץ ה-snapshot. אם כוללים את הפרמטר הזה, אי אפשר להשתמש בפרמטר --storage-location. הערך של STORAGE_LOCATION מוגדר אוטומטית ל-SNAPSHOT_SCOPE_REGION.

REST

כדי ליצור snapshot שמוצפן באמצעות CMEK, מציינים את המאפיין snapshotEncryptionKey בגוף הבקשה. אם דיסק המקור כבר מוצפן באמצעות CMEK, אתם יכולים להשתמש באותו מפתח או לציין מפתח אחר.

אפשר ליצור את קובץ ה-snapshot במיקום האחסון שמוגדר במדיניות של הגדרות ה-snapshot, או לבחור מיקום אחסון חלופי. מידע נוסף זמין במאמר בחירת מיקום האחסון של קובץ snapshot.

  • כדי ליצור קובץ snapshot במיקום ברירת המחדל שהוגדר מראש או בהתאמה אישית בהגדרות של קובצי ה-snapshot, שולחים בקשת POST אל ה-method‏ snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • לחלופין, כדי לשנות את הגדרות התמונה ולשמור אותה במיקום אחסון מותאם אישית, שולחים בקשת POST אל snapshots.insert method וכוללים את המאפיין storageLocations בבקשה:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE",
        "storageLocations": [
            "STORAGE_LOCATION"
        ],
    }
    
  • (גרסת טרום-השקה (Preview)) כדי ליצור קובץ snapshot ברמת האזור באזור מותר, שולחים בקשת POST ל-method‏ snapshots.insert ומגדירים את אזור היצירה:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "snapshotEncryptionKey": {
        "kmsKeyName":"projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY",
      },
    }
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DESTINATION_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את התמונה.
  • ‫SNAPSHOT_NAME: שם לתמונת המצב.
  • ‫SOURCE_PROJECT_ID: מזהה הפרויקט של דיסק המקור.
  • ‫SOURCE_ZONE: האזור של דיסק המקור.
  • ‫SOURCE_DISK_NAME: שם הדיסק שממנו רוצים ליצור קובץ snapshot.
  • ‫KMS_PROJECT_ID: הפרויקט שמכיל את מפתח ההצפנה ששמור ב-Cloud Key Management Service.
  • ‫KEY_REGION: האזור שבו נמצא המפתח של Cloud KMS.
  • ‫KEY_RING: השם של אוסף המפתחות שמכיל את מפתח Cloud KMS.
  • ‫SNAPSHOT_KEY: השם של מפתח Cloud KMS שמשמש להצפנת קובץ ה-snapshot.
  • ‫SNAPSHOT_TYPE: סוג ה-snapshot, ‏STANDARD או ARCHIVE. אם לא מציינים סוג של snapshot, נוצר STANDARD snapshot.
  • ‫STORAGE_LOCATION: אופציונלי: לתמונות מצב בהיקף גלובלי, האזור במספר אזורים של Cloud Storage או האזור של Cloud Storage שבו רוצים לאחסן את תמונת המצב. אפשר לציין רק מיקום אחסון אחד.

    משתמשים בפרמטר storageLocations רק כשרוצים לשנות את מיקום האחסון שמוגדר כברירת מחדל בהגדרות של התמונה, בין אם הוא מוגדר מראש או מותאם אישית.

  • ‫SNAPSHOT_SCOPE_REGION: אופציונלי: לתמונות מצב ברמת האזור, האזור שתמונת המצב מוגדרת לו. אם כוללים את הפרמטר הזה, אי אפשר להשתמש בפרמטר storageLocations. הערך של STORAGE_LOCATION מוגדר אוטומטית ל-SNAPSHOT_SCOPE_REGION.

הצפנת תמונה מיובאת באמצעות CMEK

אפשר להצפין תמונה חדשה כשמייבאים תמונה בהתאמה אישית ל-Compute Engine. לפני שמייבאים קובץ תמונה, צריך ליצור ולדחוס קובץ אימג' של דיסק ולהעלות את הקובץ הדחוס ל-Cloud Storage.

המסוף

  1. נכנסים לדף Images במסוף Google Cloud .

    כניסה לדף Images

  2. לוחצים על יצירת תמונה.
  3. בקטע Source disk (דיסק מקור), בוחרים את הדיסק שרוצים ליצור ממנו תמונה.
  4. בקטע הצפנה, בוחרים באפשרות מפתח בניהול הלקוח.
  5. בתפריט הנפתח, בוחרים את מפתח Cloud KMS שבו רוצים להשתמש להצפנת התמונה.
  6. ממשיכים בתהליך יצירת התמונה.

gcloud

כדי לייבא ולהצפין תמונה, משתמשים בפקודה gcloud compute images create. כדי להשתמש בהצפנה בניהול הלקוח, צריך לציין את מפתח Cloud KMS לתמונה.

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK  \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

מחליפים את מה שכתוב בשדות הבאים:

  • ‫IMAGE_NAME: השם של קובץ האימג' שאתם יוצרים
  • ‫SOURCE_DISK: שם הדיסק שרוצים ליצור לו קובץ snapshot
  • ‫KMS_PROJECT_ID: הפרויקט שמכיל את מפתח Cloud KMS
  • ‫REGION: האזור שבו נמצא מפתח Cloud KMS
  • ‫KEY_RING: אוסף המפתחות שמכיל את מפתח Cloud KMS
  • ‫KEY: שם המפתח שבו משתמשים כדי להצפין את הדיסק החדש

REST

כדי להצפין תמונה מיובאת, יוצרים בקשת POST ל-method‏ images.insert. מציינים את ה-URI לקובץ הדחוס, מוסיפים את המאפיין imageEncryptionKey לבקשה ליצירת התמונה ומציינים את המפתח להצפנת התמונה במאפיין kmsKeyName.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
 "rawDisk": {
  "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
  },
 "name": "IMAGE_NAME",
 "sourceType": "RAW",
 "imageEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
   }
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שבו רוצים ליצור את התמונה המוצפנת
  • ‫IMAGE_NAME: השם של קובץ האימג' שאתם יוצרים
  • ‫KMS_PROJECT_ID: הפרויקט שמכיל את המפתח של Cloud KMS
  • ‫REGION: האזור שבו נמצא מפתח Cloud KMS
  • ‫KEY_RING: אוסף המפתחות שמכיל את מפתח Cloud KMS
  • ‫KEY: שם המפתח שבו השתמשתם כדי להצפין את דיסק המקור

יצירת דיסק מ-snapshot שמוצפן באמצעות CMEK

כדי ליצור דיסק חדש מ-snapshot מוצפן:

המסוף

  1. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

  2. לוחצים על Create disk ומזינים את המאפיינים של הדיסק החדש.
  3. בשדה Source type, בוחרים את קובץ ה-snapshot או את קובץ האימג' שבו רוצים להשתמש.
  4. אופציונלי: אם רוצים לציין מפתח הצפנה חדש, בשדה Encryption מציינים את סוג מפתח ההצפנה שבו רוצים להשתמש, ואז מספקים את פרטי מפתח ההצפנה.

    אם רוצים להסיר את מפתח ההצפנה בניהול הלקוח או באספקת הלקוח, בשדה Encryption משתמשים בערך ברירת המחדל Google-managed encryption key.

  5. ממשיכים בתהליך יצירת הדיסק.

gcloud

  • כדי ליצור דיסק חדש מ-snapshot מוצפן ברמה הגלובלית, משתמשים בפקודה gcloud compute disks create.

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    
  • (תצוגה מקדימה) כדי ליצור דיסק חדש מ-snapshot מוצפן ברמת האזור, משתמשים בפקודה gcloud compute disks create ומציינים את האזור של ה-snapshot המקורי.

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --source-snapshot-region=SOURCE_REGION \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_NAME: השם של הדיסק החדש
  • ‫SNAPSHOT_NAME: השם של קובץ ה-snapshot המוצפן

    כדי להשתמש בתמונה במקום בתמונת מצב, מחליפים את --source-snapshot SNAPSHOT_NAME ב---image IMAGE_NAME.

  • ‫KMS_PROJECT_ID: אופציונלי: הפרויקט שמכיל את המפתח של Cloud KMS

  • ‫REGION: אופציונלי: האזור שבו נמצא המפתח של Cloud KMS

  • ‫SOURCE_REGION: האזור שבו נמצא קובץ ה-snapshot של המקור

  • ‫ZONE: האזור שבו הדיסק החדש ימוקם

  • ‫KEY_RING: אופציונלי: אוסף המפתחות שמכיל את המפתח של Cloud KMS

  • ‫KEY: אופציונלי: השם של מפתח Cloud KMS שבו רוצים להשתמש כדי להצפין את הדיסק החדש

    כדי להצפין את הדיסק החדש, אתם יכולים לבצע אחת מהפעולות הבאות:

    • כדי לציין מפתח הצפנה חדש בניהול הלקוח, משתמשים בדגל --kms-key.
    • כדי להשתמש בברירת המחדל Google-owned and Google-managed encryption key, לא כוללים את הדגל --kms-key.

REST

  • כדי ליצור דיסק חדש מ-snapshot מוצפן ברמה הגלובלית, שולחים בקשת POST אל ה-method‏ compute.disks.insert. משתמשים במאפיין sourceSnapshot כדי לציין את תמונת המצב.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    
  • (תצוגה מקדימה) כדי ליצור דיסק חדש מ-snapshot מוצפן ברמה האזורית, יוצרים בקשת POST ל-method‏ compute.disks.insert. משתמשים במאפיין sourceSnapshot כדי לציין את התמונה.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/regions/SOURCE_REGION/snapshots/SNAPSHOT_NAME",
      "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
      "zone": "projects/PROJECT_ID/zones/ZONE"
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שבו רוצים ליצור את הדיסק החדש
  • ‫ZONE: האזור שבו יוצרים את הדיסק החדש
  • ‫SOURCE_REGION: האזור שמוגדר עבור קובץ ה-snapshot של המקור
  • ‫DISK_NAME: השם של הדיסק החדש
  • ‫DISK_TYPE: כתובת ה-URL המלאה או החלקית של הסוג של הדיסק, לדוגמה: PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  • ‫SNAPSHOT_PROJECT_ID: הפרויקט שמכיל את התמונה
  • ‫SNAPSHOT_NAME: השם של ה-snapshot המוצפן

    כדי להשתמש בתמונה במקום בתמונת מצב, מחליפים את sourceSnapshot ב-sourceImage.

  • ‫KMS_PROJECT_ID (אופציונלי): הפרויקט שמכיל את מפתח Cloud KMS

  • ‫REGION: אופציונלי: האזור שבו נמצא המפתח של Cloud KMS

  • ‫KEY_RING (לא חובה): אוסף המפתחות שמכיל את מפתח Cloud KMS

  • ‫KEY: אופציונלי: השם של מפתח Cloud KMS שבו רוצים להשתמש כדי להצפין את הדיסק החדש

    אם כוללים את diskEncryptionKey, הדיסק מוצפן באמצעות מפתח Cloud KMS שצוין. אם לא כוללים את diskEncryptionKey, הדיסק מוצפן באמצעות Google-owned and Google-managed encryption key.

צירוף דיסק אתחול שמוצפן באמצעות CMEK ל-VM חדש

המסוף

  1. נכנסים לדף Create an instance במסוף Google Cloud .

    כניסה לדף Create an instance

  2. מציינים את פרטי מכונת ה-VM, ובקטע Boot disk (דיסק אתחול) לוחצים על Change (שינוי). לאחר מכן, מבצעים את הפעולות הבאות:

    1. לוחצים על Existing disks.
    2. ברשימה Disk בוחרים דיסק קיים לצירוף למכונה הווירטואלית.
    3. לוחצים על בחירה.
  3. ממשיכים בתהליך היצירה של המכונה הווירטואלית.

gcloud

כדי לצרף דיסק מוצפן כשיוצרים מכונה וירטואלית חדשה, משתמשים בפקודה gcloud compute instances create. משתמשים בדגל --disk כדי לציין את דיסק האתחול המוצפן, כמו בדוגמה הבאה:

gcloud compute instances create VM_NAME \
  ...
  --disk name=DISK_NAME,boot=yes

מחליפים את מה שכתוב בשדות הבאים:

  • ‫VM_NAME: השם של המכונה הווירטואלית שאתם יוצרים
  • ‫DISK_NAME: השם של הדיסק המוצפן

REST

יוצרים בקשת POST ל-method‏ compute.instances.insert. משתמשים במאפיין disks כדי לציין את דיסק האתחול המוצפן, כמו בדוגמה הבאה:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "disks": [
    {
      "deviceName": "DISK_ALIAS",
      "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
  ]
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שבו רוצים ליצור את המכונה הווירטואלית החדשה
  • ‫ZONE: האזור שבו יוצרים את המכונה הווירטואלית החדשה
  • ‫DISK_ALIAS: שם מכשיר ייחודי שישמש ככינוי לדיסק בספרייה /dev/disk/by-id/google-* של מכונה וירטואלית שמריצה מערכת הפעלה של Linux. אפשר להשתמש בשם הזה כדי להפנות לדיסק לפעולות כמו טעינה או שינוי גודל מתוך המכונה. אם לא מציינים שם מכשיר, המכונה הווירטואלית בוחרת שם מכשיר כברירת מחדל כדי להחיל על הדיסק הזה, בפורמט persistent-disk-x, כאשר x הוא מספר שהוקצה על ידי Compute Engine. השדה הזה רלוונטי רק לנפחי דיסק מתמשך.
  • ‫DISK_NAME: השם של הדיסק המוצפן

סיבוב מפתח ה-CMEK של דיסק או תמונת מצב

כדי לצמצם את ההשלכות האפשריות של פריצה למפתח, מומלץ לבצע רוטציה של מפתחות ה-CMEK באופן קבוע. מידע נוסף על רוטציית מפתחות CMEK זמין במאמר רוטציית מפתחות.

כדי להחליף את מפתח ה-CMEK שמגן על דיסק או על קובץ snapshot, אתם יכולים להשתמש ב-CLI של gcloud או ב-REST. אי אפשר להשתמש במסוףGoogle Cloud או בספק Terraform של Google Cloud.

gcloud

כדי להחליף את מפתח Cloud KMS שמשמש להצפנת דיסק, קובץ snapshot של ארכיון או קובץ snapshot רגיל לגרסת מפתח חדשה, משתמשים בפקודה gcloud compute disks update-kms-key או בפקודה gcloud compute snapshots update-kms-key.

  • כדי לבצע רוטציה של גרסת המפתח שמצפינה דיסק:

    gcloud compute disks update-kms-key DISK_NAME \
    --zone ZONE
    
  • כדי לבצע רוטציה של גרסת המפתח שמצפינה תמונת מצב רגילה:

    gcloud compute snapshots update-kms-key SNAPSHOT_NAME
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_NAME: השם של הדיסק המוצפן
  • ‫ZONE: האזור שבו נמצא הדיסק המוצפן
  • ‫SNAPSHOT_NAME: השם של קובץ ה-snapshot המוצפן

REST

כדי להחליף את המפתח של Cloud KMS שמשמש להצפנת דיסק, קובץ snapshot של ארכיון או קובץ snapshot רגיל לגרסת מפתח חדשה, יוצרים בקשת PATCH ל-method‏ compute.disks.updateKmsKey או ל-method‏ compute.snapshots.updateKmsKey.

  • כדי לבצע רוטציה של גרסת המפתח שמצפינה דיסק אזורי:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey
    
  • כדי לבצע רוטציה של גרסת המפתח שמצפינה דיסק אזורי:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey
    
  • כדי לבצע רוטציה של גרסת המפתח שמצפינה תמונת מצב רגילה ברמה הגלובלית:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey
    
  • (תצוגה מקדימה) כדי להחליף את גרסת המפתח שמצפינה תמונת מצב רגילה ברמת האזור:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שבו נמצא הדיסק או התמונה המצולמת המוצפנים
  • ‫ZONE: האזור שבו נמצא הדיסק המוצפן
  • ‫REGION: האזור שבו נמצא הדיסק האזורי או קובץ ה-snapshot ברמה האזורית
  • ‫DISK_NAME: השם של הדיסק המוצפן
  • ‫SNAPSHOT_NAME: השם של קובץ ה-snapshot המוצפן
  • ‫REGION: האזור שבו נמצא הדיסק האזורי או קובץ ה-snapshot ברמה האזורית

התשובה תכלול פריט name עם ערך פעולה שמייצג את רוטציית המפתחות:

  "name": "operation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY"
  

אחר כך אפשר לשלוח שאילתה כדי לבדוק את סטטוס הפעולה ולקבוע אם הקריאה ל-API הצליחה. לשם כך שולחים בקשת GET:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_NAME
  

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שבו נמצא הדיסק או התמונה המצולמת המוצפנים
  • ‫ZONE: האזור שבו נמצא הדיסק המוצפן
  • ‫OPERATION_NAME: השם של פעולת הרוטציה של ה-CMEK, בפורמט operation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY

התשובה תכלול ערך progress שמייצג את סטטוס רוטציית המפתחות. כשהערך של progress הוא 100, הפעולה בוצעה בהצלחה.

רוטציה של מפתחות לא משביתה או מוחקת גרסאות קודמות של המפתחות. מידע נוסף זמין במאמר בנושא אחרי שמסובבים את המפתחות.

שינוי ה-CMEK של דיסק או של קובץ snapshot

אתם יכולים לשנות את ההצפנה של דיסק, של קובץ snapshot של ארכיון או של קובץ snapshot רגיל למפתח CMEK אחר (לדוגמה, במהלך העברת פרויקט או כדי לעמוד בדרישות תאימות חדשות) בלי זמן השבתה.

כשמשנים את ה-CMEK, המפתח להצפנת נתונים (DEK) של המשאב מוצפן מחדש באמצעות המפתח החדש. התהליך הזה לא משנה את מפתח ה-DEK ולא משפיע על הביצועים של עומסי עבודה פעילים.

כדי לשנות את ה-CMEK שמגן על דיסק או על קובץ snapshot, אתם יכולים להשתמש ב-CLI של gcloud או ב-REST. אי אפשר להשתמש במסוףGoogle Cloud או ב-Terraform.

gcloud

כדי לשנות את מפתח ה-Cloud KMS של דיסק או של תמונת מצב רגילה, משתמשים בדגל --kms-key עם הפקודה gcloud compute disks update-kms-key או עם הפקודה gcloud compute snapshots update-kms-key.

  • כדי לשנות את המפתח של דיסק אזורי:

    gcloud compute disks update-kms-key DISK_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --zone=ZONE
    
  • כדי לשנות את המפתח של דיסק אזורי:

    gcloud compute disks update-kms-key DISK_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --region=REGION
    
  • כדי לשנות את המפתח של קובץ snapshot גלובלי:

    gcloud compute snapshots update-kms-key SNAPSHOT_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME
    
  • כדי לשנות את המפתח של קובץ Snapshot ברמה האזורית:

    gcloud beta compute snapshots update-kms-key SNAPSHOT_NAME \
    --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \
    --regions=REGION
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DISK_NAME: השם של הדיסק המוצפן.
  • ‫NEW_KMS_KEY: מזהה המשאב המלא של ה-CMEK החדש.
  • ‫ZONE: האזור שבו נמצא הדיסק.
  • ‫REGION: האזור שבו נמצא הדיסק או קובץ ה-snapshot.
  • ‫SNAPSHOT_NAME: השם של קובץ ה-snapshot המוצפן.

REST

כדי לשנות את המפתח, שולחים בקשת POST ל-method‏ compute.disks.updateKmsKey או ל-method‏ compute.snapshots.updateKmsKey וכוללים את kmsKeyName בגוף הבקשה.

  • כדי לשנות את המפתח של דיסק אזורי:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • כדי לשנות את המפתח של דיסק אזורי:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • כדי לשנות את המפתח של קובץ snapshot גלובלי:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    
  • כדי לשנות את המפתח של קובץ Snapshot ברמה האזורית:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey
    
    {
    "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME"
    }
    

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: הפרויקט שמכיל את הדיסק או את קובץ ה-snapshot.
  • ‫ZONE: האזור שבו נמצא הדיסק.
  • ‫REGION: האזור שבו נמצא הדיסק או קובץ ה-snapshot.
  • ‫DISK_NAME: שם הדיסק.
  • ‫NEW_KEY_NAME: השם של מפתח ה-CMEK החדש.
  • ‫SNAPSHOT_NAME: השם של קובץ ה-snapshot המוצפן.

הסרת ה-CMEK מדיסק

אי אפשר להסיר מפתח CMEK מדיסק או לשנות את סוג מפתח ההצפנה. אפשר לבצע אחת מהפעולות הבאות:

כדי ליצור דיסק שמשתמש ב- Google-owned and managed key מדיסק שמוצפן באמצעות CMEK:

  1. יוצרים קובץ snapshot של הדיסק המוצפן.
  2. משתמשים ב-snapshot המוצפן החדש כדי ליצור דיסק חדש.

אחרי שיוצרים את הדיסק החדש, הוא מוצפן Google Cloud כברירת מחדל כדי להגן על התוכן שלו. אתם יכולים להצפין תמונות מצב נוספות שנוצרו מהדיסק הזה באמצעות CMEK או להשתמש בהצפנת ברירת המחדל.

הסרת ה-CMEK מתמונת מצב

אי אפשר להסיר CMEK מתמונת מצב או לשנות את סוג מפתח ההצפנה. אתם יכולים לשנות את קובץ ה-snapshot כדי להשתמש ב-CMEK אחר, או ליצור עותק של קובץ ה-snapshot ולהצפין את העותק באמצעות Google-owned and managed key.

כדי ליצור snapshot שמשתמש ב- Google-owned and managed key מ-snapshot מוצפן באמצעות CMEK, פועלים לפי השלבים הבאים:

  1. יוצרים דיסק חדש מקובץ ה-snapshot. כשיוצרים את הדיסק החדש, בוחרים את סוג ההצפנה הרצוי.

  2. יוצרים קובץ snapshot של הדיסק החדש:

השבתה או השמדה של CMEK

אם אתם לא צריכים יותר את מפתח ה-CMEK או רוצים למנוע את השימוש בו, אתם יכולים להשבית או להשמיד אותו. מחיקה, השבתה או הסרה של הרשאות IAM במפתח נקראת גם ביטול המפתח.

ההשפעה של ביטול המפתחות על משאבים מוצפנים

כשמבטלים הרשאה למפתח הצפנה, המשאבים שהמפתח מגן עליהם מושפעים באופן הבא:

  • אי אפשר לאתחל מכונה וירטואלית אם לאחד מהדיסקים המצורפים שלה יש מפתחות שבוטלו.
  • אם דיסק שמשתמש במפתח מחובר למכונה וירטואלית פועלת, והפעלתם את האפשרות כיבוי של המכונה הווירטואלית כשמבטלים את המפתח, המכונה הווירטואלית תכובה על ידי Compute Engine תוך 7 שעות.
  • אי אפשר לצרף דיסק עם מפתח שבוטל למכונה וירטואלית או ליצור snapshot מהדיסק.
  • אי אפשר להשתמש בתמונות או בתמונות מצב שמוצפנות באמצעות מפתחות שבוטלו כדי ליצור דיסקים.

אם משביתים את המפתח, אפשר להפעיל אותו מחדש כדי לבטל את ההשפעות של ההשבתה. אם תשמידו את המפתח, לא תוכלו לבטל את ההשפעות הקודמות.

הגדרת כיבוי של מכונה וירטואלית בביטול של מפתח Cloud KMS

אתם יכולים להגדיר את ה-VM כך שייכבה באופן אוטומטי כשאתם מבטלים את מפתח Cloud KMS שעוזר להגן על דיסק שמחובר ל-VM. כדי לבטל מפתח, אפשר להשבית או למחוק אותו. כשההגדרה הזו מופעלת, המכונה הווירטואלית נכבית תוך 7 שעות מרגע ביטול המפתח.

אם מפעילים את המפתח שוב, אפשר להפעיל מחדש את המכונה הווירטואלית עם הדיסק המצורף שהמפתח עוזר להגן עליו. המכונה הווירטואלית לא מופעלת מחדש באופן אוטומטי אחרי שמפעילים את המפתח.

המסוף

כדי להגדיר מכונה וירטואלית (VM) כך שהיא תושבת כשמבטלים את מפתח Cloud KMS, מבצעים את הפעולות הבאות:

  1. מתחילים ליצור מכונה וירטואלית שכוללת דיסק שמוגן באמצעות מפתח Cloud KMS.
  2. פותחים את התפריט Networking, disks, security, management, sole-tenancy.
  3. מרחיבים את הקטע Management.
  4. בקטע Customer Managed Encryption Key (CMEK) revocation policy (מדיניות ביטול מפתח הצפנה בניהול הלקוח), בוחרים באפשרות Shut down (השבתה).

gcloud

משתמשים בפקודה gcloud compute instances create כדי ליצור מכונה וירטואלית, וכוללים את --key-revocation-action-type=stop.

gcloud compute instances create VM_NAME \
  --image IMAGE \
  --key-revocation-action-type=stop

REST

משתמשים ב-method‏ instances.insert כדי ליצור מכונה וירטואלית, ומגדירים את המאפיין "keyRevocationActionType" לערך "STOP". בדוגמה הבאה, ה-VM נוצר מתמונה ציבורית.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "keyRevocationActionType": "STOP"
}

לחלופין, אפשר להגדיר תבנית של הגדרות מכונה כדי ליצור מכונות וירטואליות שמושבתות כשמבטלים את המפתח באמצעות Google Cloud CLI או REST.

המסוף

אתם יכולים להשתמש בתבנית של הגדרות מכונה כדי ליצור מכונות וירטואליות שיושבתו כשמפתח Cloud KMS יבוטל.

  1. מתחילים ליצור תבנית של הגדרות מכונה שכוללת דיסק שמוגן על ידי מפתח Cloud KMS.
  2. פותחים את התפריט Networking, disks, security, management, sole-tenancy.
  3. מרחיבים את הקטע ניהול.
  4. בקטע Customer Managed Encryption Key (CMEK) revocation policy, בוחרים באפשרות Shutdown.

gcloud

יוצרים תבנית של הגדרות מכונה באמצעות הפקודה gcloud compute instance-templates create וכוללים את --key-revocation-action-type=stop.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --key-revocation-action-type=stop

REST

יוצרים בקשת POST ל-method‏ instanceTemplates.insert. בגוף הבקשה, צריך להגדיר באופן מפורש את כל שדות ההגדרה הנדרשים. אם רוצים שהמכונות הווירטואליות שנוצרו מהתבנית הזו יכבו כשהמפתח יבוטל, צריך לציין את הערך "keyRevocationActionType":"STOP". לדוגמה, תבנית של הגדרות מכונה עם שדות החובה המינימליים ליצירת מכונות וירטואליות שיושבתו עם ביטול המפתח תיראה כך:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates

{
  "name": "example-template",
  "properties": {
  "machineType": "e2-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs": [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-13"
      }
    }
  ],
  "keyRevocationActionType": "STOP"
  }
}

אחרי שיוצרים מכונה וירטואלית שמוגדרת להיסגר בביטול הרשאה ב-Cloud KMS, יוצרים דיסק מתמשך ומצרפים אותו. הדיסק המתמשך מוצפן באמצעות מפתח Cloud KMS.

המאמרים הבאים