בדרך כלל, ארגונים מנהלים זהויות (משתמשים וקבוצות משתמשים) באמצעות ספק זהויות (IDP). אבל, אפליקציות בהתאמה אישית שארגון פיתח בעצמו יכולות לאפשר ללקוחות ליצור קבוצות משתמשים חדשות שמוגדרות באופן מקומי באפליקציה הזו. קבוצות המשתמשים הספציפיות לאפליקציה או מזהי המשתמש המשניים האלה נקראים זהויות חיצוניות.
למה כדאי להגדיר מיפוי זהויות?
כדי לוודא ש-Google יכולה לאכוף את בקרת הגישה בצורה נכונה, צריך למפות את הזהויות של ספק הזהויות לכל זהות חיצונית מהאפליקציות בהתאמה אישית שמתכננים להשתמש בהן עם Gemini Enterprise.
כדי להחיל בקרת גישה על תוצאות של אפליקציות, Google משתמשת ב-IdP כמקור האמת כדי לקבוע לאילו נתונים יש למשתמשים שלכם גישה. ארגונים רבים מחברים את ה-IdP שלהם לפתרונות SaaS אחרים, כדי שהעובדים יוכלו להשתמש בקבוצה אחת של פרטי כניסה ארגוניים כדי להיכנס לכל משאבי החברה ולגשת אליהם.
אם יש לכם זהויות חיצוניות שמוגדרות דרך אפליקציות שאתם מתכננים לחבר לאפליקציה שלכם, כמו אפליקציות בהתאמה אישית, אז ספק הזהויות הוא לא מקור המידע היחיד לבקרת גישה.
לדוגמה, נניח ש-JaneDoe נמצאת בארגון Example, עם הדומיין example.com. המזהה ב-IDP מוגדר כ-JaneDoe@example.com. לאותו משתמש יש מזהה נפרד באפליקציה מותאמת אישית, והוא JDoe. יכול להיות שספק הזהויות לא מודע למזהה הזה. לכן, Gemini Enterprise לא מקבל מידע על מזהי האפליקציה המותאמת אישית דרך ספק הזהויות.
ב-Gemini Enterprise, מיפויי הזהויות מאוחסנים במאגר מיפויי זהויות שיוצרים ומייבאים אליו את המיפויים. אם אתם מתכננים להשתמש במחבר מותאם אישית, אתם יכולים לקשר את מאגר מיפוי הזהויות למאגר הנתונים של המחבר המותאם אישית, ואז לעדכן את מטא-הנתונים של רשימת בקרת הגישה של מאגר הנתונים במידע על הזהויות החיצוניות שלכם.
לפני שמתחילים
לפני שמגדירים מיפוי זהויות, צריך לחבר את ספק הזהויות לפרויקט ב- Google Cloud .
הכנת רשומות של מיפוי זהויות
מכינים את הרשומות של מיפוי הזהויות לייבוא. הפורמט של מיפוי הזהויות צריך להיות כמו בדוגמה הבאה:
{
"identity_mapping_entries": [
{
"external_identity": "u1",
"user_id": "user1@example.com"
},
{
"external_identity": "u2",
"user_id": "user2@example.com"
},
{
"external_identity": "gABC",
"group_id": "groupABC@example.com"
}
]
}
לדוגמה, התרשים הבא מייצג חברות בקבוצת משתמשים לדוגמה, שבה Ext מייצג קבוצות חיצוניות. בתרשים הזה מוצגת דוגמה לקשר בין קבוצות חיצוניות לבין משתמשים וקבוצות ב-IDP.

