Zugriffssteuerung mit IAM

In diesem Dokument wird beschrieben, wie Sie mit IAM-Rollen (Identity and Access Management) den Zugriff auf Logdaten in der Logging API, im Log-Explorer und in der Google Cloud CLI steuern.

Überblick

IAM-Berechtigungen und -Rollen bestimmen, ob Sie in der Logging API, im Log-Explorer und in der Google Cloud CLI auf Logdaten zugreifen können.

Eine Rolle ist eine Sammlung von Berechtigungen. Sie können einem Hauptkonto Berechtigungen nicht direkt erteilen. Stattdessen weisen Sie ihm eine Rolle zu. Wenn Sie einem Hauptkonto eine Rolle zuweisen, erhält er alle mit ihr verknüpften Berechtigungen. Einem Hauptkonto können mehrere Rollen zugewiesen werden.

Wenn Sie Logging in einer Google Cloud-Ressource wie einem Google Cloud-Projekt, einem Ordner, einem Bucket oder einer Organisation verwenden möchten, muss ein Hauptkonto eine IAM-Rolle mit den entsprechenden Berechtigungen haben.

Vordefinierte Rollen

IAM bietet vordefinierte Rollen, um detaillierten Zugriff auf bestimmte Google Cloud-Ressourcen zu gewähren und unerwünschten Zugriff auf andere Ressourcen zu verhindern. Google Cloud erstellt und verwaltet diese Rollen und aktualisiert ihre Berechtigungen automatisch nach Bedarf, z. B. wenn Logging neue Funktionen hinzufügt.

In der folgenden Tabelle sind die vordefinierten Rollen für Logging aufgeführt. In der Tabelle werden für jede Rolle der Rollentitel, die Beschreibung, die enthaltenen Berechtigungen und der Ressourcentyp der niedrigsten Ebene angezeigt, für den die Rollen gewährt werden können. Sie können die vordefinierten Rollen auf Google Cloud-Projektebene oder in den meisten Fällen für jeden Typ weiter oben in der Google Cloud-Hierarchie zuweisen. Verwenden Sie Ressourcenattribute für IAM-Bedingungen, um die Rolle des Zugriffs auf die Logansicht noch stärker auf die Bucket-Ebene einzugrenzen.

Eine Liste aller einzelnen Berechtigungen, die in einer Rolle enthalten sind, finden Sie unter Rollenmetadaten abrufen.

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:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

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.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.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

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

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.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:

  • Project

logging.buckets.create

logging.buckets.delete

logging.buckets.get

logging.buckets.list

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.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.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

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.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:

  • Project

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.privateLogEntries.list

logging.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

resourcemanager.projects.get

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

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.queries.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

resourcemanager.projects.get

Die folgenden Abschnitte enthalten zusätzliche Informationen, damit Sie besser entscheiden können, welche Rollen für die Anwendungsfälle Ihrer Hauptkonten gelten.

Loggingrollen

  • Damit ein Nutzer alle Aktionen in Logging ausführen kann, müssen Sie die Rolle „Logging Admin“ (roles/logging.admin) zuweisen.

  • Damit Nutzer Logging-Konfigurationen wie Senken, Buckets, Ansichten, Links, logbasierte Messwerte oder Ausschlüsse erstellen und ändern können, müssen Sie die Rolle „Autor von Logkonfigurationen“ (roles/logging.configWriter) zuweisen.

  • Damit Nutzer Logs in den Buckets _Required und _Default lesen können, müssen Sie ihnen im Log-Explorer und auf der Seite „Loganalysen“ eine der folgenden Rollen zuweisen:

    • Erteilen Sie die Rolle „Loganzeige“ (roles/logging.viewer) für den Zugriff auf alle Logs im Bucket _Required und auf die Ansicht _Default im Bucket _Default.
    • Für den Zugriff auf alle Logs in den Buckets _Required und _Default, einschließlich Datenzugriffslogs, gewähren Sie die Rolle „Betrachter privater Logs“ (roles/logging.privateLogViewer).
  • Damit ein Nutzer Logs lesen kann, die in einem benutzerdefinierten Bucket gespeichert sind, müssen Sie die Rolle „Zugriffsfunktion für Logansicht“ (roles/logging.viewAccessor) erteilen. Mit einer IAM-Bedingung können Sie die Autorisierung auf eine bestimmte Logansicht in einem bestimmten Bucket beschränken. Weitere Informationen finden Sie unter Zugriff auf eine Logansicht gewähren.

  • Um einem Nutzer Zugriff auf eingeschränkte LogEntry-Felder in einem bestimmten Bucket zu gewähren, weisen Sie die Rolle „Zugriffsfunktion für Logfelder (roles/logging.fieldAccessor)“ zu. Weitere Informationen finden Sie unter Zugriff auf Feldebene konfigurieren.

  • Damit Nutzer Logs mit der Logging API schreiben können, müssen Sie die Rolle „Logautor“ (roles/logging.logWriter) zuweisen. Diese Rolle gewährt keine Berechtigungen zum Betrachten.

  • Damit das Dienstkonto einer Senke Logs an einen Bucket in einem anderen Google Cloud-Projekt weiterleiten kann, weisen Sie dem Dienstkonto die Rolle „Log-Bucket-Autor“ (roles/logging.bucketWriter) zu. Eine Anleitung zum Gewähren von Berechtigungen für ein Dienstkonto finden Sie unter Zielberechtigungen festlegen.

