מפתחות הצפנה בניהול הלקוח (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. פותחים את מסוף Conversational Agents.
  2. בוחרים את הפרויקט הרצוי.
  3. בוחרים את הסוכן.
  4. בתפריט הניווט, לוחצים על Settings (הגדרות) ועוברים לכרטיסייה Security (אבטחה).
  5. לוחצים על Manage Security Settings כדי לעבור אל מסוף CCAI.
  6. במסוף CCAI, נכנסים לכרטיסייה CMEK.
  7. לוחצים על בדיקה או יצירה של חשבון שירות.
  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. מדביקים את שם המשאב של המפתח שהעתקתם בשדה Key של המיקום שבו רוצים להפעיל את CMEK.
  3. לוחצים על Save.

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

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

כשיוצרים נציג, מציינים את המיקום שלו ואם להשתמש ב- Google-managed encryption key או ב-CMEK במיקום הזה.

הגדרת CMEK באמצעות CLI

לחלופין, אתם יכולים להשתמש בפקודות הבאות כדי להגדיר 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.
  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. \
     --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 או להסיר ממפתח ה-KMS את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter של חשבון השירות.

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