סקירה כללית של מפתחות הצפנה בניהול הלקוח (CMEK)

בדף הזה נסביר על מפתחות הצפנה בניהול הלקוח (CMEK) ב-Spanner. מידע נוסף על CMEK באופן כללי, כולל מתי ולמה כדאי להפעיל אותו, זמין במסמכי התיעוד של Cloud Key Management Service.

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

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

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

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

CMEK עם Cloud KMS Autokey

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

‫Spanner תואם ל-Cloud KMS Autokey רק כשיוצרים משאבים באמצעות Terraform או API בארכיטקטורת REST. אי אפשר להשתמש ב-Cloud KMS Autokey כדי ליצור כמה מפתחות אזוריים (אזור יחיד) של Cloud KMS למסד נתונים של Spanner.

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

תכונות

  • בקרת גישה לנתונים: אדמינים יכולים להחליף את המפתח שמשמש להגנה על נתונים במצב מנוחה ב-Spanner, לנהל את הגישה אליו ולהשבית או להשמיד אותו.
  • יכולת ביקורת: אם מפעילים רישום ביומן ביקורת עבור Cloud KMS API בפרויקט, כל הפעולות שמתבצעות במפתח, כולל אלה שמתבצעות על ידי Spanner, נרשמות ביומן וניתן לראות אותן ב-Cloud Logging. מפתחות Cloud EKM תומכים ב-Key Access Justification, שמוסיף שדה הצדקה לכל בקשות המפתח. עם שותפים נבחרים לניהול מפתחות חיצוניים, אתם יכולים לאשר או לדחות את הבקשות האלה באופן אוטומטי, על סמך ההצדקה.
  • ביצועים: אין שינויים בביצועים של Spanner או בהסכם רמת השירות בשימוש ב-CMEK.
  • תמיכה במפתחות אזוריים מרובים: אתם יכולים ליצור כמה מפתחות אזוריים (אזור יחיד) של Cloud KMS כדי להגן על מסד נתונים בהגדרה של מופע Spanner בהתאמה אישית, בשני אזורים או במספר אזורים.

תמחור

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

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

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

במסד נתונים שמופעל בו CMEK, ‏ Spanner משתמש במפתחות Cloud KMS שלכם כדי להגן על נתונים באחסון. הנתונים האלה כוללים נתונים במסד נתונים שמאוחסנים בדיסק או בפלאש.

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

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

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

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

עם CMEK

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

ללא CMEK

תרשים שממחיש הצפנה עם Google-owned and Google-managed encryption key

הפעלת CMEK

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

API לגישה לנתונים של Spanner, כמו אלה שמשמשים לניהול סשנים ולביצוע טרנזקציות על נתונים, זהים בדיוק גם ל-CMEK וגם ל- Google-owned and Google-managed encryption keys. אפליקציות לא צריכות לציין מפתחות או הגדרות הצפנה כשקוראים או כותבים נתונים. השירות מטפל בכל ההצפנה.

ניהול מפתחות

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

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

אם Spanner מזהה שהמפתח שלכם ב-Cloud KMS הושבת או נמחק, מתחילה מיד פעולה כדי למנוע גישה למסד הנתונים. כל הקריאות הבאות למסד הנתונים, כולל סשנים, קריאות וכתיבות, מחזירות שגיאה FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible. אם הקריאות של Spanner ל-Cloud KMS מזהות שמפתח שהושבת בעבר הופעל מחדש, Cloud KMS משחזר את הגישה למסד הנתונים של Spanner באופן אוטומטי.

בנוסף, אם מסד נתונים מוגן על ידי כמה מפתחות אזוריים וכל המפתחות מושבתים או נהרסים, Spanner מתחיל מיד להפוך את מסד הנתונים ללא נגיש. אם Spanner מזהה שרק קבוצת משנה של המפתחות במסד הנתונים מושבתת או נהרסת, הוא משבית את מסד הנתונים לאורך תקופה של עד 12 שעות. מומלץ מאוד לא להשבית או להרוס רק קבוצת משנה של מפתחות במסד נתונים שמופעל בו CMEK, כי זה עלול לגרום להתנהגות לא צפויה. כדי למנוע את זה, אפשר להשתמש במדד Spanner CMEK Keys (instance/replica/cmek/total_keys) כדי להפעיל התראה אם קבוצת משנה של מפתחות מושבתת או מושמדת. מידע נוסף זמין במאמר יצירת התראה על השבתה של קבוצת משנה של CMEK.

יצירת התראה להשבתה של קבוצת משנה של CMEK

אפשר להשתמש במדד Spanner CMEK Keys (/instance/replica/cmek/total_keys) כדי להפעיל התראה אם קבוצת משנה של מפתחות CMEK מושבתת או נהרסת. כדי ליצור את מדיניות ההתראות הזו, מרחיבים את השלבים וההגדרות הבאים:

הגדרות של מדיניות התראות בנושא CMEK.

תנאי חדש
שדה

ערך
משאב ומדד בתפריט Resources בוחרים באפשרות Spanner Instance.
בתפריט Metric categories בוחרים באפשרות Instance.
בתפריט Metrics בוחרים באפשרות CMEK Keys.

(The metric.type is spanner.googleapis.com/instance/replica/cmek/total_keys).
מסנן instance_id = INSTANCE_ID
is_key_revoked = TRUE
בסדרות עיתיות
קיבוץ לפי סדרה עיתית
database
בסדרות עיתיות
צבירה של סדרות עיתיות
sum
חלון נע 10 m
פונקציה אנליטית (window function) mean
הגדרת טריגר להתראה
שדה

