כברירת מחדל, חיפוש מבוסס סוכנים מצפין את התוכן של הלקוחות במנוחה. חיפוש מבוסס סוכנים מטפל בהצפנה בשבילכם, בלי שתצטרכו לבצע פעולות נוספות. האפשרות הזו נקראת הצפנת ברירת המחדל של Google.
אם אתם רוצים לשלוט במפתחות ההצפנה שלכם, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) ב-Cloud KMS עם שירותים שמשולבים עם CMEK, כולל חיפוש מבוסס סוכנים. שימוש במפתחות Cloud KMS מאפשר לכם לשלוט ברמת ההגנה, במיקום, בלוח הזמנים של הרוטציה, בשימוש ובהרשאות הגישה, ובגבולות הקריפטוגרפיים. שימוש ב-Cloud KMS מאפשר גם לעקוב אחרי השימוש במפתחות, לצפות ביומני ביקורת ולשלוט במחזורי החיים של המפתחות. במקום ש-Google תהיה הבעלים של המפתחות הסימטריים להצפנת מפתחות (KEK) שמגנים על הנתונים שלכם ותנהל אותם, אתם שולטים במפתחות האלה ומנהלים אותם ב-Cloud KMS.
אחרי שמגדירים את המשאבים עם מפתחות CMEK, חוויית הגישה למשאבים של חיפוש מבוסס סוכנים דומה לשימוש בהצפנה שמוגדרת כברירת מחדל ב-Google. מידע נוסף על אפשרויות ההצפנה זמין במאמר מפתחות הצפנה בניהול הלקוח (CMEK).
מגבלות של Cloud KMS בחיפוש מבוסס סוכנים
המגבלות הבאות חלות על מפתחות CMEK (Cloud KMS) ב-חיפוש מבוסס סוכנים:
- אי אפשר לשנות מפתחות שכבר הוחלו על מאגר נתונים, אבל אפשר לבצע סבב של גרסאות מפתחות.
- חובה להשתמש במאגרי נתונים ובאפליקציות רב-אזוריים בארה"ב או באיחוד האירופי (ולא גלובליים). מידע נוסף על אזורים מרובים ועל מיקום נתונים, כולל מגבלות שקשורות לשימוש במיקומים לא גלובליים, זמין במאמר בנושא מיקומים.
אם אתם צריכים לרשום יותר ממפתח אחד לפרויקט, פנו לצוות של חשבון Google שלכם כדי לבקש להגדיל את המכסה של הגדרות CMEK, וציינו למה אתם צריכים יותר ממפתח אחד.
השימוש במנהל מפתחות חיצוני (EKM) עם CMEK זמין לכולם עם רשימת היתרים. כדי להשתמש ב-EKM עם CMEK, צריך לפנות לצוות של חשבון Google.
ההגבלות הבאות חלות על EKM או HSM עם CMEK:
לפחות 1,000 QPM של headroom צריכים להיות זמינים במכסת ה-EKM וה-HSM שלכם עבור קריאות הצפנה ופענוח. במאמר בדיקת המכסות של Cloud KMS מוסבר איך לבדוק את המכסות.
אם משתמשים ב-EKM, צריך לוודא שאפשר לגשת למפתח ביותר מ-90% מחלון זמן כלשהו שאורכו יותר מ-30 שניות. אם לא ניתן להגיע למפתח למשך הזמן הזה, הדבר עלול להשפיע לרעה על ההוספה לאינדקס ועל עדכניות החיפוש.
אם יש בעיות בחיוב, בעיות חוזרות ונשנות בחריגה מהמכסה או בעיות חוזרות ונשנות בגישה למשך יותר מ-12 שעות, השירות משבית באופן אוטומטי את CmekConfig שמשויך למפתח EKM או HSM.
- לא ניתן להגן באמצעות מפתח על מאגרי נתונים שנוצרו לפני שהמפתח נרשם בפרויקט.
- אי אפשר לשפר את המודלים של חיפוש במאגרי נתונים שמוגנים באמצעות מפתחות.
- באפליקציות עם כמה מאגרי נתונים, אם מאגר נתונים אחד משתמש בהגדרת CMEK, כל שאר מאגרי הנתונים חייבים להשתמש באותה הגדרת CMEK.
כדי להשתמש בחיפוש מבוסס סוכנים, נדרשת מהדורת Enterprise. למידע על מהדורת Enterprise, אפשר לעיין במאמר מידע על תכונות מתקדמות.
מחברים מאינטראקציה ישירה (First-Party) לא תואמים ל-CMEK, למעט מאגרי הנתונים 'ייבוא חד-פעמי' ו'מחזורי' ב-BigQuery וב-Cloud Storage.
מאגרי נתונים של חיפושים בתחום הבריאות ומחברים של צד שלישי תואמים ל-CMEK. מידע כללי על מאגרי נתונים של מידע רפואי זמין במאמר יצירת מאגר נתונים של מידע רפואי. מידע על הפיכת מחברים של צד שלישי לתואמים ל-CMEK זמין במאמר מידע על מפתחות של אזור יחיד למחברים של צד שלישי.
המפתחות לא חלים על ממשקי ה-API הבאים של RAG כי ממשקי ה-API האלה לא מאחסנים תוכן במצב מנוחה: check grounding, grounded generation ו-ranking.
- אי אפשר להשתמש ב-Terraform כדי להגדיר CMEK לחיפוש מבוסס סוכנים.
מידע על מפתחות של אזור יחיד למחברים של צד שלישי
אם אתם משתמשים במחברים של צד שלישי ורוצים להשתמש במפתחות משלכם כדי להגן על הנתונים המחוברים, אתם צריכים ליצור שלושה מפתחות נוספים של אזור יחיד בנוסף למפתח של מספר אזורים. הפקודות ליצירת מפתחות מפורטות בהליך הבא, רישום מפתח Cloud KMS.
צריך ליצור את המפתחות הבודדים לאזורים הבאים:
| במספר אזורים | אזור יחיד | ||
|---|---|---|---|
eu |
europe-west1 |
europe-west4 |
europe-north1 |
us |
us-east1 |
us-central1 |
us-west1 |
לפני שמתחילים
צריך לוודא שמתקיימות הדרישות המוקדמות הבאות:
יוצרים מפתח סימטרי של Cloud KMS שכולל מספר אזורים. מידע נוסף זמין במאמרים בנושא יצירת אוסף מפתחות ויצירת מפתח במסמכי התיעוד של Cloud KMS.
מגדירים את תקופת הרוטציה לNever (Manual rotation) (אף פעם (רוטציה ידנית)).
בשדה Location, בוחרים באפשרות Multi-region, ובתפריט הנפתח בוחרים באפשרות europe או us.
התפקיד CryptoKey Encrypter/Decrypter ב-IAM (
roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח הוענק לסוכן השירות של Discovery Engine. לחשבון סוכן השירות יש כתובת אימייל בפורמט הבא:service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com. הוראות כלליות להוספת תפקיד לסוכן שירות מופיעות במאמר הענקת תפקיד יחיד או ביטול ההרשאה שלו.התפקיד CryptoKey Encrypter/Decrypter ב-IAM (
roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח הוענק לסוכן השירות של Cloud Storage. אם התפקיד הזה לא מוענק, ייבוא נתונים למאגרי נתונים שמוגנים באמצעות CMEK ייכשל כי Discovery Engine לא יכול ליצור את הדלי הזמני ואת הספרייה שמוגנים באמצעות CMEK, שנדרשים לייבוא.אל תיצרו מאגרי נתונים או אפליקציות שאתם רוצים שהמפתח ינהל עד שתסיימו את ההוראות לרישום המפתח בדף הזה.
- התכונות של מהדורת Enterprise מופעלות באפליקציה. כך מפעילים או משביתים את מהדורת Enterprise.
רישום מפתח Cloud KMS
כדי להצפין נתונים באמצעות CMEK, צריך לרשום את המפתח הרב-אזורי. אם הנתונים שלכם צריכים מפתחות של אזור יחיד, למשל כשמשתמשים במחברים של צד שלישי, אתם צריכים לרשום את המפתחות של האזור היחיד.
לפני שמתחילים
חשוב לוודא את הדברים הבאים:
- האזור לא מוגן כבר על ידי מפתח. התהליך שמתואר בהמשך ייכשל אם מפתח כבר רשום לאזור באמצעות פקודת REST. כדי לבדוק אם יש מפתח פעיל בחיפוש מבוסס סוכנים במיקום מסוים, אפשר לעיין במאמר בנושא הצגת מפתחות Cloud KMS.
- יש לכם את התפקיד אדמין של Discovery Engine (
roles/discoveryengine.admin).
התהליך
REST
כדי לרשום מפתח משלכם לחיפוש מבוסס סוכנים:
מבצעים קריאה ל-
UpdateCmekConfigעם המפתח שרוצים לרשום.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"kmsKey":"projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"}' \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"מחליפים את מה שכתוב בשדות הבאים:
-
KMS_PROJECT_ID: מזהה הפרויקט שמכיל את המפתח. מספר הפרויקט לא יעבוד. -
KMS_LOCATION: האזור המרובה של המפתח:usאוeurope. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
KEY_NAME: השם של המפתח. -
PROJECT_ID: מזהה הפרויקט שמכיל את מאגר הנתונים. -
LOCATION: האזור המרובה של מאגר הנתונים:usאוeu. -
CMEK_CONFIG_ID: הגדרת מזהה ייחודי למשאב CmekConfig, לדוגמה,default_cmek_config. -
SET_DEFAULT: מוגדר ל-trueכדי להשתמש במפתח כמפתח ברירת המחדל עבור מאגרי נתונים עתידיים שייווצרו באחסון במספר אזורים.
-
אופציונלי: רושמים את הערך
nameשמוחזר על ידי השיטה ופועלים לפי ההוראות במאמר קבלת פרטים על פעולה ממושכת כדי לראות מתי הפעולה הושלמה.בדרך כלל לוקח כמה דקות לרשום מפתח.
אחרי שהפעולה מסתיימת, מאגרי נתונים חדשים באזור הרב-אזורי הזה מוגנים על ידי המפתח. מידע כללי על יצירת מאגרי נתונים זמין במאמר מידע על אפליקציות ומאגרי נתונים.
המסוף
התהליך
כדי לרשום מפתח משלכם לחיפוש מבוסס סוכנים:
נכנסים לדף AI Applications במסוף Google Cloud .
לוחצים על הגדרות ובוחרים בכרטיסייה CMEK.
לוחצים על הוספת מפתח למיקום us או eu.
לוחצים על 'הוספת מפתח'. לוחצים על התפריט הנפתח Select a Cloud KMS key ובוחרים את המפתח.
אם המפתח נמצא בפרויקט אחר, לוחצים על החלפת פרויקט, לוחצים על שם הפרויקט, מקלידים את שם המפתח שיצרתם ובוחרים את המפתח.
אם אתם יודעים את שם המשאב של המפתח, לוחצים על הזנה ידנית, מדביקים את שם המשאב של המפתח ולוחצים על שמירה.
לוחצים על אישור > שמירה.
המפתח נרשם ונוצר CmekResource בשם default_cmek_config.
יכול להיות שיחלפו כמה שעות עד שהנתונים שהוטמעו יופיעו בתוצאות החיפוש.
צפייה במפתחות Cloud KMS
כדי לראות מפתח רשום לחיפוש מבוסס סוכנים, מבצעים אחת מהפעולות הבאות:
אם יש לכם את שם המשאב CmekConfig, אתם יכולים להשתמש בשיטה
GetCmekConfig:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור המרובה של מאגר הנתונים:usאוeu. -
PROJECT_ID: מזהה הפרויקט שמכיל את הנתונים. -
CMEK_CONFIG_ID: המזהה של משאב CmekConfig. אם רשמתם את המפתח באמצעות המסוף, המזהה הואdefault_cmek_config.
דוגמה לקריאת curl ותגובה:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
{ "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true }-
אם אין לכם את שם המשאב CmekConfig, צריך לקרוא לשיטה
ListCmekConfigs:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs"מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור המרובה של מאגר הנתונים: usאוeu. -
PROJECT_ID: מזהה הפרויקט שמכיל את הנתונים.
דוגמה לקריאת curl ותגובה:
$ curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs"
{ "cmek_configs": [ { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true } ] }-
ביטול הרישום של מפתח Cloud KMS
כדי לבטל את הרישום של המפתח בחיפוש באמצעות סוכן:
קוראים לשיטה
DeleteCmekConfigעם שם המשאב CmekConfig שרוצים לבטל את הרישום שלו.curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור המרובה של מאגר הנתונים: usאוeu. -
PROJECT_ID: מזהה הפרויקט שמכיל את מאגר הנתונים. -
CMEK_CONFIG_ID: המזהה של משאב CmekConfig. אם רשמתם את המפתח באמצעות המסוף, המזהה הואdefault_cmek_config.
דוגמה לקריאת curl ותגובה:
$ curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config" { "name": "projects/my-ai-app-project-123/locations/us/operations/delete-cmek-config-56789", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.DeleteCmekConfigMetadata" } }-
אופציונלי: רושמים את הערך
nameשמוחזר על ידי השיטה ופועלים לפי ההוראות במאמר קבלת פרטים על פעולה ממושכת כדי לראות מתי הפעולה מסתיימת.מחיקה של CmekConfig היא פעולה ארוכת טווח שיכולה להימשך עד כמה ימים. הסיבה לכך היא שהמשאבים המוצפנים הבסיסיים מבוטלים באופן מלא לפני שמסירים את CmekConfig.
אימות של הגנה על מאגר נתונים באמצעות מפתח
מאגרי נתונים שנוצרו אחרי רישום המפתח מוגנים על ידי המפתח. כדי לוודא שמאגר נתונים מסוים מוגן על ידי המפתח שלכם, פועלים לפי השלבים הבאים:
מריצים את פקודת ה-curl הבאה במאגר הנתונים:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID"מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור המרובה של מאגר הנתונים:usאוeu. -
PROJECT_ID: מזהה הפרויקט שמכיל את מאגר הנתונים. -
DATA_STORE_ID: המזהה של מאגר הנתונים.
דוגמה לקריאת curl:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H "x-goog-user-project: my-ai-app-project-123" "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/dataStores/my-data-store-1"
-
בודקים את הפלט של הפקודה: אם השדה
cmekConfigמופיע בפלט והשדהkmsKeyמציג את המפתח שרשמתם, מאגר הנתונים מוגן על ידי המפתח.דוגמה לתגובה:
{ "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1", "displayName": "my-data-store-1", "industryVertical": "GENERIC", "createTime": "2023-09-05T21:20:21.520552Z", "solutionTypes": [ "SOLUTION_TYPE_SEARCH" ], "defaultSchemaId": "default_schema", "cmekConfig": { "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config", "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" } }
נתונים אחרים שמוגנים על ידי מפתח Cloud KMS
בנוסף לנתונים במאגרי הנתונים, המפתחות יכולים להגן על סוגים אחרים של מידע ליבה בבעלות האפליקציה שמאוחסן בחיפוש מבוסס סוכנים, כמו נתוני הסשן שנוצרו במהלך חיפוש עם שאלות המשך. המידע הבסיסי הזה מוגן באמצעות CMEK אם מאגרי הנתונים שמשויכים לאפליקציה מוגנים באמצעות CMEK.
עם זאת, אי אפשר להריץ פקודה ספציפית כדי לוודא שהסשנים מוגנים. אם מריצים את הפקודה Verify that a data store is protected by a key (אימות של מאגר נתונים שמוגן באמצעות מפתח) ורואים את המפתח במשאב cmekConfig, אפשר לדעת שנתוני הסשנים מוגנים.
החלפת מפתחות Cloud KMS
כשמבצעים רוטציה למפתחות, יוצרים גרסה חדשה של המפתח ומגדירים את הגרסה החדשה כגרסה הראשית. כדאי להשאיר את הגרסה המקורית של המפתח מופעלת למשך זמן מה לפני שמשביתים אותה. כך ניתנת לכל הפעולות ארוכות הטווח שאולי משתמשות במפתח הישן אפשרות להסתיים.
בקטעים הבאים מפורטים השלבים להחלפת מפתחות עבור מאגר נתונים של חיפוש מבוסס סוכנים. מידע כללי על רוטציית מפתחות זמין במאמר רוטציית מפתחות במדריך Cloud KMS.
חשוב: אל תבצעו רוטציה של מפתחות במאגרי נתונים שמשויכים לאפליקציות של המלצות או לאפליקציות שזקוקות לניתוח נתונים, ואל תבצעו רוטציה של מפתחות של אזור יחיד שמשמשים למחברים של צד שלישי. אפשר לעיין במגבלות של Cloud KMS ב-Agent Search.
צריך לרשום מחדש את המפתח. כדי לעשות זאת, חוזרים על שלב 1 של רישום מפתח Cloud KMS.
בקטע ניהול מפתחות במדריך Cloud KMS מפורטות הוראות לביצוע הפעולות הבאות:
יוצרים גרסה חדשה של המפתח, מפעילים אותה והופכים אותה לראשית.
אחרי שהמפתח החדש הופך לראשי, המסמכים במאגר הנתונים מוצפנים מחדש באמצעות המפתח החדש, וכל מסמך שנוסף למאגר הנתונים מוצפן באמצעות המפתח החדש.
משאירים את הגרסה הישנה יותר של המפתח מופעלת.
אחרי שבוע בערך, משביתים את הגרסה הישנה יותר של המפתח ומוודאים שהכול פועל כמו קודם.
בשלב מאוחר יותר, כשתהיו בטוחים שהשבתת גרסת המפתח הישנה לא גרמה לבעיות, תוכלו להשמיד את גרסת המפתח הישנה.
אם מפתח Cloud KMS מושבת או מבוטל
אם מפתח מושבת או שההרשאות שלו מבוטלות, מאגר הנתונים מפסיק לקבל נתונים ולהציג נתונים תוך 15 דקות. עם זאת, הפעלה מחדש של מפתח או שחזור הרשאות לוקחים הרבה זמן. יכול להיות שיחלפו עד 24 שעות לפני שמאגר הנתונים יוכל לחזור להציג נתונים.
לכן, לא כדאי להשבית מקש אלא אם יש צורך בכך. השבתה והפעלה של מפתח במאגר נתונים הן פעולות שלוקחות זמן. לדוגמה, אם מעבירים מפתח שוב ושוב בין מצב מושבת למצב מופעל, ייקח הרבה זמן עד שמאגר הנתונים יגיע למצב מוגן. השבתה של מפתח והפעלה מחדש שלו מיד לאחר מכן עלולה לגרום להשבתה של המפתח למשך ימים, כי המפתח מושבת קודם ממאגר הנתונים ואז מופעל מחדש.
פתרון בעיות: שגיאה 'לא נמצאו פרויקטים של מפתח KMS'
תסמין: כשמנסים ליצור מאגר נתונים באמצעות מפתח KMS, מקבלים שגיאה שדומה לשגיאה הבאה:
KMS key projects/[...] not found for location: [...] and project number: [...]
הבעיה: הודעת השגיאה הזו עלולה להטעות. זה לא בהכרח אומר שהמפתח לא קיים. במקום זאת, יכול להיות שהיא מציינת שמפתח ה-KMS לא נרשם לשימוש בחיפוש מבוסס סוכנים במיקום שצוין.
פתרון: כדי לפתור את הבעיה, צריך לרשום את המפתח לפי השלבים במאמר רישום המפתח של Cloud KMS. אחרי שההרשמה תושלם, תוכלו ליצור מאגרי נתונים שמוגנים על ידי המפתח הזה.