Zugriffssteuerung mit IAM

In diesem Dokument wird beschrieben, wie Sie mit Rollen und Berechtigungen der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) 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 bei Bedarf automatisch, z. B. wenn Logging neue Features hinzufügt.

In der folgenden Tabelle sind die vordefinierten Rollen für Logging aufgeführt. In der Tabelle werden für jede Rolle der Titel, 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 auf allen Typen weiter oben in der Google Cloud-Hierarchie zuweisen. Sie können die Rolle „Zugriffsfunktion für die Logansicht“ mithilfe von Ressourcenattributen für IAM-Bedingungen eingrenzen.

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.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • 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.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, die Ihnen bei der Entscheidung helfen, welche Rollen für die Anwendungsfälle Ihrer Hauptkonten gelten.

Loggingrollen

  • Damit ein Nutzer alle Aktionen in Logging ausführen kann, weisen Sie die Rolle „Logging-Administrator“ (roles/logging.admin) zu.

  • 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, weisen Sie ihnen im Log-Explorer und auf der Seite „Log Analytics“ eine der folgenden Rollen zu:

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

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

  • Damit Nutzer Logs mithilfe der Logging API schreiben können, müssen Sie die Rolle "Log-Autor" (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

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

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

  • Um Bearbeiterzugriff auf die meisten Google Cloud-Dienste zu gewähren, weisen Sie die Rolle „Bearbeiter“ (roles/editor) zu.

    Diese Rolle umfasst alle Berechtigungen, die mit der Rolle „Logbetrachter“ (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 weder Senken erstellen noch Audit-Logs zum Datenzugriff im Bucket _Default lesen oder Logs lesen, die sich in benutzerdefinierten Log-Buckets befinden.

  • Erteilen Sie die Rolle „Inhaber“ (roles/owner), um vollen Zugriff auf die meisten Google Cloud-Dienste zu gewähren.

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 der 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.*) Organisationen
organizations.sinks.* logging.sinks.* (siehe projects.sinks.*) Organisationen
organizations.locations.buckets.* logging.buckets.* (siehe projects.locations.buckets.*) Organisationen
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.

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

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

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

Die zuvor aufgeführten Rollen und Berechtigungen gelten nur für Logging-Seiten wie die Log Analytics-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 das Routing von Logs

Informationen zum Festlegen der Zugriffssteuerung 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 Loganzeige (roles/logging.viewer) enthält Berechtigungen zum Aufrufen vorhandener Messwerte. Insbesondere benötigt ein Hauptkonto die Berechtigungen logging.logMetrics.get und logging.logMetrics.list, um vorhandene Messwerte aufzurufen.

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

  • Die Rollen Logging-Administrator (roles/logging.admin), Projektbearbeiter (roles/editor) und Projektinhaber (roles/owner) enthalten die Berechtigungen zum Erstellen logbasierter Messwerte. Insbesondere benötigt ein Hauptkonto 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 Rollen und Berechtigungen für Logging und Monitoring.

  • Der Logging-Administrator (roles/logging.admin) enthält die Berechtigungen, die zum Lesen von Logs und zum Verwalten von Logging-Benachrichtigungsregeln erforderlich sind:

    • logging.logs.list
    • logging.logEntries.list
    • logging.notificationRules.create
    • logging.notificationRules.update

    Wenn Sie diese Rolle nicht zuweisen möchten, gehen Sie so vor:

  • Die Rollen Bearbeiter von Monitoring-Benachrichtigungsrichtlinien (roles/monitoring.alertPolicyEditor) und Bearbeiter von Monitoring-Benachrichtigungskanälen (roles/monitoring.notificationChannelEditor) umfassen zusammen die Berechtigungen, die zum Verwalten der von logbasierten Benachrichtigungen verwendeten Benachrichtigungsrichtlinien und -kanäle erforderlich sind:

    • monitoring.alertPolicies.{create, delete, get, list, update}
    • monitoring.notificationChannelDescriptors.{get, list}
    • monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}

    Die Rollen Monitoring Editor (roles/monitoring.editor) und Monitoring Admin (roles/monitoring.admin) enthalten jeweils alle Berechtigungen, die zum Verwalten von Benachrichtigungsrichtlinien und Benachrichtigungskanälen erforderlich sind.

    Wenn Sie keine der Standardrollen für Monitoring zuweisen möchten, erstellen Sie eine benutzerdefinierte Rolle und fügen Sie die Berechtigungen der Rollen „Bearbeiter von Monitoring-Benachrichtigungsrichtlinien“ (roles/monitoring.alertPolicyEditor) und „Bearbeiter von Monitoring-Benachrichtigungskanälen“ (roles/monitoring.notificationChannelEditor) ein.

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 zur Verwendung dieser Legacy-Methode zum Festlegen der Zugriffsebenen für Ihre Dienstkonten finden Sie unter Dienstkontoberechtigungen.