Auf dieser Seite wird beschrieben, wie Sie Logeinträge weiterleiten, indem Sie Senken mit vom Nutzer verwalteten Dienstkonten erstellen. Standardmäßig verwendet Logging für alle Senken in einer Ressource ein Logging-Dienstkonto. Wenn sich Ihre Logsenken jedoch in verschiedenen Projekten befinden, können Sie ein eigenes nutzerverwaltetes Dienstkonto erstellen und verwalten. So können Sie die Berechtigungen für das Identity and Access Management zentral über das Projekt verwalten, das Ihr nutzerverwaltetes Dienstkonto enthält.
Sie können nur dann eine Senke erstellen, die ein nutzerverwaltetes Dienstkonto verwendet, wenn das Senkenziel ein Log-Bucket oder ein Google Cloud -Projekt ist. Das Beispiel in diesem Dokument veranschaulicht, wie Sie eine Senke einrichten, die 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 geeignete 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 zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.
Achten Sie darauf, dass Sie einen Log-Bucket haben, der als Ziel einer Logsenke dienen kann, und legen Sie dann die folgenden Variablen auf Werte fest, die für Ihren Log-Bucket geeignet sind. Erstellen Sie bei Bedarf einen Log-Bucket:
LOG_BUCKET_PROJECT_ID: Die Projekt-ID des Projekts, das Ihren Log-Bucket enthält.
LOCATION: Der Speicherort Ihres Log-Buckets.
BUCKET_NAME: Der Name Ihres Log-Buckets.
Finden Sie den Namen des Logging-Dienstkontos heraus, das in dem Projekt vorhanden ist, in dem Sie die Senke 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 des Standarddienstkontos für Logging. Führen Sie den folgenden Befehl aus, um diese Adresse abzurufen:
gcloud logging settings describe --project=SINK_PROJECT_IDIn der Antwort wird in der Zeile, die mit
loggingServiceAccountIdbeginnt, die E-Mail-Adresse Ihres Dienstkontos aufgeführt.
Achten Sie darauf, dass die boolesche Einschränkung der Organisationsrichtlinie
iam.disableCrossProjectServiceAccountUsageim Projekt mit Ihrem nutzerverwalteten Dienstkonto nicht erzwungen wird. Standardmäßig wird diese Einschränkung erzwungen. Führen Sie den folgenden Befehl aus, um diese Einschränkung zu deaktivieren, damit Sie ein Dienstkonto an eine Ressource in einem anderen Projekt anhängen können:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage \ --project=CUSTOM_SA_PROJECT_IDWeitere Informationen zum Aktivieren von Dienstkonten über Projekte hinweg finden Sie unter Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können.
- PRINCIPAL: Eine Kennzeichnung 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.comEine vollständige Liste der Formate, diePRINCIPALhaben kann, finden Sie unter Hauptkonto-IDs. - SINK_NAME: Der Name der Logsenke.
Führen Sie den Befehl
gcloud logging writeaus:Ersetzen Sie vor dem Ausführen des folgenden Befehls die folgenden Werte:
- LOG_NAME: Der Name des Logs. Sie können dieses Feld beispielsweise auf
mylogfestlegen.
Führen Sie den Befehl
gcloud logging writeaus.gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_IDDer vorherige Befehl gibt die folgende Meldung zurück:
Created log entry.- LOG_NAME: Der Name des Logs. Sie können dieses Feld beispielsweise 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_IDInformationen zum Weiterleiten von Logeinträgen an unterstützte Ziele finden Sie unter Logs an unterstützte Ziele weiterleiten.
Eine Übersicht darüber, wie Logeinträge in Cloud Logging weitergeleitet und gespeichert werden, finden Sie unter Routing und Speicher.
Wenn bei der Weiterleitung von Logeinträgen über Senken Probleme auftreten, lesen Sie Fehlerbehebung bei der Weiterleitung von Logs.
Informationen zum Aufrufen von Logeinträgen in ihren Zielen sowie zum Formatieren und Organisieren der Logeinträge finden Sie unter Logs in Senkenzielen ansehen.
IAM-Rollen zuweisen
In diesem Abschnitt werden die Voraussetzungen für das Erstellen einer Senke beschrieben, die ein nutzerverwaltetes Dienstkonto verwendet.
Nutzerverwalteten Dienstkonten erlauben, Logeinträge in das Senkenziel zu schreiben
Erteilen Sie dem nutzerverwalteten Dienstkonto die Berechtigungen, die zum Schreiben von Logeinträgen in das Ziel der Senke erforderlich sind, die Sie in einem späteren Schritt erstellen. Das Ziel der Senke ist ein Log-Bucket, der im Projekt LOG_BUCKET_PROJECT_ID gespeichert ist.
Weisen Sie dem nutzerverwalteten Dienstkonto die Rolle „Logs Bucket Writer“ (roles/logging.bucketWriter) für das Projekt mit dem Log-Bucket zu, um ihm die erforderlichen Berechtigungen zu erteilen:
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 des Dienstkontos konfigurieren
Konfigurieren Sie das Standarddienstkonto für Cloud Logging, LOGGING_SA, so, dass es die Identität des nutzerverwalteten Dienstkontos CUSTOM_SA annehmen kann. Das Standarddienstkonto für Cloud Logging ist im Google Cloud -Projekt vorhanden, in dem Sie Logsenken erstellen möchten, die das nutzerverwaltete Dienstkonto verwenden.
Um die Identitätsübernahme von Dienstkonten zu konfigurieren, weisen Sie dem Cloud Logging-Dienstkonto die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator) für das nutzerverwaltete Dienstkonto zu:
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 für den Zugriff auf eine Ressource hat, und das privilegierte Dienstkonto, das die Berechtigungen für den Zugriff auf eine Ressource hat. In diesem Fall ist das nutzerverwaltete Dienstkonto das Konto mit Berechtigungen, da es Logeinträge in das Senkenziel schreiben kann. Das ist ein Log-Bucket im Projekt mit dem Namen LOG_BUCKET_PROJECT_ID. Das Logging-Dienstkonto hat die Berechtigungen zum Weiterleiten von Logeinträgen.
Weitere Informationen zur Rolle „Ersteller von Dienstkonto-Tokens“ finden Sie unter Rolle „Ersteller von Dienstkonto-Tokens“.
Weitere Informationen siehe Identitätsübernahme des Dienstkontos.
Hauptkonto darf Vorgänge als nutzerverwaltetes Dienstkonto ausführen
Erteilen Sie dem Hauptkonto, das die Senke erstellt, die erforderlichen Berechtigungen zum Ausführen von Vorgängen als nutzerverwaltetes Dienstkonto.
Um die erforderlichen Berechtigungen zu erteilen, weisen Sie dem Hauptkonto die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das Projekt Google Cloud zu, in dem das nutzerverwaltete Dienstkonto CUSTOM_SA_PROJECT_ID gespeichert ist.
Ersetzen Sie vor dem Ausführen des folgenden Befehls die folgenden Werte:
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“ finden Sie unter Rolle „Dienstkontonutzer“.
Logsenke erstellen, für die ein nutzerverwaltetes Dienstkonto verwendet wird
Wenn Sie eine Senke 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 ein.
Ersetzen Sie vor dem Ausführen des folgenden Befehls die folgenden Werte:
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 Ihre Senke Logeinträge weiterleitet
In diesem Abschnitt verwenden Sie die gcloud CLI, um einen Logeintrag zu schreiben und zu lesen. Damit prüfen Sie, ob Ihre Senke Logeinträge richtig weiterleitet.
So prüfen Sie, ob Ihre Senke Logeinträge richtig weiterleitet: