הפעלת מפתחות הצפנה בניהול הלקוח ב-Secret Manager

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

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

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

‫Secret Manager מספק כלים לאחסון, לניהול ולגישה לנתונים רגישים באפליקציות.

CMEK עם Cloud KMS Autokey

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

‫Secret Manager תואם ל-Cloud KMS Autokey רק כשיוצרים משאבים באמצעות Terraform או API בארכיטקטורת REST.

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

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

איך CMEK עובד ב-Secret Manager

לפני שכותבים גרסה של סוד לאחסון קבוע במיקום מסוים, Secret Manager מצפין את הנתונים באמצעות מפתח ייחודי להצפנת נתונים (DEK). מפתח ה-DEK הזה מוצפן באמצעות מפתח ספציפי לשכפול, שנקרא מפתח להצפנת מפתחות הצפנה (KEK) והוא בבעלות שירות Secret Manager.

כשמשתמשים ב-CMEK עבור Secret Manager, המפתח להצפנת מפתחות הצפנה נקרא מפתח CMEK והוא מפתח סימטרי שמנוהל ב-Cloud KMS. מפתח ה-CMEK צריך להיות באותו Google Cloud המיקום שבו נמצא העותק של הגרסה הסודית שהוא מצפין. אפשר גם להשתמש במפתח Cloud EKM במדיניות CMEK להצפנה ולפענוח.

במדריך הזה מוסבר איך להגדיר את Secret Manager לשימוש ב-CMEK. מידע נוסף על CMEK באופן כללי, כולל מתי ולמה כדאי להפעיל אותו, זמין במסמכי התיעוד של Cloud Key Management Service.

רוטציית מפתחות

כשמבצעים רוטציה למפתח של Cloud Key Management Service, גרסת המפתח החדשה הופכת לגרסה primary. ב-Secret Manager נעשה שימוש בלוגיקה הבאה להחלפת מפתחות:

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

מגבלות

ה-CMEK זמין רק ב-Secret Manager v1 API וב-Google Cloud CLI.

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

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

כדי להגדיר את Secret Manager ואת Cloud KMS, צריך לבצע את הפעולות הבאות:

  • Secret Manager:

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

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

מגדירים את המשתנים הבאים למזהי הפרויקטים של Secret Manager ו-Cloud KMS.

This is an editable variable. Set it to your Secret Manager project ID and the
value will be used in all commands on this page.
SM_PROJECT_ID

This is an editable variable. Set it to your Cloud KMS project ID and the value
will be used in all commands on this page.
KMS_PROJECT_ID

אימות אל Google Cloud:

gcloud

כדי להשתמש ב-Secret Manager בשורת הפקודה, קודם צריך להתקין את Google Cloud CLI או לשדרג לגרסה 378.0.0 ואילך. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.

gcloud auth login

יצירת זהות של סוכן שירות

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

כדי ליצור זהות שירות באמצעות Google Cloud CLI, מריצים את הפקודה הבאה:

gcloud

כדי להשתמש ב-Secret Manager בשורת הפקודה, קודם צריך להתקין את Google Cloud CLI או לשדרג לגרסה 378.0.0 ואילך. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.

gcloud beta services identity create \
    --service "secretmanager.googleapis.com" \
    --project "SM_PROJECT_ID"

הפקודה תחזיר את שם זהות השירות בפורמט הבא:

service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com

שומרים את השם של הזהות בשירות:

The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.

SM_SERVICE_IDENTITY

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

CMEK עם שכפול אוטומטי

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

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

יוצרים מפתח סימטרי של Cloud KMS באזור global Cloud KMS, או משתמשים במפתח קיים. בדוגמה הזו נוצר אוסף מפתחות חדש בשם secret-manager-cmek, ואז נוצר בו מפתח חדש בשם my-cmek-key.

gcloud

כדי להשתמש ב-Secret Manager בשורת הפקודה, קודם צריך להתקין את Google Cloud CLI או לשדרג לגרסה 378.0.0 ואילך. ב-Compute Engine או ב-GKE, צריך לעבור אימות באמצעות ההיקף cloud-platform.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "global"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

מעניקים לזהות השירות של Secret Manager גישה להצפנה ולפענוח באמצעות מפתח ה-CMEK. הפקודה הזו מעניקה את התפקיד Cloud KMS Encrypter / Decrypter ‏ (roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח Cloud KMS ‏my-cmek-key לזהות השירות.