כברירת מחדל, 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 שנשלחו, וגם בקשות ותגובות של קריאה חוזרת (callback) ו-HTTP.
לפני שמתחילים
לפני שמשתמשים ב-CMEK ב-Workflows, צריך לבצע את הפעולות הבאות:
מפעילים את ממשקי ה-API.
המסוף
-
מפעילים את Cloud KMS API ואת Workflows API, אם הם עדיין לא מופעלים.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
- מעדכנים את הרכיבים של
gcloud.gcloud components update
- מפעילים את Cloud KMS API ואת Workflows API בפרויקט שבו יאוחסנו מפתחות ההצפנה.
gcloud services enable cloudkms.googleapis.com workflows.googleapis.com
-
Cloud KMS יוצר יומני ביקורת של Cloud כשמפעילים או משביתים מפתחות, או כשמשאבי Workflows משתמשים במפתחות כדי להצפין ולפענח נתונים. מוודאים שרישום ביומן מופעל עבור Cloud KMS API בפרויקט, ומחליטים אילו הרשאות ותפקידים ספציפיים לרישום ביומן חלים על התרחיש לדוגמה שלכם. מידע נוסף זמין במאמר מידע על יומני ביקורת של Cloud KMS.
יצירת אוסף מפתחות ומפתח ב-Cloud KMS
אתם יכולים ליצור אוסף מפתחות חדש או להשתמש באוסף מפתחות קיים. בתוך אוסף המפתחות, אתם יכולים להוסיף מפתח חדש או להשתמש במפתח קיים.
אחזור מזהה המשאב של מפתח Cloud KMS
כשמפעילים CMEK לזרימת עבודה, צריך לציין את מזהה המשאב של מפתח Cloud KMS. להסבר, ראו איך מפעילים CMEK לתהליך עבודה.
המסוף
נכנסים לדף Key management במסוף Google Cloud .
לוחצים על אוסף המפתחות שמכיל את המפתח.
לוחצים על more_vert More במפתח שמזהה המשאב שלו מאוחזר.
לוחצים על העתקת שם המשאב.
מזהה המשאב של המפתח מועתק ללוח העריכה. הפורמט שלה דומה לזה:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
מפתח יכול להכיל אפס או יותר גרסאות של מפתחות. מזהה המשאב של גרסת מפתח הוא מזהה המפתח, בתוספת קו נטוי (
/) ומזהה הגרסה. כדי להציג את כל הגרסאות של מפתח:- לוחצים על שם המפתח.
- לגרסה ספציפית, לוחצים על עוד.
- לוחצים על העתקת שם המשאב.
gcloud
כדי להציג רשימה של כל המפתחות באוסף מפתחות נתון:
gcloud kms keys list --keyring RING_NAME --location LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
RING_NAME: השם של אוסף המפתחות -
LOCATION: האזור של אוסף המפתחות
הפלט כולל את מזהה המשאב של כל מפתח. לדוגמה:
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
-
למפתח יכולות להיות אפס או יותר גרסאות. מזהה המשאב של גרסת מפתח הוא מזהה המפתח, בתוספת קו נטוי (
/) ומזהה הגרסה. רשימת כל הגרסאות של מפתח: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. \ --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 שבו תהליך העבודה צריך להשתמש להצפנת נתונים.
המסוף
נכנסים לדף Workflows במסוף Google Cloud .
לוחצים על השם של תהליך העבודה שרוצים לעדכן.
מופיע הדף Workflows details.
לוחצים על עריכה.
בוחרים באפשרות מפתח Cloud KMS.
בוחרים סוג מפתח.
אתם יכולים לנהל את המפתחות באופן ידני או להשתמש ב-Autokey, שמאפשר לכם ליצור מחזיקי מפתחות ומפתחות לפי דרישה. אם האפשרות Autokey מושבתת, היא עדיין לא משולבת בסוג המשאב הנוכחי.
ברשימה Select a Cloud KMS key, בוחרים מפתח Cloud KMS או מסננים כדי למצוא אותו.
אופציונלי: כדי להזין ידנית את שם המשאב של המפתח, ברשימה בחירת מפתח בניהול הלקוח, לוחצים על הזנת מפתח באופן ידני ומזינים את שם משאב המפתח בפורמט שצוין.
אם תופיע בקשה, מקצים לחשבון השירות של Workflows את התפקיד
cloudkms.cyptoKeyEncrypterDecrypterעם התפקידworkflows.serviceAgent.לוחצים על הבא.
כדי לשמור את השינויים ולפרוס את תהליך העבודה המעודכן, לוחצים על Deploy.
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.. מומלץ מאוד להשתמש בחשבון שירות עם ההרשאות המינימליות הנדרשות לגישה למשאבים. אם משאירים את השדה ריק, המערכת משתמשת בחשבון השירות שמוגדר כברירת מחדל. מידע נוסף זמין במאמר בנושא הענקת הרשאה לזרימת עבודה לגשת למשאבים ב- Google Cloud .
שימו לב לנקודות הבאות:
- הגרסאות וההפעלות של תהליך העבודה מוצפנות באמצעות המפתח שצוין בזמן הפריסה. משאבים שהוצפנו בעבר באמצעות מפתח קודם נשארים מוצפנים באמצעות המפתח הקודם. אם עורכים תהליך עבודה ומציינים מפתח חדש, הגרסה הזו של תהליך העבודה מוצפנת באמצעות המפתח החדש, וכל ההרצות הבאות ישתמשו במפתח החדש.
- גרסאות קודמות של תהליכי עבודה והרצות שלא הוצפנו באמצעות CMEK יישארו לא מוצפנות.
- אם משביתים את CMEK לגרסה של זרימת עבודה, כל ההרצות הבאות נוצרות ללא הצפנת CMEK. להסבר, ראו איך משביתים את CMEK בתהליך עבודה. גרסאות קיימות של תהליכי עבודה והרצות שלהם נשארות מוצפנות באמצעות המפתחות שבאמצעותם הן הוצפנו בעבר.
אימות השילוב של Cloud KMS
כדי לאמת את שילוב ה-CMEK, אפשר להציג את המטא-נתונים של תהליך עבודה.
המסוף
נכנסים לדף Workflows במסוף Google Cloud .
לוחצים על השם של תהליך העבודה שרוצים לאמת.
מופיע הדף Workflows details.
לוחצים על הכרטיסייה פרטים.
הערך 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. sourceContents: [...] state: ACTIVE updateTime: '2022-11-18T19:44:05.171793128Z'
הערך cryptokeyName הוא מזהה המשאב של מפתח Cloud KMS שמשמש לאבטחת תהליך העבודה וההרצה שלו.
השבתת CMEK בתהליך עבודה
אתם יכולים להשבית את ה-CMEK עבור תהליך עבודה כדי שהוא לא ישתמש יותר במפתח Cloud KMS המשויך.
המסוף
נכנסים לדף Workflows במסוף Google Cloud .
לוחצים על השם של תהליך העבודה שרוצים לעדכן.
מופיע הדף Workflows details.
לוחצים על עריכה .
כדי לבטל את הבחירה בלחצן הבחירה Cloud KMS key, לוחצים על Google-managed encryption key.
לוחצים על הבא.
כדי לשמור את השינויים ולפרוס את תהליך העבודה המעודכן, לוחצים על Deploy.
gcloud
gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --clear-kms-key \ --service-account=SERVICE_ACCOUNT
הפעולה הזו משביתה את CMEK בגרסה הנוכחית של תהליך העבודה, וכל ההרצות הבאות נוצרות בלי הצפנת CMEK. גרסאות והפעלות קיימות של תהליכי עבודה נשארות מוצפנות באמצעות המפתחות שבהם הן הוצפנו בעבר.
השבתה של Cloud KMS
כדי לבטל את הגישה לנתונים בתהליך העבודה או בהרצות של תהליך העבודה, אפשר להשבית את Cloud KMS באחת מהדרכים הבאות:
משביתים או משמידים את גרסת המפתח הראשית של מפתח הצפנה בניהול הלקוח. השבתה של גרסת מפתח CMEK משעה את הגישה לכל הנתונים שמוגנים על ידי גרסת המפתח הזו. השמדה של גרסת מפתח היא הפעולה המקבילה הקבועה. שניהם משפיעים רק על תהליכי העבודה ועל ההרצות של תהליכי העבודה שמשויכים למפתח הספציפי. לא ניתן ליצור הרצות חדשות או להציג את המשאבים שמשויכים למפתח שהושבת או הושמד. כל ההרצות הפעילות ייכשלו ותוצג הודעת שגיאה מתאימה.
מבטלים את התפקיד
cloudkms.cryptoKeyEncrypterDecrypterב-IAM של סוכן השירות של Workflows. הפעולה הזו משפיעה על כל תהליכי העבודה בפרויקטGoogle Cloud שתומכים בהצפנה באמצעות CMEK. אי אפשר ליצור תהליכי עבודה והפעלות חדשים עם שילוב CMEK, או להציג משאבים מוצפנים באמצעות CMEK. כל ההרצות הפעילות ייכשלו ותוצג הודעת שגיאה מתאימה.
למרות שאף אחת מהפעולות לא מבטיחה ביטול גישה מיידי, שינויים ב-IAM מופצים בדרך כלל מהר יותר. מידע נוסף זמין במאמרים עקביות של משאבי Cloud KMS והפצה של שינויים בגישה.
פתרון בעיות
יכול להיות שיופיעו שגיאות כשמשתמשים ב-Cloud KMS עם Workflows. בטבלה הבאה מתוארות בעיות שונות ואיך לפתור אותן.
| שגיאה | תיאור |
|---|---|
ההרשאה cloudkms.cryptoKeyVersions.useToEncrypt נדחתה |
מפתח Cloud KMS שסופק לא קיים או שההרשאה לא הוגדרה בצורה תקינה.
פתרון:
|
| הגרסה של המפתח לא מופעלת | גרסת מפתח Cloud KMS שסופקה הושבתה.
|
| האזור של אוסף המפתחות לא תואם למשאב שצריך להגן עליו | האזור של אוסף המפתחות של KMS שצוין שונה מהאזור של זרימת העבודה.
הפתרון: משתמשים באוסף מפתחות של Cloud KMS וב-workflow מוגן מאותו אזור. (שימו לב שהם יכולים להיות בפרויקטים שונים). מידע נוסף זמין במאמרים מיקומים ב-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.