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

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

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

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

בדף הזה מוסבר איך מפתחות הצפנה בניהול הלקוח (CMEK) פועלים עם Datastream.

האם CMEK מתאים לכם?

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

הצפנה בניהול Google לעומת הצפנה בניהול הלקוח

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

‫Datastream משתמש במפתחות להצפנת נתונים (DEK) ובמפתחות להצפנת מפתחות הצפנה (KEK) בניהול Google כדי להצפין את Datastream. יש שתי רמות של הצפנה:

  1. מפתח ה-DEK מצפין את הנתונים.
  2. מפתח ה-KEK מצפין את מפתח ה-DEK.

‫Datastream מאחסן את ה-DEK המוצפן לצד הנתונים המוצפנים, ו-Google מנהלת את ה-KEK של Google. עם CMEK, אתם יוצרים מפתח שעוטף את מפתח ה-KEK של Google. ‫CMEK מאפשר לכם ליצור, לבטל ולמחוק את ה-KEK.

כל מפתחות ה-CMEK, כולל מפתחות תוכנה, חומרה ומפתחות חיצוניים, מנוהלים באמצעות Cloud Key Management Service (KMS) API.

באילו מיקומים אפשר להשתמש בפידים של Datastream עם הפעלת CMEK?

‫CMEK זמין בכל המיקומים של Datastream.

הסבר על חשבונות שירות

כשמפעילים CMEK בזרמי Datastream, צריך להשתמש בחשבון שירות כדי לבקש גישה למפתח מ-Cloud Key Management Service.

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

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

הסבר על מפתחות

ב-Cloud Key Management Service, צריך ליצור אוסף מפתחות עם מפתח קריפטוגרפי, ולהגדיר מיקום. כשיוצרים שידור חדש ב-Datastream, בוחרים את המפתח הזה כדי להצפין את השידור.

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

ה-CMEK משתמש בפורמט הבא:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

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

מנהלי מפתחות חיצוניים

אתם יכולים להשתמש במפתחות שמאוחסנים במנהלי מפתחות חיצוניים, כמו Fortanix,‏ Ionic או Thales, בתור CMEK. מידע על שימוש במפתחות חיצוניים עם Cloud Key Management Service זמין במאמר Cloud External Key Manager.

איך אפשר לוודא שלא תהיה יותר גישה לנתונים שמוצפנים באמצעות CMEK?

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

הגבלות

השימוש ב-CMEK כפוף להגבלות הבאות:

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

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

שימוש ב-CMEK

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

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. מתקינים ומפעילים את Cloud SDK.
  7. מוודאים שלחשבון המשתמש שלכם מוקצה תפקיד אדמין ב-Datastream.

    כניסה לדף IAM

  8. מפעילים את Cloud Key Management Service API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

  9. מפעילים את Datastream API.

    הפעלת ה-API

תהליך עבודה ליצירת סטרימינג ב-Datastream עם CMEK

  1. משתמשי gcloud ו-API בלבד: מוודאים שיש לכם חשבון שירות לכל פרויקט שנדרש בו CMEK. אם אין לכם חשבון שירות, כך יוצרים אחד.
  2. יוצרים אוסף מפתחות ומפתח ומגדירים את המיקום של כל מפתח. המיקום הוא Google Cloud האזור.
  3. משתמשי gcloud ו-API בלבד: נותנים למפתח גישה לחשבון השירות.
  4. מעתיקים או רושמים את מזהה המפתח (KMS_KEY_ID) ואת המיקום של המפתח, ואת המזהה (KMS_KEYRING_ID) של אוסף המפתחות. תצטרכו את המידע הזה כשמעניקים למפתח גישה לחשבון השירות.
  5. עוברים לפרויקט ויוצרים מקור נתונים ב-Datastream עם האפשרויות הבאות:
    1. אותו מיקום כמו CMEK
    2. הגדרות ה-CMEK
    3. מזהה CMEK

הסטרימינג ב-Datastream מופעל עכשיו עם CMEK.

יצירה של חשבון שירות

צריך ליצור חשבון שירות לכל פרויקט שנדרש בו CMEK.

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

  • משתמש בחשבון שירות (roles/iam.serviceAccountUser): כולל הרשאות להצגת רשימה של חשבונות שירות, לקבלת פרטים על חשבון שירות ולחיקוי של חשבון שירות.
  • אדמין בחשבון שירות (roles/iam.serviceAccountAdmin): כולל הרשאות להצגת רשימה של חשבונות שירות ולקבלת פרטים על חשבון שירות. התפקיד הזה כולל גם הרשאות ליצור, לעדכן ולמחוק חשבונות שירות, ולצפות במדיניות של Datastream בחשבון שירות או לשנות אותה.

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

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

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

הפקודה הקודמת מחזירה את השם של חשבון השירות. משתמשים בשם הזה של חשבון השירות במהלך התהליך שמתואר במאמר מתן גישה למפתח לחשבון השירות.

יצירת מפתח

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

כדי ליצור מפתח Cloud KMS:

המסוף

  1. נכנסים לדף Cryptographic keys במסוף Google Cloud .
  2. לוחצים על Create key ring (יצירת מחזיק מפתחות).
  3. מוסיפים שם לצרור המפתחות. חשוב לשים לב לשם הזה כי תצטרכו אותו כשתעניקו למפתח גישה לחשבון השירות.
  4. מוסיפים מיקום של אוסף מפתחות.
  5. לוחצים על יצירה. ייפתח הדף Create key.
  6. מוסיפים שם מפתח.
  7. בוחרים מטרה (סימטרית או אסימטרית).
  8. בוחרים תקופת רוטציה ותאריך התחלה.
  9. לוחצים על יצירה.
  10. בטבלה Keys, לוחצים על סמל האפשרויות הנוספות (3 נקודות) בעמודה האחרונה ובוחרים באפשרות Copy Resource ID או רושמים את המזהה. זהו KMS_KEY_ID. תצטרכו את KMS_KEY_ID כדי להעניק למפתח גישה לחשבון השירות.

gcloud

  1. יוצרים אוסף מפתחות חדש.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    חשוב לרשום את השם הזה כי תצטרכו אותו כשמעניקים למפתח גישה לחשבון השירות.
  2. יוצרים מפתח באוסף המפתחות.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    חשוב לרשום את השם הזה כי תצטרכו אותו כשמעניקים למפתח גישה לחשבון השירות.

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

צריך לבצע את התהליך הזה רק אם משתמשים ב-gcloud או ב-API.

כדי להעניק גישה לחשבון השירות, משתמשים בקוד הבא:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

יצירת מקור נתונים ב-Datastream באמצעות CMEK

במסגרת יצירת מקור נתונים ב-Datastream, אתם יכולים להשתמש ב-CMEK כדי לנהל את ההצפנה של הנתונים.

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