Zugriffssteuerung mit IAM

Auf dieser Seite wird beschrieben, wie Sie IAM-Rollen und -Berechtigungen (Identity and Access Management) verwenden, um den Zugriff auf Cloud Logging-Daten in Google Cloud-Ressourcen zu steuern.

Übersicht

IAM-Berechtigungen und -Rollen bestimmen Ihre Fähigkeit, auf Logdaten in der Logging API, dem Log-Explorer und im gcloud-Befehlszeilentool zuzugreifen.

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 innerhalb einer Google Cloud-Ressource wie einem Google Cloud-Projekt, -Ordner, -Bucket oder einer -Organisation verwenden möchten, müssen Sie 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, wenn z. B. neue Logging-Funktionen hinzugefügt werden.

In der folgenden Tabelle sind die Logging-Rollen, die Titel der Rollen, ihre Beschreibungen, die enthaltenen Berechtigungen und der Ressourcentyp der untersten Ebene aufgeführt, für den die Rollen festgelegt werden können. Eine bestimmte Rolle kann diesem Ressourcentyp oder in den meisten Fällen einem übergeordneten Typ in der Google Cloud-Hierarchie zugewiesen werden.

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

Rolle Berechtigungen

Logging-Administrator
(roles/logging.admin)

Alle Berechtigungen zum Verwenden aller Features von Cloud Logging

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.*
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.*
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.*
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Log-Bucket-Autor
(roles/logging.bucketWriter)

Kann Logs in einen Log-Bucket schreiben

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Bucket
  • logging.buckets.write

Autor von Log-Konfigurationen
(roles/logging.configWriter)

Berechtigungen zum Lesen und Schreiben der Konfigurationen logbasierter Messwerte und Senken zum Exportieren von Logs

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.notificationRules.*
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Zugriffsberechtigter für Logfelder
(roles/logging.fieldAccessor)

Fähigkeit zum Lesen eingeschränkter Felder in einem Log-Bucket.

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Bucket
  • logging.fields.*

Log-Autor
(roles/logging.logWriter)

Berechtigung zum Schreiben von Log-Einträgen

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.logEntries.create

Betrachter privater Logs
(roles/logging.privateLogViewer)

Berechtigungen der Logbetrachter-Rolle und Lesezugriff auf Logeinträge in privaten Logs

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.privateLogEntries.*
  • 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.*
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Zugriffsberechtigter für Logbetrachtung
(roles/logging.viewAccessor)

Kann Logs in einer Ansicht lesen

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues

Loganzeige
(roles/logging.viewer)

Berechtigung zum Aufrufen von Logs

Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:

  • Projekt
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • 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.*
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get

Weitere Gesichtspunkte

Berücksichtigen Sie bei der Entscheidung, welche Berechtigungen und Rollen für die Anwendungsfälle Ihrer Hauptkonten gelten Folgendes:

  • roles/logging.admin (Logging-Administrator) gewährt Ihnen alle Berechtigungen im Zusammenhang mit Logging.

  • roles/logging.viewer (Loganzeige) bietet Ihnen Lesezugriff auf die meisten Features von Logging.

    Die Rolle "Log-Betrachter" gewährt Ihnen Zugriff auf die Logansicht _AllLogs im Bucket _Required und die Logansicht _Default im _Default-Bucket.

    Mit der Rolle "Log-Betrachter" können Sie keine Audit-Logs zum Datenzugriff lesen, die sich im Bucket _Default befinden. Zum Lesen dieser Audit-Logs zum Datenzugriff benötigen Sie die Rolle Privater Betrachter (roles/logging.privateLogViewer) für die entsprechende Logansicht.

    Mit der Rolle "Log-Betrachter" können Sie keine Logs lesen, die in benutzerdefinierten Buckets gespeichert sind. Zum Lesen von Logs in benutzerdefinierten Buckets benötigen Sie die Rolle "Zugriffsberechtigter für Logbetrachtung" (roles/logging.viewAccessor) für die entsprechende Logansicht.

  • roles/logging.privateLogViewer (Betrachter privater Logs) enthält alle Berechtigungen, die in roles/logging.viewer enthalten sind, sowie die Möglichkeit, Audit-Logs zum Datenzugriff im Bucket _Default zu lesen.

    Mit der Rolle "Betrachter privater Logs" können Sie Audit-Logs zum Datenzugriff nicht lesen, wenn sie in benutzerdefinierten Buckets gespeichert sind. Zum Lesen dieser Logs in benutzerdefinierten Buckets benötigen Sie die Rolle "Zugriffsberechtigter für Logbetrachtung" (roles/logging.viewAccessor) für die entsprechende Logansicht.

  • roles/logging.viewAccessor (Zugriffsberechtigter für Logbetrachtung) gibt Ihnen die Berechtigung, Logs, Ressourcenschlüssel und Werte in einer Logansicht zu lesen und Logs herunterzuladen. Verwenden Sie eine IAM-Bedingung, um diese Rolle auf eine Ansicht in einem bestimmten Bucket einzuschränken. Ein Beispiel finden Sie unter Logs aus einem Bucket lesen.

  • roles/logging.fieldAccessor (Zugriffsberechtigter für Logs-Feld) gibt Ihnen die Berechtigung, Logs, Ressourcenschlüssel und Werte für eine Teilmenge von LogEntry-Feldern für einen bestimmten Bucket zu lesen, einschließlich benutzerdefinierter Buckets. Weitere Informationen finden sich unter Zugriffssteuerung auf Feldebene.

  • roles/logging.logWriter (Log-Autor) kann Dienstkonten zugewiesen werden, um Anwendungen genau die zum Schreiben von Logs erforderlichen Berechtigungen zu gewähren. Diese Rolle gewährt keine Berechtigungen zum Betrachten.

  • roles/logging.bucketWriter (Autor von Log-Buckets) kann Dienstkonten zugewiesen werden, um Cloud Logging ausreichend Berechtigungen zum Schreiben von Logs in einen Bucket zu gewähren. Verwenden Sie eine IAM-Bedingung, um diese Rolle auf einen bestimmten Bucket zu beschränken. Ein Beispiel finden Sie unter Logs von einem Projekt zu einem anderen Bucket in einem anderen Projekt weiterleiten.

  • roles/logging.configWriter (Autor von Log-Konfigurationen) gibt Ihnen die Berechtigung, logbasierte Messwerte, Ausschlüsse, Buckets und Ansichten zu erstellen sowie Senken zu verwenden. Um den Log-Explorer (Konsole) für diese Aktionen zu verwenden, fügen Sie roles/logging.viewer hinzu.

  • roles/viewer (Projektbetrachter) ist mit roles/logging.viewer identisch. Mit dieser Rolle erhalten Sie Lesezugriff auf alle Logging-Features mit Ausnahme der Anzeige von Audit-Logs zum Datenzugriff im Bucket _Default.

  • roles/editor (Projektbearbeiter) umfasst die Berechtigungen von roles/logging.viewer sowie Berechtigungen zum Schreiben von Logeinträgen, zum Löschen von Logs und zum Erstellen logbasierter Messwerte. Mit dieser Rolle können Sie keine Senken erstellen oder Audit-Logs zum Datenzugriff im Bucket _Default lesen.

  • roles/owner (Projektinhaber) gewährt Ihnen vollen Zugriff auf Logging, einschließlich das Lesen von Audit-Logs zum Datenzugriff.

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 versuchen, auf eine Google Cloud-Ressource zuzugreifen und nicht die erforderlichen Berechtigungen haben, wenden Sie sich an den Hauptkonto, der 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.

