ניהול זהויות והרשאות גישה (IAM)

‫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 משכפלים מסד נתונים.

אם הבקשה clone מכילה ערך tags, נדרשות ההרשאות הנוספות הבאות:

  • datastore.databases.createTagBinding

אם רוצים לבדוק אם קישורי התגים הוגדרו בהצלחה על ידי הצגת הקישורים, נדרשות ההרשאות הנוספות הבאות:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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.get
datastore.*
resourcemanager.projects.get
resourcemanager.projects.list
גישה מלאה למופע מסד הנתונים.
כדי להעניק גישה לDatastore Admin, צריך להקצות את התפקיד appengine.appAdmin לגורם הראשי.
roles/datastore.user appengine.applications.get
datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
גישת קריאה/כתיבה לנתונים במסד נתונים במצב Datastore. מיועד למפתחי אפליקציות ולחשבונות שירות.
roles/datastore.viewer appengine.applications.get
datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.schemas.get
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list
resourcemanager.projects.get
resourcemanager.projects.list
datastore.insights.get
הרשאת קריאה לכל משאבי מסד הנתונים במצב Datastore.
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.getMetadata
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
גישה מלאה לניהול ייבוא וייצוא.
roles/datastore.bulkAdmin resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.databases.bulkDelete
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
גישה מלאה לניהול פעולות בכמות גדולה.
roles/datastore.indexAdmin appengine.applications.get
datastore.databases.getMetadata
datastore.schemas.*
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
גישה מלאה לניהול הגדרות האינדקס.
roles/datastore.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
גישה מלאה לסריקות של Key Visualizer.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
הרשאת קריאה ללוחות זמנים של גיבוי במסד נתונים במצב Datastore.
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
גישה מלאה ללוחות זמנים של גיבוי במסד נתונים במצב Datastore.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
הרשאת קריאה למידע על גיבוי במיקום במצב Datastore.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
גישה מלאה לגיבויים במיקום במצב Datastore.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
אפשרות לשחזר גיבוי של מצב Datastore למסד נתונים חדש. התפקיד הזה מאפשר גם ליצור מסדי נתונים חדשים, לא בהכרח על ידי שחזור מגיבוי.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
אפשרות לשכפל מסד נתונים במצב Datastore למסד נתונים חדש. התפקיד הזה מאפשר גם ליצור מסדי נתונים חדשים, לא בהכרח באמצעות שיבוט.
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
גישת קריאה לתובנות, לנתונים סטטיסטיים ולסריקות של Key Visualizer.

תפקידים בהתאמה אישית

אם התפקידים המוגדרים מראש לא עונים על הדרישות העסקיות שלכם, אתם יכולים להגדיר תפקידים בהתאמה אישית עם הרשאות שאתם מציינים:

תפקידים שנדרשים כדי ליצור ולנהל תגים

אם תג כלשהו מיוצג בפעולות יצירה או שחזור, נדרשים תפקידים מסוימים. איך יוצרים תגים ומנהלים אותם

נדרשות ההרשאות הבאות.

הצגת תגים
  • datastore.databases.listTagBindings
  • datastore.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.create
datastore.entities.update
commit לעדכון datastore.entities.update
commit למחיקה datastore.entities.delete
commit לחיפוש datastore.entities.get

לחיפוש שקשור למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות נדרשות למטא-נתונים ולנתונים סטטיסטיים.
commit לשאילתה datastore.entities.list
datastore.entities.get (אם השאילתה היא לא שאילתה של מפתחות בלבד)

לשאילתה שקשורה למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות שנדרשות למטא-נתונים ולנתונים סטטיסטיים.
lookup datastore.entities.get

לחיפוש שקשור למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות נדרשות למטא-נתונים ולנתונים סטטיסטיים.
rollback datastore.databases.get
runQuery datastore.entities.list
datastore.entities.get (אם השאילתה היא לא שאילתה של מפתחות בלבד)

לשאילתה שקשורה למטא-נתונים או לנתונים סטטיסטיים, אפשר לעיין במאמר הרשאות שנדרשות למטא-נתונים ולנתונים סטטיסטיים.
runQuery עם שאילתה בלי סיווג datastore.entities.get
datastore.entities.list
datastore.statistics.get
datastore.statistics.list

ההרשאות הנדרשות למטא-נתונים ולסטטיסטיקות

בטבלה הבאה מפורטות ההרשאות שנדרשות למבצע הקריאה החוזרת (caller) כדי להפעיל קריאה לשיטות ב-Metadata וב-Statistics.

‏Method ההרשאות הנדרשות
lookup של ישויות עם שמות סוג שתואמים ל-__Stat_*__ datastore.statistics.get
runQuery using kinds with names matching __Stat_*__ datastore.statistics.get
datastore.statistics.list
runQuery using the kind __namespace__ datastore.namespaces.get
datastore.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

הגדרת הרשאות לגישה מותנית

אפשר להשתמש בתנאים של 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 לגישה למסד נתונים אחד או יותר, ראו הגדרת תנאי גישה למסד נתונים.

המאמרים הבאים