Auf dieser Seite wird beschrieben, wie Sie Logeinträge weiterleiten, indem Sie Senken erstellen, die mit vom Nutzer verwalteten Dienstkonten konfiguriert sind. Standardmäßig verwendet Logging ein Logging-Dienstkonto für alle Senken in einer Ressource. Wenn sich Ihre Logsinks jedoch in verschiedenen Projekten befinden, können Sie ein eigenes vom Nutzer verwaltetes Dienstkonto erstellen und verwalten. So können Sie die Berechtigungen für Identity and Access Management zentral über das Projekt verwalten, das Ihr vom Nutzer verwaltetes Dienstkonto enthält.
Sie können nur dann einen Senken erstellen, für die ein vom Nutzer verwaltetes Dienstkonto verwendet wird, 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.
Hinweise
-
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 vom Nutzer verwaltetes 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 Log-Senke 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.
Ermitteln Sie den Namen des Logging-Dienstkontos, das in dem Projekt vorhanden ist, in dem Sie die Logsink 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 den Log-Sink 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_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 der Organisationsrichtlinie
iam.disableCrossProjectServiceAccountUsage
im Projekt mit Ihrem vom Nutzer verwalteten 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_ID
Weitere 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.com
Eine vollständige Liste der Formate, diePRINCIPAL
haben kann, finden Sie unter Hauptkonto-IDs. - SINK_NAME: Der Name der Logsenke.
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. Sie können dieses Feld beispielsweise auf
mylog
festlegen.
Führen Sie den Befehl
gcloud logging write
aus: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. 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_ID
Informationen 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 beim Weiterleiten 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 eines Senken beschrieben, für die ein vom Nutzer verwaltetes Dienstkonto verwendet wird.
Vom Nutzer verwalteten Dienstkonten erlauben, Logeinträge in das Senkenziel zu schreiben
Erteilen Sie dem vom Nutzer verwalteten 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 vom Nutzer verwalteten 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 vom Nutzer verwalteten Dienstkontos CUSTOM_SA annehmen kann. Das Standarddienstkonto für Cloud Logging ist im Google Cloud -Projekt vorhanden, in dem Sie Logsinks 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 vom Nutzer verwaltete 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 vom Nutzer verwaltete 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 zur Übernahme der Identität von Dienstkonten finden Sie unter Identitätsübernahme des Dienstkontos.
Hauptkonto darf Vorgänge als nutzerverwaltetes Dienstkonto ausführen
Erteilen Sie dem Hauptkonto, das die Senke erstellt, die Berechtigungen, die es zum Ausführen von Vorgängen als nutzerverwaltetes Dienstkonto benötigt.
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 vom Nutzer verwaltete DienstkontoCUSTOM_SA_PROJECT_IDgespeichert ist.
Bevor Sie den folgenden Befehl ausführen, ersetzen Sie 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 Dienstkontonutzerrolle.
Logsink erstellen, für den ein vom Nutzer verwaltetes Dienstkonto verwendet wird
Führen Sie den Befehl gcloud logging sinks create
aus und fügen Sie die Option --custom-writer-identity
ein, um eine Senke mit einem nutzerverwalteten Dienstkonto zu erstellen.
Bevor Sie den folgenden Befehl ausführen, ersetzen Sie 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, um zu prüfen, ob Ihr Senken Logeinträge richtig weiterleitet.
So prüfen Sie, ob Ihre Senke Logeinträge richtig weiterleitet: