בדרך כלל, ארגונים מנהלים זהויות (משתמשים וקבוצות משתמשים) באמצעות ספק זהויות (IdP). אבל אפליקציות בהתאמה אישית שארגון בנה בעצמו יכולות לאפשר ללקוחות ליצור קבוצות משתמשים חדשות שמוגדרות באופן מקומי באפליקציה הזו. קבוצות משתמשים ספציפיות לאפליקציה או מזהי משתמש משניים נקראים זהויות חיצוניות.
למה כדאי להגדיר מיפוי זהויות?
כדי לוודא ש-Google יכולה לאכוף את בקרת הגישה בצורה נכונה, צריך למפות את הזהויות ב-IDP לכל הזהויות החיצוניות מהאפליקציות המותאמות אישית שאתם מתכננים להשתמש בהן עם Gemini Enterprise.
כדי להחיל בקרת גישה על תוצאות של אפליקציות, Google משתמשת ב-IdP כמקור האמת כדי לקבוע לאילו נתונים יש למשתמשים שלכם גישה. ארגונים לרוב מקשרים את ספק הזהויות שלהם לפתרונות SaaS אחרים, כדי שעובד יוכל להשתמש בסט אחד של פרטי כניסה ארגוניים כדי להיכנס לכל משאבי החברה ולגשת אליהם.
אם יש לכם זהויות חיצוניות שמוגדרות דרך אפליקציות שאתם מתכננים לקשר לאפליקציה שלכם, כמו אפליקציות בהתאמה אישית, ספק הזהויות שלכם הוא לא מקור המהימנות היחיד לבקרת גישה.
לדוגמה, נניח שהמשתמש JaneDoe קיים בארגון Example עם הדומיין example.com. המזהה ב-IDP מוגדר כ-JaneDoe@example.com. לאותו משתמש יש מזהה נפרד באפליקציה מותאמת אישית, והוא 'JDoe'. יכול להיות שספק הזהויות לא מכיר את המזהה הזה. לכן, Gemini Enterprise לא מקבל מידע על מזהי האפליקציות המותאמות אישית דרך ספק הזהויות.
ב-Gemini Enterprise, מיפויי הזהויות מאוחסנים במאגר מיפויי זהויות שיוצרים ומייבאים אליו את המיפויים. אם אתם מתכננים להשתמש במחבר מותאם אישית, אתם יכולים לקשר את מאגר מיפוי הזהויות למאגר הנתונים של המחבר המותאם אישית, ואז לעדכן את מטא-נתוני ה-ACL של מאגר הנתונים במידע על הזהויות החיצוניות.
לפני שמתחילים
לפני שמגדירים מיפוי זהויות, צריך לקשר את ספק הזהויות לפרויקט 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 בין ספק הזהויות לבין הזהויות החיצוניות, צריך לבצע את הפעולות הבאות. בשלבים הבאים, תיצרו מאגר למיפוי זהויות ותייבאו את מיפויי הזהויות שהכנתם. אם אתם מתכננים להשתמש במחבר מותאם אישית, תצטרכו גם ליצור מאגר נתונים חדש שיהיה קשור למאגר מיפוי הזהויות.
יצירת מאגר מיפוי זהויות
השלב הראשון הוא להגדיר מאגר למיפוי זהויות. זהו משאב האב שבו מאוחסנים כל מיפויי הזהויות.
כשיוצרים את מאגר מיפוי הזהויות, המערכת מאחזרת באופן אוטומטי את הגדרת ספק הזהויות מספק הזהויות שאליו התחברתם בפרויקט 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: השם של מאגר מיפוי הזהויות.
-