Anleitung zur Zugriffssteuerung

Auf dieser Seite wird beschrieben, wie Cloud Logging mithilfe von IAM (Identity and Access Management) den Zugriff auf Logging-Daten in Google Cloud-Ressourcen steuert.

Übersicht

IAM-Berechtigungen und -Rollen bestimmen, wie Sie die Logging API, den Log-Explorer und das gcloud-Befehlszeilentool verwenden können.

Logs sind in Log-Buckets von Google Cloud-Projekten, Organisationen, Ordnern und Rechnungskonten enthalten. Jede dieser Google Cloud-Ressourcen kann eigene Mitglieder mit eigenen Cloud Logging-Rollen und -Berechtigungen haben.

Wenn Sie Logging für die Logging-Daten in einem Google Cloud-Projekt nutzen möchten, müssen Sie Mitglied sein und eine IAM-Rolle haben, die Ihnen die Berechtigung zur Anwendung von Logging gewährt. Die folgenden IAM-Rollen sind für Logging relevant:

  • roles/logging.viewer (Logbetrachter) bietet Ihnen Lesezugriff auf alle Logging-Features mit Ausnahme von Access Transparency-Logs sowie Audit-Logs zum Datenzugriff.

  • roles/logging.privateLogViewer (Betrachter privater Logs) enthält roles/logging.viewer sowie die Möglichkeit, Access Transparency-Logs und Audit-Logs zum Datenzugriff zu lesen. Diese Rolle gilt nur für _Required- und _Default-Buckets.

  • roles/logging.logWriter (Logautor) 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 Log-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 Logkonfigurationen) gibt Ihnen die Berechtigung, logbasierte Messwerte, Ausschlüsse, Buckets und Ansichten zu erstellen sowie Senken zu exportieren. Um den Log-Explorer (Console) für diese Aktionen zu verwenden, fügen Sie roles/logging.viewer hinzu.

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

  • roles/logging.viewAccessor (Zugriffssteuerung für Logs) gibt Ihnen die Berechtigung, Logs in einer Ansicht zu lesen. 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/viewer (Projektbetrachter) ist mit roles/logging.viewer identisch. Mit dieser Rolle erhalten Sie Lesezugriff auf alle Logging-Features mit Ausnahme von Access Transparency-Logs und Audit-Logs zum Datenzugriff. Diese Rolle gilt nur für _Required- und _Default-Buckets.

  • 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 Exportsenken erstellen und keine Access Transparency-Logs oder Audit-Logs zum Datenzugriff lesen.

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

Weitere Informationen zu den Rollen und Berechtigungen in Logging finden Sie auf dieser Seite unter Berechtigungen und Rollen.

Rollen zuweisen

Wenn Sie einem Mitglied eine Rolle zuweisen möchten, müssen Sie die Berechtigungen in roles/owner (Projektinhaber) haben. Informationen zum Gewähren von Rollen finden Sie unter Zugriff gewähren, ändern und aufheben.

Wenn Sie versuchen, auf eine Google Cloud-Ressource zuzugreifen und nicht die erforderlichen Berechtigungen haben, wenden Sie sich an das Mitglied, das als Inhaber der Ressource aufgeführt ist.

Berechtigungen und Rollen

In der folgenden Tabelle sind die IAM-Rollen aufgeführt, die Zugriff auf Cloud Logging gewähren. Zu jeder Rolle gehört ein bestimmter Satz an Logging-Berechtigungen. Rollen können Mitgliedern der aufgelisteten Ressourcentypen zugewiesen werden.

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