Rollen auf Projektebene

  • Um Lesezugriff auf die meisten Google Cloud-Dienste zu gewähren, gewähren Sie die Rolle „Betrachter“ (roles/viewer).

    Diese Rolle umfasst alle Berechtigungen, die von der Rolle „Logbetrachter“ (roles/logging.viewer) gewährt werden.

  • Um Bearbeitungszugriff auf die meisten Google Cloud-Dienste zu gewähren, müssen Sie die Rolle „Bearbeiter“ (roles/editor) zuweisen.

    Diese Rolle umfasst alle Berechtigungen, die von der Rolle der Loganzeige (roles/logging.viewer) gewährt werden, sowie die Berechtigungen zum Schreiben von Logeinträgen, zum Löschen von Logs und zum Erstellen logbasierter Messwerte. Mit dieser Rolle können Nutzer jedoch keine Senken erstellen und keine Audit-Logs zum Datenzugriff lesen, die sich im Bucket _Default befinden, oder Logs lesen, die sich in benutzerdefinierten Log-Buckets befinden.

  • Wenn Sie vollen Zugriff auf die meisten Google Cloud-Dienste gewähren möchten, gewähren Sie die Rolle „Inhaber“ (roles/owner).

Rollen werden gewährt

Informationen zum Zuweisen von Rollen an Hauptkonto finden Sie unter Zugriff erteilen, ändern und entziehen.

Einem Nutzer können mehrere Rollen zugewiesen werden. Eine Liste der in einer Rolle enthaltenen Berechtigungen finden Sie unter Rollenmetadaten abrufen.

Wenn Sie auf eine Google Cloud-Ressource zugreifen möchten und nicht die erforderlichen Berechtigungen haben, wenden Sie sich an das Hauptkonto, das als Inhaber für die Ressource aufgeführt ist.

Benutzerdefinierte Rollen

So erstellen Sie eine benutzerdefinierte Rolle mit Logging-Berechtigungen:

Weitere Details zu benutzerdefinierten Rollen finden Sie unter Informationen zu benutzerdefinierten IAM-Rollen.

Berechtigungen für die Logging API

Für Logging API-Methoden sind spezielle IAM-Berechtigungen erforderlich. In der folgenden Tabelle finden Sie die für die API-Methoden notwendigen Berechtigungen.

Wenn Sie sich für Logs in Google Cloud-Organisationen, -Rechnungskonten und -Ordnern interessieren, beachten Sie, dass diese Ressourcen ihre eigenen API-Methoden für logs und sinks haben. Statt alle Methoden in der Tabelle zu wiederholen, werden nur die projects-Methoden einzeln aufgeführt.

