שימוש במפתחות הצפנה בניהול הלקוח

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

אם אתם רוצים לשלוט במפתחות ההצפנה, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) ב-Cloud KMS עם שירותים שמשולבים עם CMEK, כולל Workflows. שימוש במפתחות Cloud KMS מאפשר לכם לשלוט ברמת ההגנה, במיקום, בלוח הזמנים של הרוטציה, בשימוש ובהרשאות הגישה, ובגבולות הקריפטוגרפיים. שימוש ב-Cloud KMS מאפשר גם לעקוב אחרי השימוש במפתחות, לצפות ביומני ביקורת ולשלוט במחזורי החיים של המפתחות. במקום ש-Google תהיה הבעלים של המפתחות הסימטריים להצפנת מפתחות (KEK) שמגנים על הנתונים שלכם ותנהל אותם, אתם שולטים במפתחות האלה ומנהלים אותם ב-Cloud KMS.

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

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

מה מוגן באמצעות CMEK

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

  • תהליך עבודה דורש קובץ מקור שמכיל הגדרה תקינה של תהליך עבודה. קובץ המקור הזה מוצפן באמצעות המפתח.

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

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

לפני שמשתמשים ב-CMEK ב-Workflows, צריך לבצע את השלבים הבאים:

  1. מפעילים את ממשקי ה-API.

    המסוף

    1. מפעילים את ממשקי ה-API של Cloud KMS ו-Workflows.

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

      כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

      הפעלת ממשקי ה-API

    gcloud

    1. במסוף Google Cloud , מפעילים את Cloud Shell.

      הפעלת Cloud Shell

      בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

    2. מעדכנים את הרכיבים של gcloud.
      gcloud components update
    3. להפעיל את Cloud KMS API ואת Workflows API בפרויקט שבו יאוחסנו מפתחות ההצפנה.
      gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
  2. ‫Cloud KMS יוצר יומני Cloud Audit Logs כשמפעילים או משביתים מפתחות, או כשמשאבי Workflows משתמשים במפתחות כדי להצפין ולפענח נתונים. מוודאים שרישום ביומן מופעל עבור Cloud KMS API בפרויקט, ומחליטים אילו הרשאות ותפקידים ספציפיים לרישום ביומן חלים על התרחיש לדוגמה שלכם. מידע נוסף זמין במאמר מידע על רישום ביומני ביקורת ב-Cloud KMS.

יצירה של אוסף מפתחות ומפתח ב-Cloud KMS

אתם יכולים ליצור מחזיק מפתחות חדש או להשתמש במחזיק מפתחות קיים. בתוך אוסף המפתחות, אפשר להוסיף מפתח חדש או להשתמש במפתח קיים.

  1. יצירת אוסף מפתחות

  2. יצירת מפתח לאוסף מפתחות ספציפי

אחזור מזהה המשאב של מפתח Cloud KMS

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

המסוף

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

    מעבר אל 'ניהול מפתחות'

  2. לוחצים על אוסף המפתחות שמכיל את המפתח.

  3. למפתח שרוצים לאחזר את מזהה המשאב שלו, לוחצים על עוד.

  4. לוחצים על העתקת שם המשאב.

    מזהה המשאב של המפתח מועתק ללוח. הפורמט שלה דומה לזה:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    
  5. מפתח מכיל אפס או יותר גרסאות של מפתחות. מזהה המשאב של גרסת מפתח הוא מזהה המפתח, בתוספת קו נטוי (/) ומזהה הגרסה. כדי להציג רשימה של כל הגרסאות של מפתח מסוים:

    1. לוחצים על שם המפתח.
    2. לגרסה ספציפית, לוחצים על עוד.
    3. לוחצים על העתקת שם המשאב.

gcloud

  1. כדי להציג רשימה של כל המפתחות באוסף מפתחות נתון:

    gcloud kms keys list --keyring RING_NAME --location LOCATION
    

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

    • RING_NAME: השם של אוסף המפתחות
    • LOCATION: האזור של אוסף המפתחות

    הפלט כולל את מזהה המשאב של כל מפתח. לדוגמה:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    
  2. למפתח יכולות להיות אפס או יותר גרסאות של מפתחות. מזהה המשאב של גרסת מפתח הוא מזהה המפתח, בתוספת לוכסן (/) ומזהה הגרסה. כדי לראות רשימה של כל הגרסאות של מפתח מסוים:

    gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME
    

    הפלט כולל את מזהה המשאב של כל גרסת מפתח. לדוגמה:

    NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2
    

נותנים לסוכן השירות של Workflows גישה למפתח

צריך להעניק לסוכן השירות של Workflows את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter בניהול הזהויות והרשאות הגישה (IAM), כדי שתהיה לו גישה למפתח Cloud KMS:

המסוף

כשמפעילים CMEK לזרימת עבודה דרך המסוף, מוצגת בקשה להעניק לחשבון השירות את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter. אתם יכולים להיעזר במידע שבחלק הפעלת CMEK בתהליך עבודה.

gcloud

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring RING_NAME \
    --location LOCATION \
    --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

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

  • KEY_NAME: השם של המפתח. לדוגמה, my-key.
  • RING_NAME: השם של אוסף המפתחות. לדוגמה, my-keyring.
  • LOCATION: המיקום של המפתח. לדוגמה, us-central1.
  • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud . אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:

    export PROJECT=$(gcloud info --format='value(config.project)')
    gcloud projects describe ${PROJECT} --format="value(projectNumber)"

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

הפעלת CMEK לתהליך עבודה

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

