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

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

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

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

נתונים מוגנים

אתם יכולים להגן על כל הנתונים במצב מנוחה של סוכן Dialogflow CX באמצעות CMEK.

מגבלות

  • רוטציית מפתחות נתמכת, אבל הצפנה מחדש של נתונים לא נתמכת. אין תמיכה בהצפנה מחדש של נתונים שהוצפנו בעבר באמצעות גרסה חדשה של מפתח.
  • אין תמיכה באזורים הבאים:
    • global
  • צריך להשתמש במפתח אחד לכל מיקום פרויקט.
  • כדי לשחזר סוכן עם CMEK מופעל, צריך לבחור באפשרות Cloud Storage.
  • אי אפשר לשלב CMEK במשאבים קיימים בפרויקטים שלא משולב בהם CMEK באופן רטרואקטיבי. במקום זאת, מייצאים משאבים ומבצעים שחזור בפרויקט חדש עבור CMEK.
  • ל-Vertex AI Agent Builder יש כמה מגבלות של Cloud Key Management Service.

יצירת מפתחות

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

  • בוחרים את המיקום שבו משתמשים בסוכן, כי הבקשות ייכשלו אם המיקומים לא יהיו זהים.

זיהוי חשבון השירות של Dialogflow

כדי לזהות את חשבון השירות של Dialogflow:

  1. פותחים את מסוף הצ'אט בוטים.
  2. בוחרים את הפרויקט הרצוי.
  3. בוחרים את הסוכן.
  4. בתפריט הניווט, לוחצים על הגדרות ואז עוברים לכרטיסייה אבטחה.
  5. לוחצים על ניהול הגדרות האבטחה כדי לעבור אל מסוף CCAI.
  6. במסוף CCAI, עוברים לכרטיסייה CMEK.
  7. לוחצים על Check or create service account (בדיקה או יצירה של חשבון שירות).
  8. שימו לב לשם של חשבון השירות שמוצג (לדוגמה, service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com).

מתן הרשאות לחשבון השירות

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

  1. עוברים אל הדף של Cloud KMS.
  2. בוחרים את אוסף המפתחות שיצרתם.
  3. בוחרים את המפתח שיצרתם באוסף המפתחות.
  4. עוברים לכרטיסייה Permissions.
  5. לוחצים על הענקת גישה.
  6. בשדה New principals, מזינים את חשבון השירות של Dialogflow שזיהיתם בשלב הקודם.
  7. ברשימה Select a role בוחרים באפשרות Cloud KMS CryptoKey Encrypter/Decrypter.
  8. לוחצים על Save.

מעתיקים את שם המשאב העיקרי.

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

  1. עוברים לדף הפרטים של מפתח ה-KMS.
  2. לוחצים על התפריט פעולה ובוחרים באפשרות העתקת שם המשאב.

הפעולה הזו מעתיקה את הנתיב המלא של מפתח ה-KMS (לדוגמה, projects/<var>PROJECT_ID</var>/locations/<var>LOCATION_ID</var>/keyRings/<var>KEY_RING</var>/cryptoKeys/<var>KEY_ID</var>).

הפעלת CMEK ב-Dialogflow

כדי להפעיל את CMEK ב-Dialogflow:

  1. חוזרים לכרטיסייה CMEK במסוף CCAI.
  2. מדביקים את שם מקום האחסון של המפתח שהעתקתם בשדה מפתח במיקום שבו רוצים להפעיל את CMEK.
  3. לוחצים על Save.

הפעולה הזו מפעילה פעולה ארוכת טווח (LRO) כדי להפעיל CMEK במיקום שנבחר. התהליך הזה נמשך 2-3 דקות.

הגדרת סוכן לשימוש במפתחות

כשיוצרים סוכן, צריך לציין את המיקום שלו ואם להשתמש ב- Google-managed encryption key או ב-CMEK עבור המיקום הזה.

שימוש ב-CLI להגדרת CMEK

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

  1. משתמשים ב-Google Cloud CLI כדי ליצור את חשבון השירות של CCAI CMEK לפרויקט. מידע נוסף מופיע במסמכי התיעוד בנושא זהויות בשירותי gcloud.

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

    חשבון השירות נוצר. הוא לא מוחזר בתשובת היצירה, אבל הפורמט שלו הוא:

     service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
  2. צריך להעניק לחשבון השירות של CCAI CMEK את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter כדי לאפשר לשירות להצפין ולפענח באמצעות המפתח שלכם.

     gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
     --project=PROJECT_ID \
     --location=LOCATION_ID \
     --keyring=KMS_KEY_RING \
     --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
     --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

שימוש ב-API כדי להגדיר מפתח ולבדוק את ההגדרות

  1. כדי להגדיר מפתח למיקום של Dialogflow CX, קוראים ל-API‏ InitializeEncryptionSpec ומספקים את המשתנים הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION_ID: המיקום שבו בוחרים להפעיל CMEK ב-Dialogflow CX.
    • KMS_KEY_RING: אוסף המפתחות שבו נוצר מפתח ה-KMS. המיקום באוסף המפתחות, כמו projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING, צריך להיות זהה למיקום שבו מפעילים את CMEK.
    • KMS_KEY_ID: השם של מפתח ה-KMS שמשמש להצפנה ולפענוח של נתוני Dialogflow CX במיקום שנבחר.

    לדוגמה:

     curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    תגובת ה-JSON תהיה דומה לזו:

     {
       "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
     }
  2. כדי לקבל את התוצאה של הפעולה הממושכת (LRO), קוראים ל-API‏ GetOperation.

    לדוגמה:

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
  3. כדי לאחזר את מפתח ההצפנה שהוגדר למיקום, שולחים קריאה ל-API‏ GetEncryptionSpec.

    לדוגמה:

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"

ביטול מפתחות

כדי לבטל את הגישה של Dialogflow CX למפתח, אפשר להשבית את הגרסה של מפתח ה-KMS או להסיר את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter של חשבון השירות ממפתח ה-KMS.

אחרי ביטול המפתח, אי אפשר יותר לגשת לנתונים המוצפנים ב-Dialogflow CX, והשירות לא יפעל עד שההרשאות של המפתח יוחזרו.