בקרת גישה באמצעות IAM

ב-Cloud Logging משתמשים בתפקידים ובהרשאות של ניהול זהויות והרשאות גישה (IAM) כדי לקבוע מי יכול לראות, לכתוב ולנהל את המשאבים של Logging. התפקידים ב-IAM קובעים אם אתם יכולים ליצור אובייקטים מסוג sink או קטגוריות של יומנים, לקרוא נתוני יומנים שמאוחסנים בקטגוריית יומנים או לגשת לדפים כמו המסנן של מציג היומנים. כשמפעילים פקודה של Cloud Logging API או של Google Cloud CLI, התפקידים ב-IAM קובעים גם אם יש לכם הרשאה להריץ את הפקודה.

סקירה כללית

התפקידים שלכם ב-IAM קובעים אילו פעולות אתם יכולים לבצע ב-Logging. תפקיד הוא אוסף של הרשאות. כשאתם נותנים לחשבון משתמש תפקיד, אתם נותנים לו את כל ההרשאות שהתפקיד כולל. אתם יכולים להקצות לאותו חשבון משתמש תפקידים מרובים.

תפקידי IAM מוקצים למשאב, כמו Google Cloud פרויקט, תיקייה, קטגוריה או ארגון. לדוגמה, אתם יכולים לתת לחשבון המשתמש את התפקיד "צפייה ביומנים" (roles/logging.viewer) בפרויקט Google Cloud מסוים.

בקטעים תפקידים מוגדרים מראש ותפקידים ב-Logging שבדף הזה מפורט מידע מקיף על התפקידים וההרשאות ב-Logging. בקטעים אחרים בדף הזה מופיע מידע על תפקידים או הרשאות לתרחישים ספציפיים לדוגמה.

בהמשך הקטע הזה מוסבר איך נותנים לחשבון משתמש גישה לקטגוריות של יומנים, או גישה רק לחלק מהרשומות בקטגוריה של יומנים.

מתן גישה לקטגוריות של יומנים

התפקיד "צפייה ביומנים" (roles/logging.viewer) מאפשר לחשבון הראשי לגשת לכל נתוני היומנים שמאוחסנים בקטגוריות היומנים _Required ו-_Default, חוץ מיומני הגישה לנתונים. אם חשבון משתמש צריך גישה ליומני הגישה לנתונים, צריך להקצות לו את התפקיד "צפייה ביומנים פרטיים" (roles/logging.privateLogViewer).

בדליים של יומנים בהתאמה אישית, אתם יכולים לתת גישה לתצוגה _AllLogs או לתצוגה בהתאמה אישית של היומנים. כלי הרישום יוצר באופן אוטומטי את התצוגה _AllLogs, שכוללת את כל רשומות היומן במאגר היומנים. כדי לתת גישה לתצוגת יומנים, צריך להוסיף קישור IAM למדיניות ה-IAM שמצורפת לתצוגת היומנים או לפרויקט. למידע נוסף, קראו את המאמר שליטה בגישה לתצוגת יומן.

ב-Logging יש גם תמיכה בתגים בדליים של יומנים, שיכולים לעזור לכם להבין את העלויות. אפשר גם להשתמש בתגים כדי למנוע ממשתמש למחוק קטגוריית יומנים. מידע נוסף זמין במאמר שימוש בתגים לניהול הגישה לקטגוריות של יומנים.

מתן גישה לחלק מהרשומות ביומן בקטגוריית יומנים

כדי לתת לחשבון משתמש גישה רק לחלק מהרשומות ביומן שמאוחסנות בקטגוריית יומנים, יוצרים תצוגת יומנים ואז נותנים לחשבון המשתמש גישה לתצוגת היומנים. לדוגמה, אתם יכולים ליצור תצוגת יומנים בקטגוריית היומנים _Default שכוללת רק רשומות ביומן שסוג המשאב שלהן הוא מכונה של Compute Engine. במאמר הגדרת תצוגות של יומנים בקטגוריית יומנים מוסבר איך ליצור תצוגות של יומנים ואיך לתת גישה לתצוגה.

תפקידים מוגדרים מראש

