הגנה על הנתונים באמצעות CMEK (דור ראשון)
אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) של Cloud Key Management Service כדי להגן על פונקציות של Cloud Run ועל נתונים במנוחה שקשורים אליהן. מפתחות כאלו נוצרים ומנוהלים באמצעות Cloud KMS, ומאוחסנים כמפתחות תוכנה באשכול HSM או באופן חיצוני.
פריסת פונקציה עם CMEK מגנה על הנתונים שמשויכים אליה באמצעות מפתח הצפנה שנמצא בשליטה מלאה שלכם. הצפנה מהסוג הזה מאפשרת לכם לעמוד בדרישות התאימות בתעשיות מסוימות, כמו שירותים פיננסיים. מכיוון שאתם הבעלים של המפתח ו-Google לא שולטת בו, אף אחד (כולל אתם) לא יכול לגשת לנתונים שמוגנים על ידי מפתחות ההצפנה האלה כשהמפתחות מושבתים או נהרסים.
הסוגים הבאים של נתונים מפונקציות Cloud Run מוצפנים כשמשתמשים במפתח CMEK:
- קוד המקור של הפונקציה שהועלה לפריסה ואוחסן על ידי Google ב-Cloud Storage, ומשמש בתהליך build.
- התוצאות של תהליך build של הפונקציה, כולל:
- קובץ האימג' של הקונטיינר שנוצר מקוד המקור של הפונקציה.
- כל מופע של הפונקציה שנפרסה.
- נתונים במנוחה בערוצי העברת אירועים פנימיים.
תהליך build של הפונקציה עצמו מוגן באמצעות מפתח זמני שנוצר באופן ייחודי לכל build. מידע נוסף זמין במאמר בנושא תאימות ל-CMEK ב-Cloud Build. בנוסף, חשוב לשים לב לנקודות הבאות:
מטא-נתונים של קבצים, כמו נתיבים במערכת הקבצים או חותמות זמן של שינויים, לא מוצפנים.
אם משביתים מפתח, אי אפשר לפרוס את קובץ אימג' של קונטיינר ואי אפשר להפעיל מופעים חדשים.
ההגנה באמצעות CMEK בפונקציות Cloud Run חלה רק על משאבי פונקציות Cloud Run שמנוהלים על ידי Google. אתם אחראים להגנה על נתונים ומשאבים שמנוהלים על ידכם, כמו מאגרי קוד המקור או שירותים שבהם נעשה שימוש בפונקציות.
הגדרת CMEK לפונקציות Cloud Run כוללת את הפעולות הבאות:
נותנים לחשבונות השירות הנדרשים גישה למפתח:
- לכל הפונקציות, צריך לתת לחשבונות השירות של פונקציות Cloud Run, Artifact Registry ו-Cloud Storage גישה למפתח.
יצירת מאגר Artifact Registry שמוגן באמצעות CMEK לאחסון תמונות הפונקציות.
הפעלת CMEK בפונקציה.
אופציונלי: מפעילים מדיניות ארגון של CMEK כדי לאכוף את כל הפונקציות החדשות בהתאם ל-CMEK.
השלבים האלה מפורטים בהמשך.
לפני שמתחילים
יוצרים מפתח באזור יחיד כדי להצפין את הפונקציות. כאן מוסבר איך ליצור מפתח.
יוצרים מאגר Artifact Registry עם CMEK מופעל. צריך להשתמש באותו מפתח למאגר Artifact Registry כמו כשמפעילים CMEK לפונקציה.
הענקת גישה למפתח לחשבונות שירות
לכל הפונקציות, צריך להעניק לחשבונות השירות הבאים גישה למפתח:
סוכן שירות של פונקציות 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 KMS CryptoKey Encrypter/Decrypter:
המסוף
נכנסים לדף Cloud Key Management Service במסוף Google Cloud :
כניסה לדף Cloud KMSלוחצים על השם של אוסף המפתחות שמכיל את המפתח שנבחר.
לוחצים על שם המפתח כדי לראות את פרטי המפתח.
בכרטיסייה Permissions, לוחצים על Grant access.
בשדה New principals, מזינים את כתובות האימייל של כל שלושת חשבונות השירות שמופיעים למעלה כדי להקצות הרשאות לכל שלושת החשבונות בבת אחת.
בתפריט הנפתח Select a role, בוחרים באפשרות Cloud KMS CryptoKey Encrypter/Decrypter.
לוחצים על 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 לפונקציה:
המסוף
נכנסים לדף Cloud Run functions במסוף Google Cloud :
כניסה לדף Cloud Run functionsלוחצים על השם של הפונקציה שרוצים להפעיל בה CMEK.
לוחצים על Edit.
לוחצים על Runtime, build... (זמן ריצה, בנייה...) כדי להרחיב את אפשרויות ההגדרה המתקדמות.
לוחצים על הכרטיסייה מאגר תמונות ואבטחה.
בקטע Encryption, בוחרים באפשרות Customer-managed encryption key (CMEK).
בוחרים את המפתח הרצוי מהתפריט הנפתח.
בקטע Container location (מיקום מאגר התגים), בוחרים באפשרות Customer-managed Artifact Registry (מאגר Artifact בניהול הלקוח).
בתפריט הנפתח Artifact registry, בוחרים במאגר עם הגנה באמצעות CMEK.
לוחצים על הבא.
לוחצים על פריסה.
gcloud
מריצים את הפקודה הבאה.
gcloud functions deploy FUNCTION \ --no-gen2 \ --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) מופעלת עבור הפונקציה.
שימו לב: פונקציות של Cloud Run תמיד משתמשות בגרסה הראשית של מפתח להגנה באמצעות CMEK. אי אפשר לציין גרסה מסוימת של מפתח לשימוש כשמפעילים CMEK לפונקציות.
אם מפתח נהרס או מושבת, או שההרשאות הנדרשות בו מבוטלות, מופעים פעילים של פונקציות שמוגנות על ידי המפתח הזה לא מושבתים. הפעלות של פונקציות שכבר נמצאות בתהליך ימשיכו לפעול, אבל הפעלות חדשות ייכשלו כל עוד לפונקציות Cloud Run אין גישה למפתח.
בדיקת ההגנה באמצעות CMEK
כדי לוודא שההגנה באמצעות CMEK פועלת, אפשר להשבית את המפתח שבו השתמשתם כדי להפעיל CMEK לפונקציה, ואז לנסות להפעיל את הפונקציה:
השבתת המקש שמשמש להגנה על הפונקציה.
ניסיון להציג את קוד המקור שמשויך לפונקציה הזו. הניסיון אמור להיכשל.
מנסים להפעיל את הפונקציה שמוגנת באמצעות CMEK. הניסיון אמור להיכשל.
אחרי שמוודאים שההגנה באמצעות CMEK פועלת, מפעילים את המפתח.
האימות של ההגנה באמצעות CMEK של הפונקציה בוצע.
המאמרים הבאים
- איך מחליפים את המפתחות
- מידע נוסף על הצפנת ברירת המחדל של Google
- מידע נוסף על CMEK
- מידע נוסף על מדיניות הארגון לגבי CMEK