Rollenname Rollentitel Logging-Berechtigungen Ressourcentyp
roles/
logging.viewer
Loganzeige logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
logging.buckets.{list, get}
logging.usage.get
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
Projekt, Organisation,
Ordner, Rechnungskonto
roles/
logging.privateLogViewer
Betrachter privater Logs roles/logging.viewer-Berechtigungen sowie:
logging.privateLogEntries.list
Projekt, Organisation,
Ordner, Rechnungskonto
roles/
logging.logWriter
Logautor logging.logEntries.create Projekt, Organisation,
Ordner, Rechnungskonto
roles/
logging.configWriter
Autor von Log-Konfigurationen logging.buckets.{list, create, get, update, delete, undelete}
logging.cmekSettings.{get, update}
logging.exclusions.{list, create, get, update, delete}
logging.locations.{list, get}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, create, get, update, delete}
logging.views.{list, create, get, update, delete}
resourcemanager.projects.{get, list}
Projekt, Organisation,
Ordner, Rechnungskonto
roles/
logging.bucketWriter
Log-Bucket-Autor logging.buckets.write Projekt
roles/
logging.viewAccessor
Zugriffsberechtigter für Logbetrachtung logging.views.{access, listLogs, listResourceKeys, listResourceValues}
Projekt, Organisation,
Ordner, Rechnungskonto
roles/
logging.admin
Logging-Administrator logging.exclusions.{list, create, get, update, delete}
logging.locations.{list, get}
logging.logEntries.{create, list}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.{delete, list}
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
logging.buckets.{list, get, update, create, delete, undelete}
logging.views.{list, access, create, get, update, delete, listLogs, listResourceKeys, listResourceValues}
logging.cmekSettings.{get, update}
logging.usage.get
resourcemanager.projects.{get, list}
logging.queries.{get, list, update, create, delete}
Projekt, Organisation,
Ordner, Rechnungskonto
roles/viewer Betrachter logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
Projekt, Organisation,
Ordner
roles/editor Editor roles/viewer-Logging-Berechtigungen sowie:
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
logging.queries.{get, list, update, create, delete}
Projekt, Organisation,
Ordner
roles/owner Inhaber roles/editor-Logging-Berechtigungen sowie:
logging.privateLogEntries.list
logging.sinks.{create, update, delete}
logging.queries.{get, list, update, create, delete}
Projekt, Organisation,
Ordner

Benutzerdefinierte Rollen

So erstellen Sie eine benutzerdefinierte Rolle mit Logging-Berechtigungen:

  • Wählen Sie für eine Rolle, die Berechtigungen für die Logging API gewährt, aus den Berechtigungen unter API-Berechtigungen aus.

  • Wählen Sie für eine Rolle, die Berechtigungen zur Verwendung von Log-Explorer gewährt, aus Berechtigungsgruppen unter Console-Berechtigungen aus.

  • Rufen Sie für eine Rolle, die Berechtigungen zur Verwendung von gcloud logging gewährt, die Übersicht zum gcloud-Tool auf.

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.

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

Konsolenberechtigungen

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 Ansehen von Access Transparency-Logs hinzufügen logging.privateLogEntries.list hinzufügen
Erlaubnis zum Ansehen logbasierter Messwerte hinzufügen logging.logMetrics.{list, get} hinzufügen
Erlaubnis zum Anzeigen von Exporten 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 zum Exportieren von Logs hinzufügen logging.sinks.{list, create, get, update, delete} hinzufügen
Erlaubnis zum Erstellen logbasierter Messwerte hinzufügen logging.logMetrics.{list, create, get, update, delete} 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 IAM-Rolle haben, die dem Speicherort des Logs und Ihrem Anwendungsfall entspricht. Weitere Informationen finden Sie unter Berechtigungen der Befehlszeilenschnittstelle.

Exportierte Logs aufrufen

Zum Erstellen einer Senke für den Export von Logs benötigen Sie die Berechtigung roles/logging.configWriter, roles/logging.admin oder roles/owner.

Sobald eine Senke mit dem Logexport beginnt, hat sie uneingeschränkten Zugriff auf alle eingehenden Logeinträge. Senken können private Logeinträge exportieren, einschließlich Access Transparency-Logs und Audit-Logs zum Datenzugriff.

Nachdem Ihre Logeinträge exportiert wurden, wird der Zugriff auf die exportierten Kopien vollständig durch die IAM-Berechtigungen und -Rollen des Ziels – Cloud Storage, BigQuery oder Pub/Sub – gesteuert.

Zugriffsbereiche in Logging

Zugriffsbereiche sind die alte Methode zum Festlegen von Berechtigungen für Ihre 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

Best Practices

  • Nachdem nun IAM-Rollen verfügbar sind, ist es sinnvoll, allen Ihren VM-Instanzen den Berechtigungsumfang "Uneingeschränkter Zugriff auf alle aktivierten Google Cloud APIs" zuzuweisen:

    https://www.googleapis.com/auth/cloud-platform

    Sie können im Dienstkonto Ihrer VM-Instanz spezielle IAM-Rollen zuweisen, um den Zugriff auf bestimmte APIs einzuschränken. Weitere Informationen finden Sie unter Dienstkontoberechtigungen.

  • Wenn Sie eine benutzerdefinierte Rolle erstellen, die Berechtigungen zum Verwalten von Ausschlüssen enthält, empfehlen wir, die Rolle logging.sinks.* statt der Berechtigungen logging.exclusions.* zu gewähren.

    Die Verwaltung von Ausschlüssen ist Teil der Log-Senken. Daher sind alle Berechtigungen für die Verwaltung von Senken, einschließlich Ausschlüssen, in den logging.sinks.*-Berechtigungen enthalten.