ב-IAM יש תפקידים מוגדרים מראש שמאפשרים לתת גישה פרטנית למשאבים ספציפיים ב- Google Cloud ולמנוע גישה לא רצויה למשאבים אחרים. Google Cloud יוצרת את התפקידים האלה, מנהלת אותם ומעדכנת אוטומטית את ההרשאות שלהם לפי הצורך, למשל כשנוספות תכונות חדשות ל-Logging.

בטבלה הבאה מפורטים התפקידים המוגדרים מראש ל-Logging. בטבלה מוצגים שם התפקיד, התיאור, ההרשאות שהוא מכיל וסוג המשאב הנמוך ביותר בהיררכיה שאפשר לתת בו את התפקיד. אפשר להקצות את התפקידים המוגדרים מראש ברמת Google Cloud הפרויקט, או ב רוב המקרים בכל סוג משאב שנמצא מעליו ב היררכיית המשאבים. כדי להגביל את התפקיד "גישה לתצוגת יומנים" לתצוגת יומן בקטגוריה, משתמשים במאפייני משאבים לתנאי IAM.

במאמר הצגת המטא-נתונים של התפקיד תוכלו לראות את רשימת ההרשאות שכל תפקיד מכיל.

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

בקטעים הבאים מופיע מידע נוסף שיעזור לכם להחליט אילו תפקידים מתאימים לתרחישי השימוש של חשבונות המשתמשים.

תפקידי רישום ביומן

  • כדי לאפשר למשתמש לבצע את כל הפעולות ב-Logging, צריך להקצות לו את התפקיד "אדמין של Logging" ‏ (roles/logging.admin).

  • כדי לאפשר למשתמש ליצור ולשנות הגדרות של רישום ביומן, צריך להקצות לו את התפקיד "כתיבה של הגדרות רישום ביומן" (roles/logging.configWriter). התפקיד הזה מאפשר ליצור או לשנות את הפריטים הבאים:

  • כדי לאפשר למשתמש לקרוא יומנים בקטגוריות _Required ו-_Default או להשתמש בדף Logs Explorer, צריך להקצות לו אחד מהתפקידים הבאים:

    • כדי לקבל גישה לכל היומנים בקטגוריה _Required, וגישה לתצוגה _Default בקטגוריה _Default, צריך להקצות את התפקיד "צפייה ביומנים" (roles/logging.viewer).
    • כדי לקבל גישה לכל היומנים בקטגוריות _Required ו-_Default, כולל יומני הגישה לנתונים, צריך להקצות את התפקיד "צפייה ביומנים פרטיים" (roles/logging.privateLogViewer).
  • כדי לאפשר למשתמש לקרוא יומנים בכל תצוגות היומנים שבפרויקט, צריך להקצות לו את תפקיד ה-IAM‏ roles/logging.viewAccessor בפרויקט.

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

    • יוצרים מדיניות IAM לתצוגת היומן, ואז מוסיפים למדיניות הזו קישור IAM שנותן לחשבון המשתמש גישה לתצוגת היומן.

    • מקצים לחשבון המשתמש את תפקיד ה-IAM‏ roles/logging.viewAccessor בפרויקט שמכיל את תצוגת היומן, אבל מצרפים תנאי IAM כדי להגביל את ההקצאה לתצוגת היומן הספציפית.

    במאמר הגדרת תצוגות של יומנים בקטגוריית יומנים מוסבר איך יוצרים תצוגות של יומנים ונותנים גישה.

  • כדי לאפשר למשתמש לכתוב יומנים באמצעות Logging API, צריך להקצות לו את התפקיד "כתיבת יומנים" (roles/logging.logWriter). התפקיד הזה לא מעניק הרשאות צפייה.

  • כדי לאפשר לחשבון השירות של כיור לנתב יומנים לקטגוריה בפרויקט אחר ב- Google Cloud , צריך להקצות לחשבון השירות את התפקיד "כתיבה בקטגוריית יומנים" (roles/logging.bucketWriter). הוראות להענקת הרשאות לחשבון שירות מפורטות במאמר הגדרת הרשאות יעד.

