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

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

סקירה כללית

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

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

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

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

הענקת גישה למאגרי יומנים

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

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

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

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

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

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

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

בטבלה הבאה מפורטים התפקידים המוגדרים מראש ב-Logging. בטבלה מופיעים השם והתיאור של כל תפקיד, ההרשאות שכלולות בו וסוג המשאב ברמה הנמוכה ביותר שבו אפשר להעניק את התפקיד. אפשר להעניק את התפקידים המוגדרים מראש ברמת הפרויקט או, ברוב המקרים, בכל סוג גבוה יותר בהיררכיית המשאבים. Cloud de Confiance כדי להגביל את הגישה של התפקיד Logs View Accessor לתצוגת יומן בקטגוריה, משתמשים במאפייני משאבים לתנאים של 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.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.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

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.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.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

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 Admin (אדמין של 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, צריך להעניק לו את התפקיד Logs Writer ‏ (roles/logging.logWriter). התפקיד הזה לא מעניק הרשאות צפייה.

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

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

  • כדי לתת גישת צפייה לרוב השירותים Cloud de Confiance by S3NS , צריך להקצות את התפקיד 'צפייה' (roles/viewer).

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

  • כדי לתת גישת עריכה לרוב השירותים של Cloud de Confiance by S3NS , צריך להקצות את התפקיד 'עריכה' (roles/editor).

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

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

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

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

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

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

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

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

מידע נוסף על תפקידים בהתאמה אישית זמין במאמר הסבר על תפקידים בהתאמה אישית ב-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}
צפייה באוסף תצוגות יומן (log scope) ברירת המחדל observability.scopes.get
החרגת יומנים logging.exclusions.{list, create, get, update, delete}

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

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

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

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

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

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

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

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

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