Auf dieser Seite wird beschrieben, wie Sie Logs weiterleiten, indem Sie Senken erstellen, die mit von Nutzern verwalteten Dienstkonten konfiguriert sind. Standardmäßig verwendet Logging ein Logging-Dienstkonto für alle Senken in einer Ressource. Wenn sich Ihre Logsenken jedoch in verschiedenen Projekten befinden, können Sie ein eigenes nutzerverwaltetes Dienstkonto erstellen und verwalten. So können Sie Berechtigungen zu Identity and Access Management zentral über das Projekt verwalten, das Ihr nutzerverwaltetes Dienstkonto enthält.
Sie können nur eine Senke erstellen, die ein nutzerverwaltetes Dienstkonto verwendet, wenn das Senkenziel ein Log-Bucket ist.
Hinweise
Installieren und konfigurieren Sie die Google Cloud CLI, um die Befehlszeilenbeispiele in dieser Anleitung zu verwenden.
Prüfen Sie, ob Sie ein nutzerverwaltetes Dienstkonto haben. Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.
Wenn Sie die Befehle in diesem Dokument verwenden möchten, identifizieren Sie die folgenden Werte:
DESTINATION_PROJECT_ID: Die Projekt-ID des Projekts, das den Log-Bucket enthält.
CUSTOM_SA_PROJECT_ID: Die Projekt-ID des Projekts, das Ihr nutzerverwaltetes Dienstkonto enthält.
SINK_PROJECT_ID: Die Projekt-ID des Projekts, in dem Sie die Logsenke erstellen möchten.
CUSTOM_SA ist Ihr vom Nutzer verwaltetes Dienstkonto. Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen.
Ein nutzerverwaltetes Dienstkonto hat folgendes Format:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
LOGGING_SA: Das standardmäßige Logging-Dienstkonto. Führen Sie den folgenden Befehl aus, um diese E-Mail-Adresse abzurufen:
gcloud logging settings describe --project=SINK_PROJECT_ID
Die Ausgabe enthält die folgenden Informationen zu Ihrem Dienstkonto:
loggingServiceAccountId: serviceAccount:[email protected]
BUCKET_NAME ist der Name Ihres Log-Buckets.
Der Senkenzielpfad für einen Log-Bucket sieht so aus:
logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
Achten Sie darauf, dass in dem Projekt, das Ihr nutzerverwaltetes Dienstkonto enthält, die boolesche Einschränkung
iam.disableCrossProjectServiceAccountUsage
der Organisationsrichtlinie 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 projektübergreifenden Aktivieren von Dienstkonten finden Sie unter Projektübergreifendes Verknüpfen von Dienstkonten aktivieren.
IAM-Rollen zuweisen
In diesem Abschnitt werden die Voraussetzungen für das Erstellen einer Senke beschrieben, die ein nutzerverwaltetes Dienstkonto verwendet.
Führen Sie in dem Projekt, das den Log-Bucket enthält, der das Ziel der Logsenken ist, die folgenden Schritte aus:
Weisen Sie dem nutzerverwalteten Dienstkonto die Rolle „Log-Bucket-Autor“ (
roles/logging.bucketWriter
) zu. Mit dieser Rolle kann das nutzerverwaltete Dienstkonto Logs in den Log-Bucket schreiben:gcloud projects add-iam-policy-binding DESTINATION_PROJECT_ID \ --member="serviceAccount:CUSTOM_SA" \ --role="roles/logging.bucketWriter"
Führen Sie in dem Google Cloud-Projekt, in dem Sie Logsenken erstellen möchten, die das nutzerverwaltete Dienstkonto verwenden, die folgenden Schritte aus:
Gewähren Sie dem Cloud Logging-Dienstkonto des nutzerverwalteten Dienstkontos die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator
).gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \ --project=CUSTOM_SA_PROJECT_ID \ --member="serviceAccount:LOGGING_SA" \ --role="roles/iam.serviceAccountTokenCreator"
Mit dem vorherigen Befehl kann das Logging-Dienstkonto die Identität des vom Nutzer verwalteten Dienstkontos übernehmen. Dazu verwendet es die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator
).Die Dienstkonto-Identitätsübernahme 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 privilegierte Konto für Berechtigungen, da es Logs in einen Log-Bucket im Zielprojekt schreiben kann. Das Logging-Dienstkonto hat die Berechtigungen zum Weiterleiten von Logs.
Weitere Informationen zur Dienstkonto-Identitätsübernahme finden Sie unter Identitätswechsel für Dienstkonten.
Weisen Sie dem Hauptkonto, das die Logsenken erstellt, die Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser
) zu. Insbesondere benötigt ein Hauptkonto die Berechtigungiam.serviceAccounts.actAs
für das Dienstkonto:gcloud iam service-accounts add-iam-policy-binding CUSTOM_SA \ --member 'user:[email protected]' \ --role "roles/iam.serviceAccountUser"
Mit dem vorherigen Befehl kann ein Nutzer Vorgänge als vom Nutzer verwaltetes Dienstkonto ausführen.
Logsenke erstellen, die ein nutzerverwaltetes Dienstkonto verwendet
gcloud
Wenn Sie eine Senke mit einem nutzerverwalteten Dienstkonto erstellen möchten, ersetzen Sie die Variablen durch Ihre eigenen Informationen und führen Sie den Befehl gcloud logging sinks create
mit dem Flag --custom-writer-identity
aus:
gcloud logging sinks create SINK_NAME logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME \
--custom-writer-identity=serviceAccount:CUSTOM_SA \
--project=SINK_PROJECT_ID
API
Verwenden Sie zum Erstellen einer Logsenke in Ihrem Google Cloud-Projekt projects.sinks.create in der Logging API. Übergeben Sie im Objekt LogSink den Parameter
customWriterIdentity
und geben Sie im Text der Methodenanfrage die erforderlichen Werte an:name
: Eine Kennung für die Senke. Nachdem Sie die Senke erstellt haben, können Sie sie nicht mehr umbenennen, aber löschen und eine neue Senke erstellen.destination
: Der Log-Bucket, in den Ihre Logs weitergeleitet werden sollen. Der Zielpfad hat das folgende Format:logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
Rufen Sie projects.sinks.create auf, um die Senke zu erstellen.
Weitere Informationen zum Erstellen von Senken mit der Logging API finden Sie in der Referenzdokumentation zu LogSenken.
Prüfen, ob die Senke Logs weiterleitet
In diesem Abschnitt verwenden Sie die gcloud CLI, um einen Logeintrag zu schreiben und zu lesen und so zu prüfen, ob die Senke Logs korrekt weiterleitet.
So prüfen Sie, ob die Senke Logs korrekt weiterleitet:
Ersetzen Sie die Variablen durch eigene Informationen und schreiben Sie mit dem Befehl
gcloud logging write
einen Beispiellogeintrag:gcloud logging write LOG_NAME "Test log entry" --project=SINK_PROJECT_ID
Der vorherige Befehl gibt die folgende Meldung zurück:
Created log entry.
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
Weitere Informationen zum Weiterleiten von Logs an unterstützte Ziele
Einen Überblick über das Routing und Speichern Ihrer Logs in Logging finden Sie unter Routing und Speicher – Übersicht.
Falls beim Verwenden von Senken zur Weiterleitung von Logs Probleme auftreten, finden Sie unter Fehlerbehebung bei Routinglogs weitere Informationen.
Informationen zum Aufrufen von weitergeleiteten Logs in ihren Zielen sowie zum Formatieren und Organisieren der Logs finden Sie unter Logs in Senkenzielen ansehen.