הגנה על הנתונים באמצעות CMEK

בדף הזה תמצאו מידע משלים על הגנה על הנתונים באמצעות מפתחות הצפנה בניהול הלקוח (CMEK) לפונקציות שנוצרו באמצעות פקודות gcloud functions או Cloud Functions v2 API.

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

הסוגים הבאים של נתונים מפונקציות Cloud Run מוצפנים כשמשתמשים ב-CMEK:

  • קוד המקור של הפונקציה שהועלה לפריסה ונשמר על ידי Google ב-Cloud Storage, ומשמש בתהליך build.
  • התוצאות של תהליך ה-build של הפונקציה, כולל:
    • קובץ האימג' של הקונטיינר שנוצר מקוד המקור של הפונקציה.
    • כל מופע של הפונקציה שנפרסה.

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

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

  • אם משביתים מפתח, אי אפשר לפרוס את קובץ אימג' של קונטיינר ואי אפשר להפעיל מופעים חדשים.

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

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

  1. יוצרים מפתח באזור יחיד כדי להצפין את הפונקציות. במאמר יצירת מפתחות הצפנה סימטריים מוסבר איך ליצור מפתח.

  2. יוצרים מאגר Artifact Registry עם CMEK מופעל. צריך להשתמש באותו מפתח למאגר Artifact Registry כמו כשמפעילים CMEK לפונקציה.

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

הענקת גישה למפתח לחשבונות שירות

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

  • סוכן שירות של פונקציות Cloud Run‏ (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

  • סוכן שירות של Artifact Registry ‏ (service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com)

  • סוכן שירות של Cloud Storage‏ (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

  • סוכן שירות של Cloud Run‏ (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)

  • סוכן שירות של Eventarc (service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com)

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

המסוף

  1. נכנסים לדף Cloud Key Management Service במסוף Google Cloud :
    כניסה לדף Cloud KMS

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

  3. לוחצים על שם המפתח כדי לראות את פרטי המפתח.

  4. בכרטיסייה Permissions, לוחצים על Grant access.

  5. בשדה New principals, מזינים את כתובות האימייל של כל שלושת חשבונות השירות שצוינו קודם כדי להקצות הרשאות לכל שלושת החשבונות בבת אחת.

  6. בתפריט Select a role, בוחרים באפשרות Cloud KMS CryptoKey Encrypter/Decrypter.

  7. לוחצים על Save.

gcloud

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

gcloud kms keys add-iam-policy-binding KEY \
  --keyring KEY_RING \
  --location LOCATION \
  --member serviceAccount:SERVICE_AGENT_EMAIL \
  --role roles/cloudkms.cryptoKeyEncrypterDecrypter

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

  • KEY: השם של המפתח. לדוגמה, my-key.

  • KEY_RING: השם של אוסף המפתחות. לדוגמה, my-keyring.

  • LOCATION: המיקום של המפתח. לדוגמה, us-central1.

  • SERVICE_AGENT_EMAIL: כתובת האימייל של חשבון השירות.

הפעלת CMEK לפונקציה

אחרי שמגדירים מאגר Artifact Registry עם CMEK מופעל ונותנים לפונקציות Cloud Run גישה למפתח, אפשר להפעיל CMEK לפונקציה.

כדי להפעיל CMEK לפונקציה, מריצים את הפקודה הבאה:

gcloud functions deploy FUNCTION \
    --kms-key=KEY \
    --docker-repository=REPOSITORY \
    --source=YOUR_SOURCE_LOCATION
    FLAGS...
 

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

  • FUNCTION: השם של הפונקציה שרוצים להפעיל בה את CMEK. לדוגמה, cmek-function.

  • KEY: השם המלא של המפתח, בפורמט הבא: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME.

  • REPOSITORY: השם המלא של מאגר Artifact Registry, בפורמט הבא: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

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

  • FLAGS...: דגלים נוספים שאולי נדרשים לפריסת הפונקציה, במיוחד לפריסות של יצירה. פרטים נוספים זמינים במאמר בנושא פריסת פונקציה ב-Cloud Run.

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

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

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