ערך
סוג התנאי Threshold
טריגר להתראה Any time series violates
מיקום הסף Above threshold
סף 0
חלון הבדיקה מחדש 1 hr
תנאי חדש
שדה

ערך
משאב ומדד בתפריט Resources בוחרים באפשרות Spanner Instance.
בתפריט Metric categories בוחרים באפשרות Instance.
בתפריט Metrics בוחרים באפשרות CMEK Keys.

(The metric.type is spanner.googleapis.com/instance/replica/cmek/total_keys).
מסנן instance_id = INSTANCE_ID
is_key_revoked = FALSE
בסדרות עיתיות
קיבוץ לפי סדרה עיתית
database
בסדרות עיתיות
צבירה של סדרות עיתיות
sum
חלון נע 10 m
פונקציה אנליטית (window function) mean
הגדרת טריגר להתראה
שדה

ערך
סוג התנאי Threshold
טריגר להתראה Any time series violates
מיקום הסף Above threshold
סף 0
חלון הבדיקה מחדש 1 hr
הגדרת טריגר להתראה
שדה

ערך
טריגר עם כמה תנאים All conditions are met

אחרי שיוצרים את ההתראה, אם Spanner מזהה שבוטל חלק מ-CMEK, סיכום האירוע מופיע בטבלה Incidents בדף Policy details של ההתראה. אפשר גם להגדיר ערוצי התראה אופציונליים. מידע נוסף מופיע במאמר בנושא יצירה וניהול של ערוצי התראות.

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

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

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

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

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

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

כשמשתמשים במפתח Cloud EKM, ל-Google אין שליטה בזמינות של המפתח שמנוהל חיצונית במערכת של השותף החיצוני לניהול מפתחות.

אם מפתח בניהול חיצוני לא זמין, Spanner ממשיך לתמוך בפעולות מלאות במסד הנתונים כמיטב יכולתו למשך שעה אחת לכל היותר. אם אחרי שעה עדיין לא תהיה ל-Spanner אפשרות להתחבר ל-Cloud KMS,‏ Spanner יתחיל להעביר את מסד הנתונים למצב אופליין כאמצעי הגנה. הקריאות למסד הנתונים ייכשלו עם השגיאה FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

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

מידע נוסף על שיקולים נוספים לשימוש במפתחות חיצוניים זמין במאמרי העזרה של Cloud External Key Manager.

גיבוי ושחזור

אפשר להשתמש ב-CMEK או ב- Google-owned and Google-managed encryption keys כדי להגן על גיבויים של Spanner. כברירת מחדל, הגיבוי משתמש באותה הגדרת הצפנה כמו מסד הנתונים שלו, אבל אפשר לשנות את ההתנהגות הזו על ידי הגדרת הצפנה שונה כשיוצרים את הגיבוי. אם הגיבוי מופעל באמצעות CMEK, הוא מוצפן באמצעות הגרסה הראשית של מפתח ה-KMS בזמן יצירת הגיבוי. אחרי שיוצרים את הגיבוי, אי אפשר לשנות את המפתח ואת גרסת המפתח שלו, גם אם מתבצעת רוטציה של מפתח ה-KMS. מידע נוסף זמין במאמר בנושא גיבוי מסד נתונים.

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

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

כל הגיבויים שנוצרו על ידי תזמון גיבויים יכולים להיות מוגנים על ידי CMEK או Google-owned and Google-managed encryption keys.

חלוקה גיאוגרפית

אתם יכולים להשתמש ב-CMEK או ב- Google-owned and Google-managed encryption keys כדי להגן על מסדי נתונים של Spanner שמשתמשים בחלוקה גיאוגרפית. כשמשתמשים בחלוקה גיאוגרפית, צריך להשתמש במפתח אזורי של Cloud KMS לכל מיקום של העתק של מופע, כולל אלה שמופיעים בהגדרת החלוקה של המופע. אין תמיכה במפתחות של כמה אזורים. כל מפתח אזורי של Cloud KMS צריך להיות באותו אזור שבו נמצאת הרפליקה של מופע Spanner או המיקום של מחיצת המופע.

לדוגמה, אם מסד הנתונים של Spanner נמצא בהגדרת מופע של מספר אזורים nam3, עם מחיצות של מופעים שנמצאות ב-europe-west1 וב-europe-west2, צריך ליצור מפתחות Cloud KMS באזורים הבאים:

  • us-east4 (חלק מ-nam3)
  • us-east1 (חלק מ-nam3)
  • us-central1 (חלק מ-nam3)
  • europe-west1 (המיקום של מחיצת המכונה)
  • europe-west2 (המיקום של מחיצת המכונה)

מידע נוסף זמין במאמר אבטחת מסד נתונים באמצעות CMEK.

רישום ביומן

אם הפעלתם את יומני הביקורת עבור Cloud KMS API בפרויקט, תוכלו לבדוק ב-Cloud Logging את הבקשות ש-Spanner שולח ל-Cloud KMS בשמכם. אפשר לראות את רשומות היומן של Cloud KMS ב-Logging.

דרישה או הגבלה של CMEK בארגון

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

  • הגדרת דרישה שמסדי נתונים חדשים ב-Spanner שנוצרו על ידי הארגון ישתמשו בהגנה באמצעות CMEK.

  • הגבלת המפתחות של Cloud KMS בארגון שזמינים להגנה באמצעות CMEK.

מידע נוסף זמין במאמר מדיניות הארגון לגבי CMEK.

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