לנהל את הגישה למשאבים באמצעות ניהול זהויות והרשאות גישה (IAM). בעזרת IAM תוכלו לתת גישה פרטנית יותר למשאבים ספציפיים ב-Google Cloud, ולמנוע גישה לא רצויה למשאבים אחרים. בדף הזה מתוארים התפקידים וההרשאות של IAM ב-Cloud Firestore. למידע מפורט על IAM, קראו את מסמכי העזרה של IAM.
בעזרת IAM תוכלו לשמור על עקרון האבטחה של הרשאות מינימליות, וכך לתת רק למי שצריך את רמת הגישה שצריך למשאבים השונים.
באמצעות כללי המדיניות ב-IAM אתם יכולים להחליט למי (משתמשים) יהיו הרשאות גישה (תפקידים) למשאבים מסוימים.
כללי המדיניות ב-IAM מקצים למשתמשים תפקיד אחד או יותר עם הרשאות ספציפיות. לדוגמה, אתם יכולים להקצות למשתמש את התפקיד datastore.indexAdmin, שמאפשר לו ליצור, לשנות, למחוק, להציג ברשימה או לראות אינדקסים.
הרשאות ותפקידים
בקטע הזה מפורטים התפקידים וההרשאות שנתמכים ב-Cloud Firestore.
ההרשאות שנדרשות לשיטות API
בטבלה הבאה מפורטות ההרשאות הנדרשות למבצע הקריאה החוזרת (caller) כדי לבצע כל פעולה:
| שיטה | ההרשאות הנדרשות | |
|---|---|---|
projects.databases.MongoDBCompatible |
||
ListDatabases |
datastore.databases.getMetadata |
|
ListIndexes |
datastore.schemas.list |
|
Find |
datastore.entities.getdatastore.entities.list |
|
Aggregate |
datastore.entities.getdatastore.entities.list |
|
GetMore |
אותן הרשאות שנדרשו לקריאה שיצרה את הסמן. |
|
ListCollections |
datastore.entities.list |
|
Count |
datastore.entities.list |
|
Distinct |
datastore.entities.getdatastore.entities.list |
|
CommitTransaction |
datastore.databases.get |
|
AbortTransaction |
datastore.databases.get |
|
EndSessions |
datastore.databases.get |
|
KillCursors |
datastore.databases.get |
|
Insert |
datastore.entities.create |
|
Update |
datastore.entities.getdatastore.entities.listdatastore.entities.updatedatastore.entities.create (לעדכון או הוספה בלבד) |
|
FindAndModify |
datastore.entities.getdatastore.entities.listdatastore.entities.update (להחלפה או לעדכון בלבד)datastore.entities.create (לעדכון או להוספה בלבד)datastore.entities.delete (למחיקה בלבד) |
|
CreateCollection |
datastore.entities.create |
|
DropCollection |
datastore.schemas.delete |
|
projects.databases.indexes |
||
create |
datastore.schemas.create |
|
delete |
datastore.schemas.delete |
|
get |
datastore.schemas.get |
|
list |
datastore.schemas.list |
|
projects.databases |
||
create |
datastore.databases.create |
|
delete |
datastore.databases.delete |
|
get |
datastore.databases.getMetadata |
|
list |
datastore.databases.list |
|
patch |
datastore.databases.update |
|
| שחזור | datastore.backups.restoreDatabase |
|
clone |
datastore.databases.clone |
שכפול מסד נתונים.
אם בקשת ה-
כדי לוודא שקישורי התגים הוגדרו בהצלחה, צריך להציג את הקישורים. לשם כך נדרשות ההרשאות הנוספות הבאות:
|
projects.locations |
||
get |
datastore.locations.get |
|
list |
datastore.locations.list |
|
projects.databases.backupschedules |
||
get |
datastore.backupSchedules.get |
|
list |
datastore.backupSchedules.list |
|
create |
datastore.backupSchedules.create |
|
update |
datastore.backupSchedules.update |
|
delete |
datastore.backupSchedules.delete |
|
projects.locations.backups |
||
get |
datastore.backups.get |
|
list |
datastore.backups.list |
|
delete |
datastore.backups.delete |
|
projects.databases.usercreds |
||
get |
datastore.userCreds.get |
|
list |
datastore.userCreds.list |
|
create |
datastore.userCreds.create |
|
enable |
datastore.userCreds.update |
|
disable |
datastore.userCreds.update |
|
resetPassword |
datastore.userCreds.update |
|
delete |
datastore.userCreds.delete |
|
תפקידים מוגדרים מראש
באמצעות IAM, כל שיטת API ב-Cloud Firestore דורשת שלחשבון שממנו הגיעה בקשת ה-API תהיה ההרשאה המתאימה לשימוש במשאב. כדי לתת הרשאות, צריך להגדיר כללי מדיניות שמקצים תפקידים למשתמש, לקבוצה או לחשבון שירות. בנוסף לתפקידים הבסיסיים, בעלים, עריכה וצפייה, אתם יכולים להקצות למשתמשים בפרויקט תפקידים ב-Cloud Firestore.
בטבלה הבאה מפורטים תפקידי IAM ב-Cloud Firestore. אפשר להקצות כמה תפקידים למשתמש, לקבוצה או לחשבון שירות.
| תפקיד | הרשאות | תיאור |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה אל Cloud Firestore. |
roles/datastore.user |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
גישת קריאה/כתיבה לנתונים במסד נתונים של Cloud Firestore. מיועד למפתחי אפליקציות ולחשבונות שירות. |
roles/datastore.viewer |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
גישת קריאה לכל המשאבים של Cloud Firestore. |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה לניהול הגדרות של אינדקסים. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
גישת קריאה לתזמוני גיבוי במסד נתונים של Cloud Firestore. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
גישה מלאה לתזמוני גיבוי במסד נתונים של Cloud Firestore. |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
גישת קריאה למידע על גיבוי במיקום של Cloud Firestore. |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
גישה מלאה לגיבויים במיקום Cloud Firestore. |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
אפשרות לשחזר גיבוי של Cloud Firestore למסד נתונים חדש. התפקיד הזה גם מאפשר ליצור מסדי נתונים חדשים, לא בהכרח על ידי שחזור מגיבוי. |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
אפשרות לשכפל מסד נתונים של Cloud Firestore למסד נתונים חדש. התפקיד הזה גם מאפשר ליצור מסדי נתונים חדשים, לא בהכרח באמצעות שכפול. |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
גישת קריאה לתובנות, לנתונים סטטיסטיים ולסריקות של Key Visualizer. |
roles/datastore.userCredsViewer |
datastore.userCreds.getdatastore.userCreds.list |
גישת קריאה לפרטי הכניסה של המשתמשים במסד נתונים של Cloud Firestore. |
roles/datastore.userCredsAdmin |
datastore.userCreds.getdatastore.userCreds.listdatastore.userCreds.createdatastore.userCreds.updatedatastore.userCreds.deletedatastore.databases.listdatastore.databases.getMetadata |
גישה מלאה לפרטי הכניסה של המשתמשים במסד נתונים של Cloud Firestore. |
תפקידים בהתאמה אישית
אם התפקידים המוגדרים מראש לא מתאימים לדרישות העסקיות שלכם, אתם יכולים להגדיר תפקידים בהתאמה אישית עם הרשאות שאתם בוחרים:
התפקידים שנדרשים כדי ליצור ולנהל תגים
אם תג כלשהו מיוצג בפעולות יצירה או שחזור, נדרשים תפקידים מסוימים. במאמר יצירה וניהול של תגים מוסבר איך יוצרים צמדי מפתח/ערך של תגים לפני שמשייכים אותם למשאבי מסד הנתונים.
ההרשאות הבאות נדרשות.
הצגת התגים
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
ניהול תגים במשאבים
ההרשאה הבאה נדרשת למשאב מסד הנתונים שאליו אתם מצרפים את ערך התג.
datastore.databases.createTagBinding
הרשאות
בטבלה הבאה מפורטות ההרשאות שנתמכות ב-Cloud Firestore.
| שם ההרשאה של מסד הנתונים | תיאור | |
|---|---|---|
datastore.databases.get |
התחלה או החזרה למצב קודם של עסקה. | |
datastore.databases.getMetadata |
קריאת מטא-נתונים ממסד נתונים. | |
datastore.databases.list |
הצגת רשימה של מסדי נתונים בפרויקט. | |
datastore.databases.create |
יוצרים מסד נתונים. | |
datastore.databases.update |
עדכון מסד נתונים. | |
datastore.databases.delete |
למחוק מסד נתונים. | |
datastore.databases.clone |
שכפול מסד נתונים. | |
datastore.databases.createTagBinding |
יצירת קישור תגים למסד נתונים. | |
datastore.databases.deleteTagBinding |
מחיקת קישור תגים של מסד נתונים. | |
datastore.databases.listTagBindings |
הצגת רשימה של כל קישורי התגים של מסד נתונים. | |
datastore.databases.listEffectiveTagBindings |
הצגת רשימה של קישורי תגים יעילים למסד נתונים. | |
| שם ההרשאה של הישות | תיאור | |
datastore.entities.create |
ליצור מסמך. | |
datastore.entities.delete |
למחוק מסמך. | |
datastore.entities.get |
לקרוא מסמך. | |
datastore.entities.list |
הצגת רשימה של שמות המסמכים בפרויקט. (כדי לגשת לנתוני המסמך, נדרשת הרשאת datastore.entities.get.) |
|
datastore.entities.update |
לעדכן מסמך. | |
| שם ההרשאה של האינדקס | תיאור | |
datastore.schemas.create |
יוצרים אינדקס. | |
datastore.schemas.delete |
למחוק אינדקס. | |
datastore.schemas.get |
קריאת מטא-נתונים מאינדקס. | |
datastore.schemas.list |
הצגת רשימה של האינדקסים בפרויקט. | |
datastore.schemas.update |
עדכון אינדקס. | |
| שם ההרשאה של הפעולה | תיאור | |
datastore.operations.cancel |
ביטול של פעולה ממושכת. | |
datastore.operations.delete |
מחיקת פעולה ממושכת. | |
datastore.operations.get |
אחזור המצב האחרון של פעולה ממושכת. | |
datastore.operations.list |
הצגת רשימה של פעולות ממושכות. | |
| שם ההרשאה של הפרויקט | תיאור | |
resourcemanager.projects.get |
לעיין במשאבים בפרויקט. | |
resourcemanager.projects.list |
הצגת רשימה של הפרויקטים שבבעלותכם. | |
| שם הרשאת המיקום | תיאור | |
datastore.locations.get |
קבלת פרטים על מיקום של מסד נתונים. נדרש כדי ליצור מסד נתונים חדש. | |
datastore.locations.list |
רשימת המיקומים הזמינים של מסדי נתונים. נדרש כדי ליצור מסד נתונים חדש. | |
| שם ההרשאה של Key Visualizer | תיאור | |
datastore.keyVisualizerScans.get |
מידע נוסף על סריקות של Key Visualizer. | |
datastore.keyVisualizerScans.list |
הצגת רשימה של סריקות זמינות ב-Key Visualizer. | |
| שם ההרשאה של תזמון הגיבוי | תיאור | |
datastore.backupSchedules.get |
קבלת פרטים על תזמון גיבוי. | |
datastore.backupSchedules.list |
רשימת לוחות הזמנים הזמינים לגיבוי. | |
datastore.backupSchedules.create |
יוצרים לוח זמנים לגיבוי. | |
datastore.backupSchedules.update |
עדכון של לוח זמנים לגיבוי. | |
datastore.backupSchedules.delete |
למחוק לוח זמנים לגיבוי. | |
| שם ההרשאה של הגיבוי | תיאור | |
datastore.backups.get |
לקבל פרטים על גיבוי. | |
datastore.backups.list |
רשימת הגיבויים הזמינים. | |
datastore.backups.delete |
למחוק גיבוי. | |
datastore.backups.restoreDatabase |
שחזור מסד נתונים מגיבוי. | |
| שם ההרשאה של התובנות | תיאור | |
datastore.insights.get |
קבלת תובנות לגבי משאב | |
| שם ההרשאה של פרטי הכניסה של המשתמש | תיאור | |
datastore.userCreds.get |
קבלת פרטים על פרטי הכניסה של המשתמש. | |
datastore.userCreds.list |
רשימה של פרטי הכניסה הזמינים של המשתמש. | |
datastore.userCreds.create |
יוצרים פרטי כניסה למשתמש. | |
datastore.userCreds.update |
להפעיל או להשבית את פרטי הכניסה של המשתמשים, או לאפס את הסיסמה של המשתמשים. | |
datastore.userCreds.delete |
למחוק את פרטי הכניסה של המשתמש. |
זמן האחזור של שינוי התפקיד
הרשאות IAM נשמרות במטמון של Cloud Firestore למשך 5 דקות, ולכן שינוי בתפקיד נכנס לתוקף תוך 5 דקות לכל היותר.
ניהול IAM ב-Cloud Firestore
אפשר לקבל ולהגדיר מדיניות IAM באמצעות מסוף Google Cloud, IAM API או כלי שורת הפקודה gcloud. לפרטים נוספים, קראו את המאמר הענקה, שינוי וביטול של הרשאות גישה לחברי פרויקט.
הגדרת הרשאות גישה מותנית
אתם יכולים להשתמש בתנאי IAM כדי להגדיר ולאכוף בקרת גישה מותנית.
לדוגמה, התנאי הבא מקצה לחשבון הראשי את התפקיד datastore.user עד לתאריך מסוים:
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
במאמר הגדרת גישה זמנית מוסבר איך מגדירים תנאי IAM לגישה זמנית.
במאמר הגדרת תנאי גישה למסד נתונים מוסבר איך מגדירים תנאי IAM לגישה למסד נתונים אחד או יותר.