תפקידים ברמת הפרויקט

  • כדי לתת גישת צפייה לרוב שירותי Google Cloud , צריך להקצות את התפקיד "צפייה" (roles/viewer).

    התפקיד הזה כולל את כל ההרשאות שניתנות על ידי התפקיד "צפייה ביומנים" (roles/logging.viewer).

  • כדי לתת גישת עריכה לרוב שירותי Google Cloud , צריך להקצות את התפקיד "עריכה" (roles/editor).

    התפקיד הזה כולל את כל ההרשאות שניתנות על ידי התפקיד "צפייה ביומנים" (roles/logging.viewer), ואת ההרשאות לכתיבת רשומות ביומן ולמחיקת יומנים. עם זאת, התפקיד הזה לא מאפשר למשתמשים ליצור sinks, לקרוא יומני ביקורת של בקרת הרשאות גישה לנתונים שנמצאים בקטגוריה _Default או לקרוא יומנים שנמצאים בקטגוריות של יומנים שהוגדרו על ידי משתמשים.

  • כדי לתת גישה מלאה לרוב שירותי Google Cloud , צריך להקצות את התפקיד "בעלים" (roles/owner).

הקצאת תפקידים

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

אתם יכולים להקצות לאותו משתמש כמה תפקידים. במאמר הצגת המטא-נתונים של התפקיד תוכלו לראות את רשימת ההרשאות שכל תפקיד מכיל.

אם אתם מנסים לגשת למשאב Google Cloud ואין לכם את ההרשאות הנדרשות, פנו לחשבון המשתמש שרשום כבעלים של המשאב.

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

כדי ליצור תפקיד בהתאמה אישית עם הרשאות רישום ביומן:

הסבר על תפקידים בהתאמה אישית ב-IAM

הרשאות ב-Cloud Logging

בטבלה הבאה מופיעה רשימה חלקית של ההרשאות שנדרשות לתכונות ספציפיות של Cloud Logging. הטבלה הזו יכולה לעזור לכם לזהות את ההרשאות שאתם צריכים כדי להשתמש בדפים כמו Logs Explorer.

בטבלה, a.b.{x,y} פירושו a.b.x ו-a.b.y.

פעילות במסוף ההרשאות הנדרשות
הרשאת קריאה בלבד מינימלית logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
צפייה ביומני בקרת הרשאות גישה לנתונים logging.privateLogEntries.list
הצגת הכיורים logging.sinks.{list, get}
צפייה בשימוש ביומנים logging.usage.get
הורדת היומנים logging.logEntries.{list, download}

כדי להוריד יומנים, צריך רק אחת מההרשאות האלה. צריך להקצות ברמת הפרויקט תפקידים שכוללים את ההרשאות להורדת יומנים. אי אפשר להוריד יומנים אם תפקיד שכולל את ההרשאות האלה ניתן בקובץ המדיניות של IAM בתצוגת היומנים.

הצגת רשימה וצפייה באוספי תצוגות יומן logging.logScopes.{get, list}
הצגת אוסף תצוגות היומן שמוגדר כברירת מחדל observability.scopes.get
החרגת יומנים logging.exclusions.{list, create, get, update, delete}

כשיוצרים תפקיד בהתאמה אישית שכולל הרשאות לניהול מסנני החרגה, צריך להוסיף לתפקיד את ההרשאות logging.sinks.* במקום את ההרשאות logging.exclusions.*.

יצירה ושימוש בכיורים logging.sinks.{list, create, get, update, delete}

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

אחרי שהרשומות ביומנים מנותבות ליעד נתמך, הגישה אליהן נשלטת באופן מלא על ידי ההרשאות והתפקידים ב-IAM ביעד.

שמירה ושימוש בשאילתות פרטיות logging.queries.usePrivate
logging.queries.{listShared,getShared}
שמירה ושימוש בשאילתות משותפות logging.queries.{share, getShared, updateShared, deleteShared, listShared}
יצירה וניהול של אוספי תצוגות יומן logging.logScopes.{create, delete, get, list, update}
הגדרה וניהול של אוסף תצוגות היומן שמוגדר כברירת מחדל observability.scopes.{get, update}

הרשאות לשורת הפקודה

הפקודות של gcloud logging נשלטות על ידי הרשאות IAM.

כדי להשתמש בפקודות של gcloud logging, לחשבונות המשתמשים צריכה להיות ההרשאה serviceusage.services.use.

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