API-Berechtigungen

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 Logs für Google Cloud-Organisationen, -Rechnungskonten und -Ordner verwenden möchten, müssen Sie beachten, dass für diese Ressourcen eigene API-Methoden für logs und sinks vorhanden sind. 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 Projekte

Cloud Console-Berechtigungen

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

Befehlszeilenberechtigungen

gcloud logging-Befehle werden durch IAM-Berechtigungen gesteuert.

Um einen der gcloud logging-Befehle zu verwenden, benötigen Sie die Berechtigung serviceusage.services.use.

Sie müssen außerdem die Cloud IAM-Rolle haben, die der Ressource des Logs und Ihrem Anwendungsfall entspricht. Weitere Informationen finden Sie unter Berechtigungen der Befehlszeilenschnittstelle.

Berechtigungen für Log-Routing

Informationen zum Festlegen von Zugriffssteuerungen beim Erstellen und Verwalten von Senken zum Weiterleiten von Logs finden Sie unter Senken konfigurieren: 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 Autor von Log-Konfigurationen (roles/logging.configWriter) können Sie logbasierte Messwerte auflisten, erstellen, abrufen, aktualisieren und löschen.

  • Mit Loganzeige (roles/logging.viewer) können Sie vorhandene Messwerte einsehen. Sie können auch die Berechtigungen logging.logMetrics.get und logging.logMetrics.list zu einer benutzerdefinierten Rolle hinzufügen.

  • Mit Monitoring Betrachter (roles/monitoring.viewer) können Sie TimeSeries-Daten lesen. Sie können einer benutzerdefinierten Rolle auch die Berechtigung monitoring.timeSeries.list hinzufügen.

  • Mit Logging-Administrator (roles/logging.admin), Projektbearbeiter (roles/editor) und Projektinhaber (roles/owner) können Sie logbasierte Messwerte (logging.logMetrics.create) erstellen.

Berechtigungen für logbasierte Benachrichtigungen

Im Folgenden finden Sie eine Zusammenfassung der allgemeinen Rollen und Berechtigungen, die ein Hauptkonto benötigt, um logbasierte Benachrichtigungen zu erstellen und zu verwalten:

  • Logging-Administrator (roles/logging.admin). Ein Hauptkonto benötigt insbesondere die folgenden Berechtigungen zum Lesen von Logs und zum Verwalten von Logging-Benachrichtigungsregeln:

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

    Diese Berechtigungen sind in der Rolle LoggingLogging-Administrator“ enthalten. Wenn Sie diese Rolle nicht gewähren möchten, haben Sie folgende Möglichkeiten:

  • Bearbeiter von Monitoring-Benachrichtigungsrichtlinien (roles/monitoring.alertPolicyEditor) und Monitoring-Benachrichtigungskanal-Bearbeiter (roles/monitoring.notificationChannelEditor) enthalten die Berechtigungen, die zum Verwalten der Benachrichtigungsrichtlinien erforderlich sind und der Benachrichtigungskanäle, die von logbasierten Benachrichtigungen verwendet werden:

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

    Die erforderlichen Berechtigungen sind auch in den Rollen Monitoring-Bearbeiter (roles/monitoring.editor) und Monitoring-Administrator (roles/monitoring.admin) enthalten.

    Wenn Sie diese Rollen nicht zuweisen möchten, können Sie eine benutzerdefinierte Rolle erstellen und die Berechtigungen in die Rollen des Monitoring-Benachrichtigungsrichtlinien-Bearbeiters und des Monitoring-Benachrichtigungskanal-Bearbeiters aufnehmen.

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 dazu, wie Sie mit dieser Legacy-Methode die Zugriffsebenen für Ihre Dienstkonten festlegen, finden Sie unter Dienstkontoberechtigungen.