Auf dieser Seite wird beschrieben, wie Logs weitergeleitet werden, indem konfigurierte Senken erstellt werden. mit nutzerverwalteten Dienstkonten. Standardmäßig verwendet Logging ein Logging-Dienstkonto für alle Senken in einer Ressource. Sie können jedoch Wenn sich Ihre Logsenken in verschiedenen Projekten befinden, können Sie Ihr eigenes, von Nutzern verwaltetes Dienstkonto, mit dem Sie Identity and Access Management-Berechtigungen aus dem Projekt, das Ihre nutzerverwalteten Dienstkonto.
Sie können nur dann eine Senke erstellen, die ein vom Nutzer verwaltetes Dienstkonto verwendet, wenn die Das Senkenziel ist ein Log-Bucket oder ein Google Cloud-Projekt. Im Beispiel in diesem Dokument wird gezeigt, wie Sie einen Abfluss einrichten, der ein nutzerverwaltetes Dienstkonto verwendet, wobei das Ziel ein Log-Bucket ist.
Hinweis
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Achten Sie darauf, dass Sie ein nutzerverwaltetes Dienstkonto haben, und legen Sie dann die folgenden Variablen auf die entsprechenden Werte für Ihr nutzerverwaltetes Dienstkonto fest:
CUSTOM_SA_PROJECT_ID: Die Projekt-ID des Projekts, das Ihr nutzerverwaltetes Dienstkonto enthält.
CUSTOM_SA: Die E-Mail-Adresse Ihres nutzerverwalteten Dienstkontos.
Informationen zu Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.
Achten Sie darauf, dass Sie einen Log-Bucket haben, der als Ziel einer Log-Senke dienen kann. Legen Sie dann die folgenden Variablen auf Werte fest, die für Ihren Log-Bucket geeignet sind. Erstellen Sie gegebenenfalls einen Log-Bucket:
LOG_BUCKET_PROJECT_ID: Die Projekt-ID des Projekts, das Ihren Protokoll-Bucket enthält.
LOCATION: Der Speicherort Ihres Log-Buckets.
BUCKET_NAME: der Name Ihres Log-Buckets.
Ermitteln Sie den Namen des Logging-Dienstkontos, das im Projekt vorhanden ist, in dem Sie den Log-Sink erstellen möchten, und legen Sie dann die folgenden Variablen auf die entsprechenden Werte fest:
SINK_PROJECT_ID: Die Projekt-ID des Projekts, in dem Sie die Logsenke erstellen möchten.
LOGGING_SA: die E-Mail-Adresse Adresse des Logging-Standarddienstkontos. Führen Sie den folgenden Befehl aus, um diese Adresse abzurufen:
gcloud logging settings describe --project=SINK_PROJECT_ID
In der Antwort wird in der Zeile, die mit
loggingServiceAccountId
beginnt, die E-Mail-Adresse Ihres Dienstkontos aufgeführt.
Achten Sie darauf, dass die boolesche Einschränkung
iam.disableCrossProjectServiceAccountUsage
der Organisationsrichtlinie im Projekt mit Ihrem nutzerverwalteten Dienstkonto nicht erzwungen wird. Diese Einschränkung wird standardmäßig erzwungen. Um diese Einschränkung zu deaktivieren, das Hinzufügen eines Dienstkontos in einem anderen Projekt zu erstellen, führen Sie den folgenden Befehl aus:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_ID
Weitere Informationen zum projektübergreifenden Aktivieren von Dienstkonten finden Sie unter Aktivieren Sie das projektübergreifende Anhängen von Dienstkonten.
IAM-Rollen zuweisen
In diesem Abschnitt werden die Voraussetzungen für das Erstellen eines Sinks beschrieben, der ein benutzerverwaltetes Dienstkonto verwendet.
Vom Nutzer verwaltetes Dienstkonto darf Logeinträge in das Senkenziel schreiben
Weisen Sie dem vom Nutzer verwalteten Dienstkonto die Berechtigungen zu, die zum Schreiben von Protokolleinträgen in das Ziel der Senke erforderlich sind, die Sie in einem nachfolgenden Schritt erstellen. Das Ziel der Senke ist ein Log-Bucket, das im Projekt LOG_BUCKET_PROJECT_ID gespeichert ist.
Um dem nutzerverwalteten Dienstkonto die erforderlichen Berechtigungen zu gewähren, weisen Sie ihm die Rolle „Logs Bucket Writer“ (roles/logging.bucketWriter
) für das Projekt zu, das den Log-Bucket enthält:
gcloud projects add-iam-policy-binding LOG_BUCKET_PROJECT_ID \
--member='serviceAccount:CUSTOM_SA' \
--role='roles/logging.bucketWriter'
Weitere Informationen zum vorherigen Befehl finden Sie unter
gcloud projects add-iam-policy-binding
Identitätsübernahme für Dienstkonten konfigurieren
Konfigurieren Sie das standardmäßige Cloud Logging-Dienstkonto LOGGING_SA so, dass es sich als das vom Nutzer verwaltete Dienstkonto CUSTOM_SA ausgeben kann. Das Standarddienstkonto für Cloud Logging muss in dem Google Cloud-Projekt vorhanden sein, in dem Sie Log-Sinks erstellen möchten, die das nutzerverwaltete Dienstkonto verwenden.
Um die Identitätsübernahme für Dienstkonten zu konfigurieren, gewähren Sie den
Rolle „Service Account Token Creator“
(roles/iam.serviceAccountTokenCreator
) zum Cloud Logging-Dienst
des nutzerverwalteten Dienstkontos:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='serviceAccount:LOGGING_SA' \
--role='roles/iam.serviceAccountTokenCreator'
Die Identitätsübernahme für ein Dienstkonto umfasst zwei Hauptkonten: das Dienstkonto, das keine Berechtigungen zum Zugriff auf eine Ressource hat, und das privilegierte Dienstkonto, das die Berechtigungen zum Zugriff auf eine Ressource hat. In dieser ist das vom Nutzer verwaltete Dienstkonto das privilegierte Konto. da er Log-Einträge in das Senkenziel schreiben kann, Dabei handelt es sich um einen Log-Bucket im Projekt mit dem Namen LOG_BUCKET_PROJECT_ID. Das Logging-Dienstkonto hat die Berechtigungen zum Weiterleiten von Protokollen.
Weitere Informationen zur Rolle „Ersteller von Dienstkontotokens“ finden Sie unter Rollen zum Verwalten und Impersonieren von Dienstkonten: Rolle „Ersteller von Dienstkontotokens“.
Weitere Informationen zur Übernahme der Identität von Dienstkonten finden Sie unter Identitätswechsel für Dienstkonten.
Hauptkonto Vorgänge als nutzerverwaltetes Dienstkonto ausführen lassen
Weisen Sie dem Hauptkonto, das die Senke erstellt, die erforderlichen Berechtigungen zu Vorgänge als vom Nutzer verwaltetes Dienstkonto ausführen.
Gewähren Sie dem Hauptkonto die folgenden Berechtigungen, um die erforderlichen Berechtigungen zu gewähren:
Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser
)
für das Google Cloud-Projekt aus, in dem die
vom Nutzer verwaltetes Dienstkonto CUSTOM_SA_PROJECT_ID.
Bevor Sie den folgenden Befehl ausführen, ersetzen Sie die folgenden Werte:
- PRINCIPAL: Eine Kennung für das Hauptkonto, das Sie ausführen möchten
dem die Rolle zugewiesen wird. Hauptkonto-IDs haben in der Regel das folgende Format:
PRINCIPAL-TYPE:ID
Beispiel:user:my-user@example.com
Eine vollständige Liste der Formate fürPRINCIPAL
finden Sie unter Hauptkonto-Kennungen.
Führen Sie den Befehl gcloud iam service-accounts add-iam-policy-binding
aus:
gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \
--project=CUSTOM_SA_PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
Wenn Sie benutzerdefinierte Rollen verwenden, benötigt das Hauptkonto die
Berechtigung „iam.serviceAccounts.actAs
“.
Weitere Informationen zur Rolle „Dienstkontonutzer“ Siehe Rollen für die Verwaltung und Identitätsübernahme von Dienstkonten: Dienstkonto Nutzerrolle:
Log-Senke mit einem vom Nutzer verwalteten Dienstkonto erstellen
Wenn Sie einen Abfluss mit einem nutzerverwalteten Dienstkonto erstellen möchten, führen Sie den Befehl gcloud logging sinks create
aus und fügen Sie die Option --custom-writer-identity
hinzu.
Bevor Sie den folgenden Befehl ausführen, ersetzen Sie die folgenden Werte:
- SINK_NAME: Der Name der Log-Senke.
Führen Sie den Befehl gcloud logging sinks create
aus:
gcloud logging sinks create SINK_NAME \
logging.googleapis.com/projects/LOG_BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
Prüfen, ob die Senke Logs weiterleitet
In diesem Abschnitt verwenden Sie die gcloud CLI, um ein Log zu schreiben und zu lesen. um zu prüfen, ob die Senke Logs korrekt weiterleitet.
So prüfen Sie, ob die Senke Logs korrekt weiterleitet:
Führen Sie den Befehl
gcloud logging write
aus:Bevor Sie den folgenden Befehl ausführen, ersetzen Sie die folgenden Werte:
- LOG_NAME: Der Name des Logs. Zum Beispiel könnten Sie
Legen Sie dieses Feld auf
mylog
fest.
Führen Sie den
gcloud logging write
Befehl:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
Der vorherige Befehl gibt die folgende Meldung zurück:
Created log entry.
- LOG_NAME: Der Name des Logs. Zum Beispiel könnten Sie
Legen Sie dieses Feld auf
Führen Sie den folgenden Befehl aus, um den gerade geschriebenen Logeintrag zu lesen:
gcloud logging read 'textPayload="Test log entry"' \ --bucket=BUCKET_NAME --location=LOCATION \ --view=_AllLogs --project=SINK_PROJECT_ID
Nächste Schritte
Informationen zum Weiterleiten von Logs an unterstützte Ziele finden Sie unter Logs an unterstützte Ziele weiterleiten
Eine Übersicht dazu, wie Logging Ihre Protokolle weiterleitet und speichert, finden Sie unter Routing und Speicher.
Wenn bei der Weiterleitung von Logs über Senken Probleme auftreten, lesen Sie Fehlerbehebung bei Routing-Logs.
Informationen zum Aufrufen von weitergeleiteten Logs in ihren Zielen sowie zum Formatieren und Organisieren der Logs finden Sie unter Logs in Senkenzielen ansehen.