Google Cloud כולל את הפתרון 'ניהול זהויות והרשאות גישה (IAM)', שמאפשר לתת גישה פרטנית יותר למשאבים ספציפיים ב- Google Cloud ולמנוע גישה לא רצויה למשאבים אחרים. בדף הזה מוסבר על תפקידי IAM ב-Firestore במצב Datastore. למידע מפורט על IAM, תוכלו לעיין במסמכי העזרה של IAM.
בעזרת IAM תוכלו לשמור על עקרון האבטחה של הרשאות מינימליות, וכך לתת רק למי שצריך את רמת הגישה שצריך למשאבים השונים.
באמצעות כללי המדיניות ב-IAM אתם יכולים להחליט למי (משתמשים) יהיו הרשאות (תפקידים) למשאבים מסוימים. כללי המדיניות ב-IAM נותנים למשתמשים תפקידים ספציפיים עם הרשאות ספציפיות. לדוגמה, אפשר להעניק למשתמש את התפקיד datastore.indexAdmin, ואז המשתמש יוכל ליצור, לשנות, למחוק, להציג או לראות אינדקסים.
הרשאות ותפקידים
בסעיף הזה מפורטים ההרשאות והתפקידים שנתמכים ב-Firestore במצב Datastore.
הרשאות
בטבלה הבאה מפורטות ההרשאות שנתמכות ב-Firestore במצב Datastore.
| שם ההרשאה של מסד הנתונים | תיאור | |
|---|---|---|
datastore.databases.export |
לייצא ישויות ממסד נתונים. | |
datastore.databases.bulkDelete |
מחיקת כמות גדולה של ישויות ממסד נתונים. | |
datastore.databases.get |
מתחילים או מבטלים טרנזקציה. מבצעים Commit עם מוטציות ריקות. |
|
datastore.databases.import |
ייבוא ישויות למסד נתונים. | |
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.allocateIds |
הקצאת מזהים למפתחות עם נתיב מפתח לא מלא. | |
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.namespaces.get |
אחזור של מטא-נתונים ממרחב שמות. | |
datastore.namespaces.list |
הצגת רשימה של מרחבי השמות בפרויקט. | |
| שם הרשאת הפעולה | תיאור | |
datastore.operations.cancel |
ביטול פעולה ממושכת. | |
datastore.operations.delete |
מחיקת פעולה ממושכת. | |
datastore.operations.get |
מקבל את המצב העדכני של פעולה ממושכת. | |
datastore.operations.list |
הצגת רשימה של פעולות ממושכות. | |
| שם ההרשאה של הפרויקט | תיאור | |
resourcemanager.projects.get |
רשימת המשאבים בפרויקט. | |
resourcemanager.projects.list |
הצגת רשימה של פרויקטים שבבעלותכם. | |
| שם ההרשאה לסטטיסטיקה | תיאור | |
datastore.statistics.get |
אחזור ישויות של נתונים סטטיסטיים. | |
datastore.statistics.list |
תציג את המפתחות של ישויות statistics. (נדרש datastore.statistics.get כדי לגשת לנתוני הישות statistics). |
|
| שם ההרשאה ב-App Engine | תיאור | |
appengine.applications.get |
הרשאת קריאה בלבד לכל ההגדרות וההגדרות של אפליקציות App Engine. | |
| שם הרשאת המיקום | תיאור | |
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 |
קבלת תובנות לגבי משאב |
תפקידים מוגדרים מראש
באמצעות IAM, כל method ב-Datastore API דורשת שלחשבון שממנו הגיעה בקשת ה-API יהיו ההרשאות המתאימות לשימוש במשאב. ההרשאות ניתנות על ידי הגדרת מדיניות שמעניקה תפקידים למשתמש, לקבוצה או לחשבון שירות. בנוסף לתפקידים הבסיסיים בעלים, עריכה וצפייה, אתם יכולים להעניק תפקידים ב-Firestore במצב Datastore למשתמשים בפרויקט.
בטבלה הבאה מפורטים התפקידים ב-IAM של Firestore במצב Datastore. אפשר להעניק כמה תפקידים למשתמש, לקבוצה או לחשבון שירות.
| תפקיד | הרשאות | תיאור |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה למופע מסד הנתונים. כדי להעניק גישה לDatastore Admin, צריך להקצות את התפקיד appengine.appAdmin לגורם הראשי. |
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 |
גישת קריאה/כתיבה לנתונים במסד נתונים במצב Datastore. מיועד למפתחי אפליקציות ולחשבונות שירות. |
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.listdatastore.insights.get |
הרשאת קריאה לכל משאבי מסד הנתונים במצב Datastore. |
roles/datastore.importExportAdmin |
appengine.applications.getdatastore.databases.exportdatastore.databases.getMetadatadatastore.databases.importdatastore.operations.canceldatastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה לניהול ייבוא וייצוא. |
roles/datastore.bulkAdmin |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.databases.bulkDeletedatastore.operations.canceldatastore.operations.getdatastore.operations.list |
גישה מלאה לניהול פעולות בכמות גדולה. |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה לניהול הגדרות האינדקס. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadatadatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listresourcemanager.projects.getresourcemanager.projects.list |
גישה מלאה לסריקות של Key Visualizer. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
הרשאת קריאה ללוחות זמנים של גיבוי במסד נתונים במצב Datastore. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
גישה מלאה ללוחות זמנים של גיבוי במסד נתונים במצב Datastore. |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
הרשאת קריאה למידע על גיבוי במיקום במצב Datastore. |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
גישה מלאה לגיבויים במיקום במצב Datastore. |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
אפשרות לשחזר גיבוי של מצב Datastore למסד נתונים חדש. התפקיד הזה מאפשר גם ליצור מסדי נתונים חדשים, לא בהכרח על ידי שחזור מגיבוי. |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
אפשרות לשכפל מסד נתונים במצב Datastore למסד נתונים חדש. התפקיד הזה מאפשר גם ליצור מסדי נתונים חדשים, לא בהכרח באמצעות שיבוט. |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
גישת קריאה לתובנות, לנתונים סטטיסטיים ולסריקות של Key Visualizer. |
תפקידים בהתאמה אישית
אם התפקידים המוגדרים מראש לא עונים על הדרישות העסקיות שלכם, אתם יכולים להגדיר תפקידים בהתאמה אישית עם הרשאות שאתם מציינים:
תפקידים שנדרשים כדי ליצור ולנהל תגים
אם תג כלשהו מיוצג בפעולות יצירה או שחזור, נדרשים תפקידים מסוימים. איך יוצרים תגים ומנהלים אותם
נדרשות ההרשאות הבאות.
הצגת תגים
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
ניהול תגים במשאבים
נדרשת ההרשאה הבאה למשאב מסד הנתונים שאליו מצורף ערך התג.
datastore.databases.createTagBinding
הרשאות נדרשות לשיטות API
בטבלה הבאה מפורטות ההרשאות שנדרשות למבצע הקריאה החוזרת (caller) כדי להפעיל קריאה לכל method:
| Method | ההרשאות הנדרשות |
|---|---|
allocateIds |
datastore.entities.allocateIds |
beginTransaction |
datastore.databases.get |
commit עם מוטציות ריקות |
datastore.databases.get |
commit insert |
datastore.entities.create |
commit לפעולת upsert |
datastore.entities.createdatastore.entities.update |
commit לעדכון |
datastore.entities.update |
commit למחיקה |
datastore.entities.delete |
commit לחיפוש |
datastore.entities.getלחיפוש שקשור למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות נדרשות למטא-נתונים ולנתונים סטטיסטיים. |
commit לשאילתה |
datastore.entities.listdatastore.entities.get (אם השאילתה היא לא שאילתה של מפתחות בלבד)לשאילתה שקשורה למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות שנדרשות למטא-נתונים ולנתונים סטטיסטיים. |
lookup |
datastore.entities.getלחיפוש שקשור למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות נדרשות למטא-נתונים ולנתונים סטטיסטיים. |
rollback |
datastore.databases.get |
runQuery |
datastore.entities.listdatastore.entities.get (אם השאילתה היא לא שאילתה של מפתחות בלבד)לשאילתה שקשורה למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות שנדרשות למטא-נתונים ולנתונים סטטיסטיים. |
runQuery עם שאילתה בלי סיווג |
datastore.entities.getdatastore.entities.listdatastore.statistics.getdatastore.statistics.list |
ההרשאות הנדרשות למטא-נתונים ולסטטיסטיקות
בטבלה הבאה מפורטות ההרשאות שנדרשות למבצע הקריאה החוזרת (caller) כדי להפעיל קריאה לשיטות ב-Metadata וב-Statistics.
| Method | ההרשאות הנדרשות |
|---|---|
lookup של ישויות עם שמות סוג שתואמים ל-__Stat_*__ |
datastore.statistics.get |
runQuery using kinds with names matching __Stat_*__ |
datastore.statistics.getdatastore.statistics.list |
runQuery using the kind __namespace__ |
datastore.namespaces.getdatastore.namespaces.list |
התפקידים הנדרשים כדי ליצור מכונת מסד נתונים במצב Datastore
כדי ליצור מופע חדש של מסד נתונים במצב Datastore, צריך להיות לכם תפקיד בעלים או תפקיד בעלים של Datastore.
במסדי נתונים במצב Datastore נדרשת אפליקציית App Engine פעילה.
אם בפרויקט אין אפליקציה, מערכת Firestore במצב Datastore יוצרת אפליקציה בשבילכם. במקרה כזה, תצטרכו את ההרשאה appengine.applications.create מהתפקיד בעלים או מתפקיד מותאם אישית ב-IAM שכולל את ההרשאה.
זמן האחזור של שינוי התפקיד
מערכת Firestore במצב Datastore שומרת במטמון את הרשאות ה-IAM למשך 5 דקות, ולכן שינוי בתפקיד ייכנס לתוקף תוך 5 דקות לכל היותר.
ניהול IAM
אפשר לקבל ולהגדיר מדיניות IAM באמצעות מסוף Google Cloud, ה-methods של IAM או Google Cloud CLI. Google Cloud
- לגבי מסוף Google Cloud , ראו בקרת גישה באמצעות מסוף Google Cloud .
- למידע על שיטות IAM, אפשר לעיין במאמר בקרת גישה באמצעות ה-API.
- ל-CLI של gcloud, אפשר לעיין במאמר בקרת גישה באמצעות כלי 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 לגישה למסד נתונים אחד או יותר, ראו הגדרת תנאי גישה למסד נתונים.