In diesem Dokument werden die Zugriffssteuerungen auf Feldebene und ihre Festlegung für einen Logging-Bucket beschrieben.
Mit den Zugriffssteuerungen auf Feldebene können Sie einzelne LogEntry
-Felder für Nutzer eines Google Cloud-Projekts ausblenden, sodass Sie eine detailliertere Möglichkeit zum Festlegen der Logdaten haben, auf die ein Nutzer zugreifen kann.
Übersicht
In Logging wird die Zugriffssteuerung auf Feldebene verwendet, um
LogEntry
von Nutzern eines Google Cloud-Projekts, die nicht die erforderlichen
Berechtigungen zum Anzeigen der Felder. Im Vergleich zu Logansichten, in denen der gesamte LogEntry
ausgeblendet wird, sind bei Zugriffssteuerungen auf Feldebene einzelne Felder des LogEntry
ausgeblendet. Sie können für einen Logging-Bucket sowohl Zugriffssteuerungen auf Feldebene als auch Logberechtigungen festlegen. Sie schränken und verwalten den Zugriff auf Feldebene
mit der Google Cloud CLI steuern.
So schränken Sie den Zugriff auf Logfelder ein:
- Konfigurieren Sie die eingeschränkten
LogEntry
-Felder in einem Log-Bucket. - Weisen Sie nur Nutzern, die sich die eingeschränkten Felder ansehen müssen, die IAM-Rolle
logging.fieldAccessor
für diesen Feldpfad oder eine Rolle mit ähnlichen Berechtigungen zu.
Logging prüft IAM-Berechtigungen, wenn ein Nutzer Logs aus einem Bucket abfragt, für den eingeschränkte Felder festgelegt sind. Alle Felder mit konfigurierten ACLs werden Nutzern ohne die entsprechende Rolle logging.FieldAccessor
für dieses Feld verweigert. Dies bedeutet:
- Der Nutzer erhält einen Fehler bezüglich einer verweigerten Berechtigung, wenn er versucht, die eingeschränkten Felder direkt abzufragen.
- Bei globalen Suchen werden die Inhalte der abgelehnten Felder nicht berücksichtigt.
- In allen zurückgegebenen
LogEntry
-Ergebnissen werden die eingeschränkten Felder weggelassen.
Eingeschränkte Felder
Sie können den Zugriff auf das Feld jsonPayload
einschränken, das
schränkt außerdem den Zugriff auf verschachtelte Pfade ein.
Sie können den Zugriff auch auf die untergeordneten Felder der folgenden Elemente einschränken:
Sie können beispielsweise den Zugriff auf das Feld labels.check_id
einschränken.
Hinweise
Bevor Sie Zugriffssteuerungen auf Feldebene festlegen, gehen Sie so vor:
Prüfen Sie, ob
gcloud --version
Version 362.0.0 oder höher meldet.Führen Sie den folgenden Befehl aus, um die neueste Version der gcloud CLI zu installieren:
gcloud components update
Befehl:gcloud components update
Eine Anleitung zum Installieren der gcloud CLI finden Sie unter Google Cloud CLI installieren
Führen Sie den
gcloud config set
aus. zum Konfigurieren der Standard- Google Cloud-Projekt für Ihre Google Cloud CLI-Befehle. Bevor Sie den Befehl ausführen, ersetzen Sie den folgenden Wert:- PROJECT_ID: Die Kennzeichnung des Projekts.
Befehl:
gcloud config set project PROJECT_ID
Prüfen Sie, ob Sie eine der folgenden IAM haben: Rollen für das Google Cloud-Projekt, das den Bucket enthält:
Informationen zum Festlegen von IAM-Rollen finden Sie in der Anleitung zur Zugriffssteuerung für Logging.
Zugriffssteuerung auf Feldebene festlegen
Einschränkungen auf Feldebene werden auf Log-Bucket-Ebene konfiguriert und können auf einen vorhandenen Log-Bucket oder beim Erstellen eines neuen Log-Buckets angewendet werden.
Felder für einen neuen Bucket einschränken
Führen Sie den Befehl gcloud logging buckets create
aus, um Logfelder beim Erstellen eines neuen Log-Buckets einzuschränken.
Bevor Sie den Befehl ausführen, ersetzen Sie die folgenden Werte:
- BUCKET_ID: Der Name oder die ID des Log-Buckets.
- LOCATION: Der Speicherort des Log-Buckets.
- DESCRIPTION: Die Beschreibung des Log-Buckets.
- RESTRICTED_FIELDS: Die durch Kommas getrennte Liste der Felder, die eingeschränkt werden.
Befehl:
gcloud logging buckets create BUCKET_ID --location=LOCATION \
--description=DESCRIPTION --restricted-fields=RESTRICTED_FIELDS
Beispielbefehl:
gcloud logging buckets create new-log-bucket --location=global \ --description="New bucket with restricted fields" --restricted-fields="jsonPayload.data.ssn,httpRequest.status"
Felder in einem vorhandenen Bucket einschränken
Führen Sie den Befehl
gcloud logging buckets update
Befehl:
gcloud logging buckets update BUCKET_ID --location=LOCATION \
--restricted-fields=RESTRICTED_FIELDS
Beispielbefehl:
gcloud logging buckets update my-existing-log-bucket --location=global \ --restricted-fields="jsonPayload.data.ssn,httpRequest.status"
Wenn Sie Ihre bestehenden Einschränkungen um Felder erweitern möchten, muss der Aktualisierungsbefehl die gesamten eingeschränkten Felder noch einmal auflisten. Wenn Sie basierend auf dem vorherigen Beispiel den Zugriff auf das Feld jsonPayload.data.entryDate
zusätzlich zu den bereits eingeschränkten Feldern jsonPayload.data.ssn
und httpRequest.status
einschränken möchten, würde Ihr Befehl so aussehen:
gcloud logging buckets update my-existing-log-bucket --location=global \ --restricted-fields="jsonPayload.data.ssn,jsonPayload.data.entryDate,httpRequest.status"
Wenn Sie die bereits eingeschränkten Felder nicht noch einmal aufgelistet haben und gerade jsonPayload.data.entryDate
aufgelistet haben, werden sowohl jsonPayload.data.ssn
als auch httpRequest.status
als eingeschränkte Felder entfernt.
Zugriff auf eingeschränkte Felder verwalten
Standardmäßig blendet Logging alle eingeschränkten Felder für Nutzer aus, die nicht die Rolle logging.fieldAccessor
oder eine Rolle mit ähnlichen Berechtigungen haben.
Logging zeigt die eingeschränkten Felder für Nutzer an, die sowohl die Berechtigung zum Aufrufen von Logs im Bucket als auch die Rolle logging.fieldAccessor
haben.
Sie können das Standardverhalten ändern, um Teilmengen von eingeschränkten Feldern auf bestimmte Nutzer zu beschränken.
Berechtigungen für alle eingeschränkten Felder gewähren
Wenn Sie Nutzern Berechtigungen für alle eingeschränkten Felder gewähren möchten, weisen Sie ihnen die Rolle logging.fieldAccessor
oder eine benutzerdefinierte Rolle zu, die die Rolle logging.fieldAccessor
enthält.
Console
So weisen Sie Nutzern über die Google Cloud Console die Rolle logging.fieldAccessor
zu:
führen Sie die folgenden Schritte aus:
-
Öffnen Sie in der Google Cloud Console die Seite IAM:
Rufen Sie IAM auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung.
- Wählen Sie die Hauptperson aus und klicken Sie auf Bearbeiten.
- Wählen Sie im Bereich Berechtigungen bearbeiten die Option Zugriffsfunktion für Logfelder aus. für die Rolle.
- Wählen Sie IAM-Bedingung hinzufügen aus.
- Geben Sie in die Felder Titel und Beschreibung einen Titel und eine Beschreibung ein.
Wählen Sie den Tab Bedingungseditor aus und geben Sie diesen Ausdruck ein:
resource.name.extract("locations/global/buckets/{bucket}/") == "BUCKET_ID"
Klicken Sie auf Speichern.
Die IAM-Berechtigungen (Identity and Access Management) werden sofort aktualisiert.
gcloud
Führen Sie die folgenden Schritte aus, um Nutzern über die gcloud CLI die Rolle logging.fieldAccessor
zuzuweisen:
Um die aktuellen IAM-Richtlinieninformationen in einer Datei zu speichern, den
gcloud projects get-iam-policy
und speichern Sie die Ausgabe in einer Datei:gcloud projects get-iam-policy PROJECT_ID --format=json > policy.json
Mit dem vorherigen Befehl werden die Informationen in einer Datei namens
policy.json
gespeichert.Aktualisieren Sie die Datei
policy.json
mit zusätzlichen Bindungen.Im Folgenden wird im Feld
expression
nur ein Log-Bucket aufgeführt. Daher sind alle Felder für Logeinträge, die in diesem Log-Bucket gespeichert sind, Für die im Abschnittmembers
aufgeführten Hauptkonten zugänglich."bindings": [ { "condition": { "description": "DESCRIPTION", "expression": "resource.name.extract(\"locations/global/buckets/{bucket}/\") == 'BUCKET_ID'", "title": "TITLE" }, "members": [ PRINCIPAL ], "role": "roles/logging.fieldAccessor" } ]
Im vorherigen Beispiel haben die Felder die folgenden Bedeutungen:
- PRINCIPAL: Eine Kennung für das Hauptkonto, dem Sie die Rolle zuweisen möchten. Hauptkonto-Kennzeichnungen haben normalerweise das folgende Format:
PRINCIPAL-TYPE:ID
. Beispiel:user:my-user@example.com
Eine vollständige Liste der Formate, diePRINCIPAL
haben kann, Siehe Haupt-IDs. Geben Sie im Feldmembers
derpolicy.json
-Datei verwenden, verwenden Sie das Format"PRINCIPAL-TYPE":"ID"
- DESCRIPTION: Eine Beschreibung der Bedingung.
- TITLE: Ein Titel für die Bedingung.
- PRINCIPAL: Eine Kennung für das Hauptkonto, dem Sie die Rolle zuweisen möchten. Hauptkonto-Kennzeichnungen haben normalerweise das folgende Format:
Um die aktualisierte Datei
policy.json
anzuwenden, führen Sie dengcloud projects set-iam-policy
Befehl:gcloud projects set-iam-policy PROJECT_ID policy.json
Die IAM-Berechtigungen (Identity and Access Management) werden sofort aktualisiert.
Berechtigungen für eine Teilmenge eingeschränkter Felder gewähren
Wenn Sie Nutzern Berechtigungen für eine Teilmenge der eingeschränkten Felder gewähren möchten, legen Sie die Felder fest, auf die Nutzer zugreifen können, wenn sie die Rolle logging.fieldAccessor
zuweisen oder eine benutzerdefinierte Rolle festlegen, die logging.fieldAccessor
enthält.
Wichtige Hinweise:
Die Schreibweise (einschließlich Groß-/Kleinschreibung) des eingeschränkten Felds, wie sie in der Bucket-Konfiguration angezeigt wird, muss mit der Schreibweise des eingeschränkten Felds im Namen der IAM-Berechtigung übereinstimmen. Wenn Sie beispielsweise das eingeschränkte Feld als
jsonPayload
festlegen, müssen Sie die Berechtigung für das FeldjsonPayload
und nicht für das FeldJsonpayload
erteilen.Bei Feldpfaden, einschließlich Zuordnungsschlüsselstrings, wird zwischen Groß- und Kleinschreibung unterschieden. protobuf-Feldpfade können jedoch entweder ohne Berücksichtigung der Groß-/Kleinschreibung (snake_case) oder mit Berücksichtigung der Groß-/Kleinschreibung in Camel-Case-Schreibweise ausgedrückt werden.
Beispiel:
logName
ist ein Feld imLogEntry
-protobuf.log_name
bezieht sich auf dasselbe Feld. Das FeldjsonPayload.fooBar
verweist auf ein anderes Feld alsjsonPayload.foo_bar
, da Feldnamen unterjsonPayload
Zuordnungsstringschlüssel sind. Es bezieht sich jedoch aufjson_payload.fooBar
.Auch wenn Feldpfade gültige Verweise auf dasselbe Feld sind, müssen Sie beim Konfigurieren von Einschränkungen und IAM-Berechtigungen die Schreibweise (einschließlich Groß-/Kleinschreibung) beachten. Wenn Sie beispielsweise eine Einschränkung für
jsonPayload.foo
angeben, müssen Sie IAM-Berechtigungen fürjsonPayload.foo
und nicht fürjson_payload.foo
konfigurieren.
Weitere Informationen zu gültigen Logfeldtypen finden Sie unter Logging-Abfragespalte: Werte und Conversions.
Console
So gewähren Sie Nutzern über die Google Cloud Console Zugriff auf ein eingeschränktes Feld:
-
Öffnen Sie in der Google Cloud Console die Seite IAM:
Rufen Sie IAM auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM und Verwaltung.
- Wählen Sie die Hauptperson aus und klicken Sie auf Bearbeiten.
- Wählen Sie im Bereich Berechtigungen bearbeiten die Option Zugriffsfunktion für Logfelder aus. für die Rolle.
- Wählen Sie IAM-Bedingung hinzufügen aus.
- Geben Sie in die Felder Titel und Beschreibung einen Titel und eine Beschreibung ein.
Wählen Sie den Tab Bedingungseditor aus und geben Sie diesen Ausdruck ein:
resource.name.extract("locations/global/buckets/BUCKET_ID/fields/{field}") == "RESTRICTED_FIELDS"
Klicken Sie auf Speichern.
Die IAM-Berechtigungen (Identity and Access Management) werden sofort aktualisiert.
gcloud
So gewähren Sie Nutzern über die gcloud CLI Zugriff auf ein eingeschränktes Feld: führen Sie die folgenden Schritte aus:
Führen Sie zum Speichern der IAM-Informationen in einer Datei den Befehl
gcloud projects get-iam-policy
und speichern Sie die Ausgabe in einer Datei:gcloud projects get-iam-policy PROJECT_ID --format=json > policy.json
Der vorherige Befehl speichert die Informationen in einer Datei namens
policy.json
Aktualisieren Sie die Datei
policy.json
mit zusätzlichen Bindungen.Im Folgenden werden im Feld
expression
bestimmte Felder aufgeführt. Daher haben nur die im Abschnittmembers
aufgeführten Hauptrollen Zugriff auf die Felder der Logeinträge, die im angegebenen Log-Bucket gespeichert sind."bindings": [ { "condition": { "description": "DESCRIPTION", "expression": "resource.name.extract(\"locations/global/buckets/BUCKET_ID/fields/{field}\") == 'RESTRICTED_FIELDS'", "title": "TITLE" }, "members": [ PRINCIPAL ], "role": "roles/logging.fieldAccessor" } ]
Im vorherigen Beispiel haben die Felder die folgenden Bedeutungen:
- PRINCIPAL: Eine Kennung für das Hauptkonto, das Sie ausführen möchten
dem die Rolle zugewiesen wird. Haupt-IDs haben in der Regel das folgende Format:
PRINCIPAL-TYPE:ID
Beispiel:user:my-user@example.com
Eine vollständige Liste der Formate, diePRINCIPAL
haben kann, Siehe Haupt-IDs. Geben Sie im Feldmembers
derpolicy.json
-Datei verwenden, verwenden Sie das Format"PRINCIPAL-TYPE":"ID"
- DESCRIPTION: Eine Beschreibung der Bedingung.
- TITLE: Ein Titel für die Bedingung.
- PRINCIPAL: Eine Kennung für das Hauptkonto, das Sie ausführen möchten
dem die Rolle zugewiesen wird. Haupt-IDs haben in der Regel das folgende Format:
Um die aktualisierte Datei
policy.json
anzuwenden, führen Sie dengcloud projects set-iam-policy
Befehl:gcloud projects set-iam-policy PROJECT_ID policy.json
Die IAM-Berechtigungen (Identity and Access Management) werden sofort aktualisiert.
Beispiel
Angenommen, ein Log-Bucket schränkt das Feld jsonPayload
, ein bestimmtes Label,
und einem spezifischen httpRequest
-Unterfeld. Folgendes passiert, wenn ein Nutzer seine Protokolleinträge prüft:
Für Nutzer mit der Berechtigung zum Zugriff auf alle eingeschränkten Felder sind alle Felder in einem Logeintrag sichtbar.
Für Nutzer, die nur zum Zugriff auf das
LogEntry
-FeldjsonPayload
berechtigt sind, sind alle uneingeschränkten Felder und das FeldjsonPayload
sichtbar.Für Nutzer ohne Berechtigung zum Anzeigen der eingeschränkten Felder gilt: sind nur die uneingeschränkten Felder sichtbar.
Wenn ein Nutzer eine Abfrage mit einer globalen Einschränkung schreibt, werden Logeinträge, die ein eingeschränktes Feld enthalten, aus der Antwort ausgeschlossen.
Eingeschränkte Felder auflisten
Führen Sie den folgenden gcloud logging buckets describe
-Befehl aus, um die eingeschränkten Felder in einem Log-Bucket aufzulisten:
gcloud logging buckets describe BUCKET_ID --location=LOCATION
Beispielbefehl:
gcloud logging buckets describe my-log-bucket --location=global
Kontingente und Limits
Beachten Sie beim Einrichten und Verwenden der Zugriffssteuerung auf Feldebene Folgendes:
- Anzahl eingeschränkter Felder: Für jeden Log-Bucket können Sie bis zu 20 Felder einschränken.
- Größe der eingeschränkten Felder: Der Pfad des eingeschränkten Felds muss kleiner als 800 B sein.
Weitere Informationen zu den Limits, die für Ihre Nutzung von Cloud Logging gelten können, finden Sie unter Kontingente und Limits.