Logging-Methode Erforderliche Berechtigung Ressourcentyp
billingAccounts.logs.* logging.logs.* (siehe projects.logs.*) Rechnungskonten
billingAccounts.sinks.* logging.sinks.* (siehe projects.sinks.*) Rechnungskonten
billingAccounts.locations.buckets.* logging.buckets.* (siehe projects.locations.buckets.*) Rechnungskonten
entries.list logging.logEntries.list oder
logging.privateLogEntries.list
Projekte, Organisationen,
Ordner, Rechnungskonten
entries.tail logging.logEntries.list oder
logging.privateLogEntries.list
Projekte, Organisationen,
Ordner, Rechnungskonten
entries.write logging.logEntries.create Projekte, Organisationen,
Ordner, Rechnungskonten
folders.logs.* logging.logs.* (siehe projects.logs.*) Ordner
folders.sinks.* logging.sinks.* (siehe projects.sinks.*) Ordner
folders.locations.buckets.* logging.buckets.* (siehe projects.locations.buckets.*) Ordner
monitoredResourceDescriptors.list (keine) (keine)
organizations.logs.* logging.logs.* (siehe projects.logs.*) organizations
organizations.sinks.* logging.sinks.* (siehe projects.sinks.*) organizations
organizations.locations.buckets.* logging.buckets.* (siehe projects.locations.buckets.*) organizations
projects.exclusions.create logging.exclusions.create Projekte
projects.exclusions.delete logging.exclusions.delete Projekte
projects.exclusions.get logging.exclusions.get Projekte
projects.exclusions.list logging.exclusions.list Projekte
projects.exclusions.patch logging.exclusions.update Projekte
projects.logs.list logging.logs.list Projekte
projects.logs.delete logging.logs.delete Projekte
projects.sinks.list logging.sinks.list Projekte
projects.sinks.get logging.sinks.get Projekte
projects.sinks.create logging.sinks.create Projekte
projects.sinks.update logging.sinks.update Projekte
projects.sinks.delete logging.sinks.delete Projekte
projects.locations.buckets.list logging.buckets.list Projekte
projects.locations.buckets.get logging.buckets.get Projekte
projects.locations.buckets.patch logging.buckets.update Projekte
projects.locations.buckets.create logging.buckets.create Projekte
projects.locations.buckets.delete logging.buckets.delete Projekte
projects.locations.buckets.undelete logging.buckets.undelete Projekte
projects.metrics.list logging.logMetrics.list Projekte
projects.metrics.get logging.logMetrics.get Projekte
projects.metrics.create logging.logMetrics.create Projekte
projects.metrics.update logging.logMetrics.update Projekte
projects.metrics.delete logging.logMetrics.delete Projekt

Berechtigungen für die Google Cloud Console

In der folgenden Tabelle sind die Berechtigungen aufgeführt, die für die Verwendung des Log-Explorers erforderlich sind.

a.b.{x,y} bedeutet in der Tabelle a.b.x und a.b.y.

Console-Aktivität Erforderliche Berechtigung
Minimaler Lesezugriff logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
Erlaubnis zum Ansehen von Audit-Logs zum Datenzugriff hinzufügen logging.privateLogEntries.list hinzufügen
Erlaubnis zum Anzeigen log-basierter Messwerte hinzufügen logging.logMetrics.{list, get} hinzufügen
Erlaubnis zum Ansehen von Senken hinzufügen logging.sinks.{list, get} hinzufügen
Erlaubnis zum Anzeigen der Lognutzung hinzufügen logging.usage.get hinzufügen
Erlaubnis zum Ausschließen von Logs hinzufügen logging.exclusions.{list, create, get, update, delete} hinzufügen
Erlaubnis zur Verwendung von Senken hinzufügen logging.sinks.{list, create, get, update, delete} hinzufügen
Erlaubnis zum Erstellen log-basierter Messwerte hinzufügen logging.logMetrics.{list, create, get, update, delete} hinzufügen
Erlaubnis zum Speichern von Abfragen hinzufügen logging.queries.{list, create, get, update, delete} hinzufügen
Erlaubnis zum Freigeben von Abfragen hinzufügen logging.queries.share hinzufügen
Erlaubnis zum Verwenden der letzten Abfragen hinzufügen logging.queries.{create, list} hinzufügen

Berechtigungen für die Befehlszeile

gcloud logging-Befehle werden durch IAM-Berechtigungen gesteuert.

Hauptkonten müssen die Berechtigung serviceusage.services.use haben, um einen der gcloud logging-Befehle verwenden zu können.

Ein Hauptkonto muss auch die IAM-Rolle haben, die der Ressource des Logs und dem Anwendungsfall entspricht. Weitere Informationen finden Sie unter Berechtigungen für die Befehlszeile.

