Zugriffssteuerung mit IAM

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

Übersicht

IAM-Berechtigungen und -Rollen bestimmen Ihre Fähigkeit, auf Logdaten in der Logging API, dem Log-Explorer und der Google Cloud CLI 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, muss ein Prinzipal eine IAM-Rolle mit den entsprechenden Berechtigungen haben.

Vordefinierte Rollen

IAM bietet vordefinierte Rollen, mit denen detaillierter Zugriff auf bestimmte Google Cloud -Ressourcen gewährt und unerwünschter Zugriff auf andere Ressourcen verhindert werden kann. Google Cloud erstellt und verwaltet diese Rollen und aktualisiert ihre Berechtigungen bei Bedarf automatisch, z. B. wenn Logging neue Funktionen hinzufügt.

In der folgenden Tabelle sind die vordefinierten Rollen für Logging aufgeführt. Für jede Rolle werden der Titel, die Beschreibung, die enthaltenen Berechtigungen und der Ressourcentyp der untersten 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 einer beliebigen höheren Ebene in der Ressourcenhierarchie zuweisen. Wenn Sie die Rolle „Logs View Accessor“ auf eine Logansicht in einem Bucket beschränken möchten, verwenden Sie Ressourcenattribute für IAM-Bedingungen.

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

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

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

  • logging.sqlAlerts.create
  • logging.sqlAlerts.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