המסוף

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

    כניסה לדף Workflows

  2. לוחצים על השם של תהליך העבודה שרוצים לעדכן.

    יופיע הדף Workflows details.

  3. לוחצים על עריכה.

  4. בוחרים באפשרות מפתח Cloud KMS.

  5. בוחרים סוג מפתח.

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

  6. ברשימה Select a Cloud KMS key, בוחרים מפתח Cloud KMS או מסננים כדי למצוא אותו.

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

  8. אם מתבקשים, מקצים את התפקיד cloudkms.cyptoKeyEncrypterDecrypter לחשבון השירות של Workflows עם התפקיד workflows.serviceAgent.

  9. לוחצים על הבא.

  10. כדי לשמור את השינויים ולפרוס את תהליך העבודה המעודכן, לוחצים על פריסה.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --kms-key=KEY \
    --location LOCATION \
    --service-account=SERVICE_ACCOUNT

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

  • WORKFLOW_NAME: השם של תהליך העבודה
  • SOURCE_FILE: קובץ המקור של תהליך העבודה עם סיומת הקובץ yaml לקובץ YAML או עם סיומת הקובץ json לקובץ JSON. לדוגמה, myWorkflow.yaml.
  • KEY: מזהה המשאב של המפתח בפורמט projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. אפשר לאחזר את מזהה המפתח.

  • LOCATION: המיקום של תהליך העבודה

  • SERVICE_ACCOUNT: חשבון השירות שבו ישתמש תהליך העבודה כדי לגשת לשירותים אחרים של Google Cloud . לדוגמה: SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com. מומלץ מאוד להשתמש בחשבון שירות עם ההרשאות המינימליות הנדרשות לגישה למשאבים. אם משאירים את השדה ריק, המערכת משתמשת בחשבון השירות שמוגדר כברירת מחדל. מידע נוסף זמין במאמר בנושא הענקת הרשאה לזרימת עבודה לגשת למשאבים ב- Google Cloud .

שימו לב לנקודות הבאות:

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

אימות השילוב של Cloud KMS

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

המסוף

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

    כניסה לדף Workflows

  2. לוחצים על שם תהליך העבודה שרוצים לאמת.

    יופיע הדף Workflows details.

  3. לוחצים על הכרטיסייה פרטים.

    הערך Encryption מציג את מזהה המשאב של מפתח Cloud KMS שמשמש לאבטחת תהליך העבודה וההרצה שלו.

gcloud

gcloud workflows describe WORKFLOW_NAME \
    --location=LOCATION

הפלט אמור להיראות כך:

createTime: '2022-08-10T19:57:58.233177709Z'
cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME
revisionCreateTime: '2022-11-18T19:44:04.933633237Z'
revisionId: 000009-8be
serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com
sourceContents:
[...]
state: ACTIVE
updateTime: '2022-11-18T19:44:05.171793128Z'

הערך cryptokeyName הוא מזהה המשאב של מפתח Cloud KMS שמשמש לאבטחת תהליך העבודה וההרצה שלו.

השבתת CMEK בתהליך עבודה

אפשר להשבית את ה-CMEK עבור תהליך עבודה כדי שהוא לא ישתמש יותר במפתח Cloud KMS המשויך.

המסוף

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

    כניסה לדף Workflows

  2. לוחצים על השם של תהליך העבודה שרוצים לעדכן.

    יופיע הדף Workflows details.

  3. לוחצים על עריכה.

  4. כדי לבטל את הבחירה בלחצן הבחירה Cloud KMS key, בוחרים באפשרות Google-managed encryption key.

  5. לוחצים על הבא.

  6. כדי לשמור את השינויים ולפרוס את תהליך העבודה המעודכן, לוחצים על פריסה.

gcloud

gcloud workflows deploy WORKFLOW_NAME \
    --source=SOURCE_FILE \
    --clear-kms-key \
    --service-account=SERVICE_ACCOUNT

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

השבתה של Cloud KMS

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

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

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

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

פתרון בעיות

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

שגיאה תיאור
ההרשאה cloudkms.cryptoKeyVersions.useToEncrypt נדחתה מפתח Cloud KMS שסופק לא קיים או שההרשאה לא הוגדרה בצורה תקינה.

פתרון:

גרסת המפתח לא מופעלת גרסת המפתח שסופקה ב-Cloud KMS הושבתה.

פתרון: הפעלה מחדש של גרסת המפתח ב-Cloud KMS.

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

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

חריגה ממגבלת המכסה של Cloud KMS הגעת למגבלת המכסה של בקשות Cloud KMS.

פתרון: מגבילים את מספר הקריאות ל-Cloud KMS או מגדילים את מכסת המגבלה. מידע נוסף זמין במאמר בנושא מכסות ב-Cloud KMS.

איך המערכת מטפלת במצב של מפתח לא זמין

אם מסיבה כלשהי Cloud KMS לא זמין, יכול להיות ש-Workflows לא יוכל לאחזר את הסטטוס של המפתח מ-Cloud KMS.

אם הסטטוס של המפתח לא זמין, תהליך העבודה או ההפעלה שלו יחזירו ערך state: UNAVAILABLE ופרטים קשורים בשדה stateError.

אם הסטטוס של המפתח הופך ללא זמין במהלך ביצוע של תהליך עבודה (לדוגמה, אם הרשאה מבוטלת במהלך קריאה חוזרת), מתרחשת שגיאת זמן ריצה, ומוחזר ערך state: FAILED ופרטים קשורים בשדה error.

תמחור

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