המיפוי של תרשים החברות בקבוצת המשתמשים הזו ייראה כך:
{
"identity_mapping_entries": [
{
"external_identity": "Ext1",
"user_id": "IDPUser1@example.com"
},
{
"external_identity": "Ext2",
"user_id": "IDPUser1@example.com"
},
{
"external_identity": "Ext2",
"user_id": "IDPUser2@example.com"
},
{
"external_identity": "Ext3",
"user_id": "IDPUser2@example.com"
},
{
"external_identity": "Ext3",
"group_id": "IDPGroup1@example.com"
},
{
"external_identity": "Ext3",
"group_id": "IDPGroup2@example.com"
}
]
}
צריך לשטח חברויות של זהויות מוטמעות, שבהן לזהויות חיצוניות יש זהויות צאצא.
Google מניחה שהמחבר שולח מזהה ראשי של זהות חיצונית. לדוגמה, ייבאו את מזהה הקבוצה במקום את שם הקבוצה, כי השם יכול להשתנות במהלך חיי הקבוצה באפליקציה בהתאמה אישית.
הגדרת מיפוי זהויות
כדי להגדיר מיפוי זהויות ב-Gemini Enterprise בין ספק הזהויות לבין הזהויות החיצוניות, צריך לפעול לפי השלבים הבאים. בשלבים הבאים תיצרו מאגר מיפוי זהויות ותייבאו את מיפויי הזהויות שהכנתם. אם אתם מתכננים להשתמש במחבר מותאם אישית, תצטרכו גם ליצור מאגר נתונים חדש שמשויך למאגר מיפוי הזהויות.
יצירת מאגר למיפוי זהויות
השלב הראשון הוא להגדיר מאגר למיפוי זהויות. זהו משאב האב שבו מאוחסנים כל מיפויי הזהויות.
כשיוצרים את מאגר מיפוי הזהויות, הוא מאחזר באופן אוטומטי את הגדרת ה-IDP מה-IDP שחיברתם לפרויקט ב-Gemini Enterprise.
כדי ליצור מאגר למיפוי זהויות, מריצים את הפקודה הבאה באמצעות השיטה
identityMappingStores.create:curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores?identityMappingStoreId=IDENTITY_MAPPING_STORE_ID" \ -d '{ "name": "projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID" }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. לדוגמה,test-id-mapping-store.
-
ייבוא של מיפוי זהויות
אחרי שיוצרים את מאגר מיפוי הזהויות, מייבאים את רשומות מיפוי הזהויות שהכנתם. אתם יכולים לייבא מיפויי זהויות באמצעות מקור מוטבע (אפשרות 1) או מ-Cloud Storage (אפשרות 2).
כשמייבאים מ-Cloud Storage, הפורמטים והאילוצים הבאים חלים:
- פורמטים מותרים: קובצי הקלט צריכים להיות בפורמט NDJSON (
.ndjson) או JSON Lines (.jsonl), כאשר כל שורה מייצגת רשומה אחת של מיפוי זהויות. - מגבלות על גודל הקובץ: כל קובץ לא יכול להיות גדול מ-2GB.
- מגבלות על מספר מיפויי הזהויות: אפשר לייבא עד
500,000מיפויי זהויות חיצוניות בפעולת ייבוא. - הגבלות על מספר הקבצים: אפשר לציין עד
2,000קבצים ברשימהinputUris. אם משתמשים בתווים כלליים לחיפוש, המגבלה חלה על המספר הכולל של הקבצים אחרי הרחבת התווים הכלליים לחיפוש.
אפשרות 1: ייבוא באמצעות מקור מוטבע
כדי לייבא את מיפויי הזהויות באמצעות מקור מוטבע, מריצים את הפקודה הבאה באמצעות השיטה
importIdentityMappings:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -H "x-goog-user-project: PROJECT_ID" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/identityMappingStores/IDENTITY_MAPPING_STORE_ID:importIdentityMappings" \ -d '{"inline_source" : IDENTITY_MAPPINGS_JSON}'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
ENDPOINT_LOCATION: האזור הגיאוגרפי של בקשת ה-API. מציינים אחד מהערכים הבאים:-
usלאזור הגיאוגרפי שכולל מספר אזורים בארה"ב -
euעבור מספר אזורים באיחוד האירופי -
globalלמיקום הגלובלי
-
-
LOCATION: האזור הגיאוגרפי של מאגר הנתונים:global,usאוeu -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
IDENTITY_MAPPINGS_JSON: מיפויי הזהויות שהוכנו בפורמט JSON.
-
אם אתם מתכננים ליצור מחבר בהתאמה אישית ולהשתמש בזהויות חיצוניות, כדאי לעבור אל קישור מאגרי נתונים בהתאמה אישית למאגר מיפוי הזהויות. אם לא, דלגו אל עדכון המטא-נתונים של רשימת ה-ACL.
אפשרות 2: ייבוא מ-Cloud Storage
כדי לייבא את מיפויי הזהויות מ-Cloud Storage, מריצים את הפקודה הבאה באמצעות השיטה
importIdentityMappings:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -H "x-goog-user-project: PROJECT_ID" \ "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/identityMappingStores/IDENTITY_MAPPING_STORE_ID:importIdentityMappings" \ -d '{ "gcsSource": { "inputUris": ["gs://BUCKET_NAME/FILE_PATH"] }, "errorConfig": { "gcsPrefix": "gs://BUCKET_NAME/ERROR_DIR" }, "reconciliationMode": "FULL" }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
ENDPOINT_LOCATION: האזור הגיאוגרפי של בקשת ה-API. מציינים אחד מהערכים הבאים:-
usלאזור הגיאוגרפי שכולל מספר אזורים בארה"ב -
euעבור מספר אזורים באיחוד האירופי -
globalלמיקום הגלובלי
-
-
LOCATION: האזור המרובה של מאגר הנתונים:global,usאוeu -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
BUCKET_NAME: שם הקטגוריה של Cloud Storage. -
FILE_PATH: הנתיב לקובץ מיפוי הזהויות ב-Cloud Storage. -
ERROR_DIR: הספרייה ב-Cloud Storage שבה יאוחסנו יומני השגיאות.
-
אם אתם מתכננים ליצור מחבר בהתאמה אישית ולהשתמש בזהויות חיצוניות, עברו אל קישור מאגרי נתונים בהתאמה אישית למאגר מיפוי הזהויות. אחרת, מדלגים אל עדכון מטא-נתונים של ACL.
קישור של מאגרי נתונים מותאמים אישית למאגר מיפוי הזהויות
ההליך הזה נדרש רק אם אתם בונים מחבר בהתאמה אישית. אם אתם לא יוצרים מחבר בהתאמה אישית, דלגו על השלב הזה.
במחברים בהתאמה אישית, צריך לקשר את מאגר מיפוי הזהויות למאגר הנתונים לפני שאפשר לשייך זהות חיצונית למסמכים שלה. אפשר להגדיר את השדה הזה רק כשיוצרים את מאגר הנתונים.
כדי לקשר מאגר נתונים למאגר מיפוי הזהויות, צריך לציין את
identity_mapping_storeכשיוצרים את מאגר הנתונים באמצעות השיטהDatastores.create.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID \ -d '{ ... "identity_mapping_store": "IDENTITY_MAPPING_STORE_NAME" }'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
DATA_STORE_ID: המזהה של מאגר הנתונים שרוצים ליצור. המזהה יכול להכיל רק אותיות קטנות, ספרות, קווים תחתונים ומקפים. -
IDENTITY_MAPPING_STORE_NAME: שם המשאב המלא של מאגר מיפוי הזהויות. לדוגמה,projects/exampleproject/locations/global/identityMappingStores/test-id-mapping-store. אחרי שיוצרים מאגר נתונים, אי אפשר לעדכן את השם שלו.
-
הוספת מטא-נתונים של ACL
כוללים מטא-נתונים של ACL באובייקט AclInfo של המסמכים.
כשמשתמש שולח בקשת חיפוש ומאחזר מסמכים שהמטא-נתונים של ה-ACL שלהם כוללים זהויות חיצוניות, המערכת בודקת את הזהויות החיצוניות האלה.
אם הזהות של המשתמש (groupID או userID) ממופה לזהות חיצונית (externalEntityId) שמשויכת למסמך, המשתמש מקבל גישה למסמך הזה.
לדוגמה, נניח שיצרתם מחבר בהתאמה אישית ל-Jira. לנושא מסוים ב-Jira יכולים לגשת משתמשים מסוימים ב-IDP, קבוצות מסוימות ב-IDP ותפקיד אדמין. כדי לאפשר לאנשים האלה לגשת לנושא בתוצאות החיפוש, אתם יכולים ליצור מאגר מיפוי זהויות ולמפות משתמשים וקבוצות של IDP לזהויות חיצוניות ספציפיות ל-Jira. מקשרים את מאגר מיפוי הזהויות למאגר הנתונים של Jira. לאחר מכן, יוצרים מסמכים במאגרי הנתונים של Jira עם aclInfo שהוגדר עם משתמשי ה-IdP, קבוצות ה-IdP והזהויות החיצוניות שצריכות להיות להן גישה למסמכים האלה.
כדי לעדכן את מטא-נתוני ה-ACL במידע על הזהויות החיצוניות, צריך להשתמש בפורמט הבא כדי לציין את הזהויות החיצוניות ואת מזהי המשתמשים והקבוצות שמשויכים אליהן.
{
"aclInfo": {
"readers": [
{
"principals": [
{
"groupId": "group_1"
},
{
"userId": "user_1"
},
{
"externalEntityId": "external_id1"
}
]
}
]
}
}
מידע נוסף על עדכון המטא-נתונים של רשימות ACL מופיע במאמר הגדרת מקור נתונים עם בקרת גישה.
ניהול מיפוי הזהויות
אתם יכולים להציג רשימה של מיפויי זהויות במאגר זהויות, או לנקות מאגר זהויות על ידי הגדרת המיפויים באמצעות מקור מוטבע או באמצעות תנאי סינון.
משימות הניהול שאפשר לבצע במיפוי הזהויות:
הצגת רשימה של מיפויי זהויות
כדי להציג את מיפויי הזהויות, מריצים את הפקודה הבאה באמצעות השיטה
listIdentityMappings:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:listIdentityMappings?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
PAGE_SIZE: המספר המקסימלי של מאגרי מיפוי זהויות שיוחזרו. אם לא מציינים ערך, ברירת המחדל היא 100. הערך המקסימלי המותר הוא 1,000. ערכים שגבוהים מ-1,000 יוגבלו ל-1,000. -
PAGE_TOKEN: טוקן של דף שהתקבל מקריאה קודמת שלListIdentityMappingStores. צריך להזין את הטוקן כדי לאחזר את הדף הבא.
-
מחיקה באמצעות מקור מוטבע
אפשר למחוק רשומות ספציפיות ממאגר מיפוי הזהויות על ידי שליחת קובץ JSON עם הזהויות שרוצים למחוק.
כדי למחוק מיפויים של זהויות באמצעות מקור מוטבע, מריצים את הפקודה הבאה באמצעות השיטה
purgeIdentityMappings:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:purgeIdentityMappings" \ -d '{"inline_source" : IDENTITY_MAPPINGS_JSON}'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
IDENTITY_MAPPING_STORE_NAME: השם של מאגר מיפוי הזהויות. -
IDENTITY_MAPPINGS_JSON: מיפויי הזהויות שרוצים למחוק.
-
מחיקה באמצעות תנאי סינון
אתם יכולים למחוק רשומות ספציפיות ממאגר מיפוי הזהויות על ידי סינון הרשומות לפי זמן העדכון, זהות חיצונית או כל הרשומות.
כדי למחוק מיפויים של זהויות באמצעות תנאי סינון, מריצים את הפקודה הבאה באמצעות השיטה
purgeIdentityMappings:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID:purgeIdentityMappings" \ -d '{"identity_mapping_store":"IDENTITY_MAPPING_STORE_NAME", "filter": "FILTER_CONDITION"}'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
IDENTITY_MAPPING_STORE_NAME: השם של מאגר מיפוי הזהויות. -
FILTER_CONDITION: אחד מסוגי המסננים הבאים: - מועד העדכון. לדוגמה,
update_time > "2012-04-23T18:25:43.511Z" AND update_time < "2012-04-23T18:30:43.511Z"> - זהות חיצונית. לדוגמה,
external_id = "id1" - כל מיפויי הזהויות. לדוגמה,
*
-
ניהול מאגרי מיפוי זהויות
אתם יכולים לאחזר, למחוק, לפרט ולמחוק באופן סופי מאגרי מיפוי זהויות.
קבלת מאגר מיפוי הזהויות
כדי לקבל מאגר מיפוי זהויות, מריצים את הפקודה הבאה באמצעות השיטה
identityMappingStores.get:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
IDENTITY_MAPPING_STORE_NAME: השם של מאגר מיפוי הזהויות.
-
רשימה של מאגרי מיפוי זהויות
כדי להציג רשימה של מאגרי מיפוי זהויות, מריצים את הפקודה הבאה באמצעות השיטה
identityMappingStores.list:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "x-goog-user-project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
PAGE_SIZE: המספר המקסימלי של מאגרי מיפוי זהויות שיוחזרו. אם לא מציינים ערך, ברירת המחדל היא 100. הערך המקסימלי המותר הוא 1,000. ערכים שגבוהים מ-1,000 יוגבלו ל-1,000. -
PAGE_TOKEN: טוקן של דף שהתקבל מקריאה קודמת שלListIdentityMappingStores. צריך להזין את הטוקן כדי לאחזר את הדף הבא.
-
מחיקה של מאגרי מיפוי זהויות
כדי למחוק מאגר מיפוי זהויות, הוא לא יכול להיות מקושר למאגר נתונים, ולא יכולים להיות בו מיפויי זהויות.
כדי למחוק מאגר מיפוי זהויות, מריצים את הפקודה הבאה באמצעות השיטה
identityMappingStores.delete:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/identityMappingStores/IDENTITY_MAPPING_STORE_ID"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
IDENTITY_MAPPING_STORE_ID: המזהה הייחודי של מאגר מיפוי הזהויות. -
IDENTITY_MAPPING_STORE_NAME: השם של מאגר מיפוי הזהויות.
-