observability.scopes.get

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

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

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

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(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.logScopes.get

logging.logScopes.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

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

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

  • Wenn ein Nutzer Logkonfigurationen erstellen und ändern soll, weisen Sie ihm die Rolle „Autor von Logkonfigurationen“ (roles/logging.configWriter) zu. Mit dieser Rolle können Sie Folgendes erstellen oder ändern:

    Diese Rolle reicht nicht aus, um logbasierte Messwerte oder logbasierte Benachrichtigungsrichtlinien zu erstellen. Informationen zu den für diese Aufgaben erforderlichen Rollen finden Sie unter Berechtigungen für logbasierte Messwerte und Berechtigungen für logbasierte Benachrichtigungsrichtlinien.

  • Damit ein Nutzer Logs in den Buckets _Required und _Default lesen oder die Seiten Log-Explorer und Loganalysen verwenden kann, weisen Sie ihm eine der folgenden Rollen zu:

    • Wenn Sie Zugriff auf alle Logs im _Required-Bucket und auf die Ansicht _Default im _Default-Bucket benötigen, weisen Sie die Rolle „Log-Betrachter“ (roles/logging.viewer) zu.
    • Wenn Sie Zugriff auf alle Logs in den Buckets _Required und _Default, einschließlich der Logs zum Datenzugriff, benötigen, weisen Sie die Rolle „Betrachter privater Logs“ (roles/logging.privateLogViewer) zu.
  • Wenn ein Nutzer Logs in allen Logansichten eines Projekts lesen soll, weisen Sie ihm die IAM-Rolle roles/logging.viewAccessor für das Projekt zu.

  • Wenn ein Nutzer nur Logs in einer bestimmten Logansicht lesen soll, haben Sie zwei Möglichkeiten:

    • Erstellen Sie eine IAM-Richtlinie für die Logansicht und fügen Sie dann eine IAM-Bindung für diese Richtlinie hinzu, die dem Hauptkonto Zugriff auf die Logansicht gewährt.

    • Weisen Sie dem Hauptkonto die IAM-Rolle roles/logging.viewAccessor für das Projekt zu, das die Logansicht enthält, aber fügen Sie eine IAM-Bedingung hinzu, um die Zuweisung auf die jeweilige Logansicht zu beschränken.

    Informationen zum Erstellen von Log-Ansichten und zum Gewähren des Zugriffs finden Sie unter Log-Ansichten für einen Log-Bucket konfigurieren.

  • Wenn Sie einem Nutzer Zugriff auf eingeschränkte LogEntry-Felder in einem bestimmten Log-Bucket gewähren möchten, weisen Sie ihm die Rolle „Zugriffsberechtigter für Logs-Feld“ (roles/logging.fieldAccessor) zu. Weitere Informationen finden Sie unter Zugriff auf Feldebene konfigurieren.
  • Wenn ein Nutzer Logs mit der Logging API schreiben soll, weisen Sie ihm die Rolle „Log-Autor“ (roles/logging.logWriter) zu. 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 Erteilen von Berechtigungen für ein Dienstkonto finden Sie unter Zielberechtigungen festlegen.

Rollen auf Projektebene

  • Um den meisten Google Cloud Diensten Lesezugriff zu gewähren, weisen Sie die Rolle „Betrachter“ (roles/viewer) zu.

    Diese Rolle enthält alle Berechtigungen der Rolle „Logbetrachter“ (roles/logging.viewer).

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

    Diese Rolle umfasst alle Berechtigungen der Rolle „Loganzeige“ (roles/logging.viewer) 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, keine Audit-Logs zum Datenzugriff im Bucket _Default lesen und keine Logs in benutzerdefinierten Log-Buckets lesen.

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

Rollen werden gewährt

Informationen zum Zuweisen von Rollen an Hauptkonten 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 Informationen zu benutzerdefinierten Rollen finden Sie unter Informationen zu benutzerdefinierten IAM-Rollen.

Cloud Logging-Berechtigungen

Die folgende Tabelle enthält eine Teilliste der Berechtigungen, die für bestimmte Funktionen von Cloud Logging erforderlich sind. Anhand dieser Tabelle können Sie die Berechtigungen ermitteln, die Sie für die Verwendung von Seiten wie dem Log-Explorer benötigen.

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
Audit-Logs zum Datenzugriff ansehen logging.privateLogEntries.list
Logbasierte Messwerte ansehen logging.logMetrics.{list, get}
Senken ansehen logging.sinks.{list, get}
Log-Nutzung ansehen logging.usage.get
Logs herunterladen logging.logEntries.{list, download}

Nur eine dieser Berechtigungen ist erforderlich, um Logs herunterzuladen. Rollen mit den Berechtigungen zum Herunterladen von Logs müssen auf Projektebene gewährt werden. Sie können keine Logs herunterladen, wenn eine Rolle mit diesen Berechtigungen in der IAM-Richtliniendatei einer Logansicht gewährt wird.

Logbereiche auflisten und ansehen logging.logScopes.{get, list}
Standardlogbereich ansehen observability.scopes.get
Logs ausschließen logging.exclusions.{list, create, get, update, delete}

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.

Senken erstellen und verwenden logging.sinks.{list, create, get, update, delete}

Beim Erstellen einer Senke müssen Sie dem Dienstkonto auch eine IAM-Rolle zuweisen, mit der es Logeinträge in das Ziel schreiben kann. Weitere Informationen finden Sie unter Zielberechtigungen festlegen.

Nachdem Ihre Logeinträge an ein unterstütztes Ziel weitergeleitet wurden, wird der Zugriff auf die Logeinträge vollständig durch IAM-Berechtigungen und -Rollen für das Ziel gesteuert.

Logbasierte Benachrichtigungen erstellen Weitere Informationen finden Sie unter Erforderliche Rollen zum Erstellen und Verwenden von logbasierten Benachrichtigungsrichtlinien.
Logbasierte Messwerte erstellen logging.logMetrics.{list, create, get, update, delete}

Informationen zu anderen IAM-Rollen, die Sie zum Erstellen und Verwenden von logbasierten Messwerten benötigen, finden Sie unter Erforderliche Rollen zum Erstellen und Verwenden von logbasierten Messwerten.

Private Abfragen speichern und verwenden logging.queries.usePrivate
logging.queries.{listShared,getShared}
Freigegebene Abfragen speichern und verwenden logging.queries.{share, getShared, updateShared, deleteShared, listShared}
Aktuelle Abfragen verwenden logging.queries.{create, list}
Logbereiche erstellen und verwalten logging.logScopes.{create, delete, get, list, update}
Standardmäßigen Logbereich festlegen und verwalten observability.scopes.{get, update}
Analytics-Datenansichten erstellen und verwalten observability.analyticsViews.{create, delete, get, list, update}

Berechtigungen für die Befehlszeile

gcloud logging-Befehle werden durch IAM-Berechtigungen gesteuert.

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

Ein Hauptkonto muss außerdem die IAM-Rolle haben, die der Ressource des Logs und dem Anwendungsfall entspricht. Weitere Informationen finden Sie unter Berechtigungen der Befehlszeilenschnittstelle.

Rollen, die zum Erstellen und Verwenden von logbasierten Messwerten erforderlich sind

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

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

  • Die Rolle Log-Betrachter (roles/logging.viewer) enthält Berechtigungen zum Aufrufen vorhandener Messwerte. Ein Prinzipal benötigt 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. 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 Prinzipal die Berechtigung logging.logMetrics.create, um logbasierte Messwerte zu erstellen.

Zum Erstellen und Verwenden logbasierter Benachrichtigungsrichtlinien erforderliche Rollen

Zum Erstellen und Verwalten von logbasierten Benachrichtigungsrichtlinien benötigt ein Prinzipal die folgenden Logging- und Monitoring-Rollen und -Berechtigungen:

Wenn Sie Ihre Benachrichtigungsrichtlinie in der Google Cloud CLI erstellen, ist auch die folgende Rolle oder Berechtigung erforderlich:

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) für Ihr Projekt zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen einer Benachrichtigungsrichtlinie mit der Google Cloud CLI benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Diese vordefinierte Rolle enthält die Berechtigung serviceusage.services.use, die zum Erstellen einer Benachrichtigungsrichtlinie mit der Google Cloud CLI erforderlich ist.

    Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Wenn in Ihrem Google Cloud -Projekt bereits Benachrichtigungskanäle vorhanden sind, können Sie Ihre Benachrichtigungsrichtlinie so konfigurieren, dass ein vorhandener Kanal verwendet wird. Dazu sind keine zusätzlichen Rollen oder Berechtigungen erforderlich. Wenn Sie jedoch einen Benachrichtigungskanal für Ihre logbasierte Benachrichtigungsrichtlinie erstellen müssen, ist die folgende Rolle oder Berechtigung erforderlich:

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Monitoring NotificationChannel Editor (roles/monitoring.notificationChannelEditor) für Ihr Projekt zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen eines Benachrichtigungschannels für eine logbasierte Benachrichtigungsrichtlinie benötigen.

    Diese vordefinierte Rolle enthält die Berechtigung monitoring.notificationChannels.create, die zum Erstellen eines Benachrichtigungschannels für eine logbasierte Benachrichtigungsrichtlinie erforderlich ist.

Berechtigungen für SQL-basierte Benachrichtigungsrichtlinien

SQL-basierte Benachrichtigungsrichtlinien werten die Ergebnisse einer SQL-Abfrage aus, die für Daten aus Gruppen von Logeinträgen ausgeführt wird. Informationen zu den Rollen, die zum Erstellen und Verwalten von SQL-basierten Benachrichtigungsrichtlinien erforderlich sind, finden Sie im Abschnitt Vorbereitung unter SQL-Abfrageergebnisse mit einer Benachrichtigungsrichtlinie überwachen.

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 Ihrer Dienstkonten mit dieser Legacy-Methode finden Sie unter Zugriffsbereiche.