In der folgenden Liste werden die vordefinierten Rollen und die entsprechenden Berechtigungen zum Verwalten Ihrer verknüpften BigQuery-Datasets beschrieben:

Die zuvor aufgeführten Rollen und Berechtigungen gelten nur für Logging-Seiten wie die Loganalysen-Seite. Wenn Sie Ihre Datasets über die BigQuery-Benutzeroberfläche verwalten, benötigen Sie möglicherweise separate BigQuery-Rollen und -Berechtigungen. Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM für BigQuery.

Berechtigungen für Routinglogs

Informationen zum Festlegen von Zugriffssteuerungen beim Erstellen und Verwalten von Senken zum Weiterleiten von Logs finden Sie unter Zielberechtigungen festlegen.

Die Verwaltung von Ausschlussfiltern ist in die Konfiguration von Senken integriert. Alle Berechtigungen im Zusammenhang mit der Verwaltung von Senken, einschließlich der Einstellung von Ausschlussfiltern, sind in den logging.sinks.*-Berechtigungen enthalten. Wenn Sie eine benutzerdefinierte Rolle erstellen, die Berechtigungen zum Verwalten von Ausschlussfiltern enthält, fügen Sie der Rolle die Berechtigungen logging.sinks.* und nicht die Berechtigungen logging.exclusions.* hinzu.

Nachdem Ihre Logeinträge an ein unterstütztes Ziel weitergeleitet wurden, wird der Zugriff auf die Logkopien vollständig durch IAM-Berechtigungen und -Rollen für die Ziele gesteuert – Cloud Storage, BigQuery oder Pub/Sub.

Berechtigungen für logbasierte Messwerte

Es folgt eine Zusammenfassung der allgemeinen Rollen und Berechtigungen, die ein Hauptkonto benötigt, um auf logbasierte Messwerte zuzugreifen:

  • Mit der Rolle Autor von Logkonfigurationen (roles/logging.configWriter) können Hauptkonten logbasierte Messwerte auflisten, erstellen, abrufen, aktualisieren und löschen.

  • Die Rolle Log-Anzeige (roles/logging.viewer) enthält Berechtigungen zum Ansehen vorhandener Messwerte. Ein Hauptkonto benötigt insbesondere die Berechtigungen logging.logMetrics.get und logging.logMetrics.list, um vorhandene Messwerte anzusehen.

  • Die Rolle Monitoring Viewer (roles/monitoring.viewer) enthält die Berechtigungen zum Lesen von TimeSeries. Insbesondere benötigt ein Hauptkonto die Berechtigung monitoring.timeSeries.list, um Zeitachsendaten zu lesen.

  • Die Rollen Logging Admin (roles/logging.admin), Project Editor (roles/editor) und Project Owner (roles/owner) enthalten die Berechtigungen zum Erstellen logbasierter Messwerte. Ein Hauptkonto benötigt insbesondere die Berechtigung logging.logMetrics.create, um logbasierte Messwerte zu erstellen.

Berechtigungen für logbasierte Benachrichtigungen

Zum Erstellen und Verwalten logbasierter Benachrichtigungen benötigt ein Hauptkonto die folgenden Rollen und Berechtigungen für Logging und Monitoring:

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Logging Admin (roles/logging.admin) für Ihr Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Lesen von Logs und zum Verwalten der Logging-Benachrichtigungsregeln benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Service Usage-Nutzer (roles/serviceusage.serviceUsageConsumer) für Ihr Projekt zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen einer Benachrichtigungsrichtlinie in der Google Cloud CLI benötigen.

Zugriffsbereiche in Logging

Zugriffsbereiche sind die Legacy-Methode zum Festlegen von Berechtigungen für die Dienstkonten in Ihren Compute Engine-VM-Instanzen.

Für die Logging API gelten folgende Zugriffsbereiche:

Zugriffsbereich Erteilte Berechtigungen
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Uneingeschränkter Zugriff auf die Logging API
https://www.googleapis.com/auth/cloud-platform Uneingeschränkter Zugriff auf die Logging API sowie alle anderen aktivierten Google Cloud APIs

Informationen zum Festlegen der Zugriffsebenen für Ihre Dienstkonten mit dieser Legacy-Methode finden Sie unter Dienstkontoberechtigungen.