Zugriffssteuerung mit IAM

In diesem Dokument wird beschrieben, wie Sie mit IAM-Rollen und -Berechtigungen den Zugriff auf Logdaten in der Logging API, dem Log-Explorer und der Google Cloud-Befehlszeile steuern.

Übersicht

Mit IAM-Berechtigungen und -Rollen können Sie auf die Logdaten in der Logging API, im Log-Explorer und in der Google Cloud-Befehlszeile zugreifen.

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.

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

Vordefinierte Rollen

IAM bietet vordefinierte Rollen, die detaillierten Zugriff auf bestimmte Google Cloud-Ressourcen gewähren und unerwünschten Zugriff auf andere Ressourcen verhindern. Google Cloud erstellt und verwaltet diese Rollen und aktualisiert die 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. Für jede Rolle werden in der Tabelle der Rollentitel, die Beschreibung, die enthaltenen Berechtigungen und der Ressourcentyp der untersten Ebene angezeigt, in dem die Rollen gewährt werden können. Sie können die vordefinierten Rollen auf Cloud-Projektebene oder – in den meisten Fällen – alle Typen in der Google Cloud-Hierarchie zuweisen. Mithilfe der Ressourcenattribute für IAM-Bedingungen können Sie die Rollen der Log-Buckets „Autor“ oder „Logansicht“ besser auf die Bucket-Ebene beschränken.

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.access
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.list
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.get
  • 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:

  • Projekt
  • 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.list
  • logging.logServices.list
  • 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:

  • Projekt
  • logging.fields.access

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

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

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) gewährt Hauptkonten Lesezugriff auf die meisten Features von Logging.

    Die Loganzeige-Rolle gewährt Hauptkonten Zugriff auf die Logansicht _AllLogs im Bucket _Required und die Logansicht _Default im _Default-Bucket.

    Mit der Rolle „Loganzeige“ können Hauptkonten die Audit-Logs zum Datenzugriff im Bucket _Default nicht lesen. Hauptkonten benötigen die Rolle „Private Loganzeige“ (roles/logging.privateLogViewer) für die entsprechende Logansicht, um diese Audit-Logs zum Datenzugriff zu lesen.

    Mit der Rolle „Log-Betrachter“ können Hauptkonten Logs lesen, die in benutzerdefinierten Buckets gespeichert sind. Zum Ansehen von Logs in benutzerdefinierten Buckets benötigen Hauptkonten die Rolle „Logzugriffszugriff“ (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 von privaten Logs“ können Hauptkonten keine Audit-Logs zum Datenzugriff lesen, wenn sie in benutzerdefinierten Buckets gespeichert sind. Wenn diese Logs in benutzerdefinierten Buckets gelesen werden sollen, benötigen sie die Rolle „Logzugriffszugriff“ (roles/logging.viewAccessor) für die entsprechende Logansicht.

  • roles/logging.viewAccessor (Logansicht-Zugriff) gewährt Hauptkonten die Berechtigung zum Lesen von Logs, Ressourcenschlüsseln und -werten über eine Logansicht und zum Herunterladen von Logs. Verwenden Sie eine IAM-Bedingung, um diese Rolle auf eine Ansicht in einem bestimmten Bucket zu beschränken. Ein Beispiel finden Sie unter Logs aus einem Bucket lesen.

  • roles/logging.fieldAccessor (Logfeld-Zugriff) gewährt Hauptkonten Berechtigungen für den Zugriff auf eingeschränkte LogEntry-Felder, falls vorhanden, in einem bestimmten Bucket. Weitere Informationen finden sich unter Zugriffssteuerung auf Feldebene.

  • roles/logging.logWriter (Logautor) gewährt Hauptkonten die erforderlichen Berechtigungen zum Schreiben von Logs in die Logging API. Diese Rolle gewährt keine Leseberechtigungen.

  • roles/logging.bucketWriter (Log-Bucket-Autor) gewährt einem Senken-Dienstkonto die erforderlichen Mindestberechtigungen, um Logs an einen bestimmten Bucket weiterzuleiten. Eine Anleitung zum Gewähren von Berechtigungen für ein Senkendienstkonto finden Sie unter Zielberechtigungen festlegen.

  • roles/logging.configWriter (Logkonfigurationsautor) gewährt Hauptkonten die Berechtigung zum Erstellen oder Ändern von Logging-Konfigurationen wie Senken, Buckets, Ansichten, logbasierte Messwerte oder Ausschlüsse. Fügen Sie für diese Aktionen roles/logging.viewer mit dem Log-Explorer hinzu.

  • roles/viewer (Projektbetrachter) ist mit roles/logging.viewer identisch. Die Rolle gewährt Hauptkonten Lesezugriff auf alle Logging-Features mit Ausnahme der Audit-Logs zum Datenzugriff im _Default-Bucket.

  • 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 der Rolle können Hauptkonten keine Senken erstellen oder Audit-Logs zum Datenzugriff lesen, die sich im Bucket _Default befinden.

  • roles/owner (Projektinhaber) gewährt Hauptkonten vollständigen Zugriff auf Logging, einschließlich Lesen der 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 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.

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 an Logs in Google Cloud-Organisationen, -Rechnungskonten und -Ordnern interessiert sind, 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 projects

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

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 „log“ und dem Anwendungsfall entspricht. Weitere Informationen finden Sie unter Berechtigungen für die Befehlszeile.

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 dem Logkonfigurationsautor (roles/logging.configWriter) können Hauptkonten logbasierte Messwerte auflisten, erstellen, abrufen, aktualisieren und löschen.

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

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

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

Berechtigungen für logbasierte Benachrichtigungen

Im Folgenden finden Sie eine Zusammenfassung der gemeinsamen Rollen und Berechtigungen, die ein Hauptkonto zum Erstellen und Verwalten logbasierter Benachrichtigungen benötigt:

  • 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 „Logging-Administrator“ enthalten. Wenn Sie diese Rolle nicht gewähren möchten, gehen Sie so vor:

  • 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 keine dieser Rollen zuweisen möchten, erstellen Sie eine benutzerdefinierte Rolle und nehmen Sie die Berechtigungen in die Rollen „Monitoring-Benachrichtigungseditor“ und „Monitoring-Benachrichtigungskanal-Bearbeiter“ auf.

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 Ihrer Dienstkonten und der Zugriffsebenen finden Sie unter Dienstkontoberechtigungen.