Auf dieser Seite wird beschrieben, wie Sie Logs weiterleiten, indem Sie Abläufe erstellen, die mit benutzerverwalteten Dienstkonten konfiguriert sind. Standardmäßig verwendet Logging einen Logging-Dienstkonto für alle Senken in einer Ressource. Wenn sich Ihre Protokoll-Sinks jedoch in verschiedenen Projekten befinden, können Sie ein eigenes nutzerverwaltetes Dienstkonto erstellen und verwalten. So können Sie die Berechtigungen für die Identitäts- und Zugriffsverwaltung zentral über das Projekt verwalten, das Ihr nutzerverwaltetes Dienstkonto enthält.
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. Das Beispiel in In diesem Dokument wird gezeigt, wie Sie eine Senke einrichten, die einen vom Nutzer verwalteten Dienst verwendet. Konto, bei dem das Ziel ein Log-Bucket ist.
Hinweise
Installieren und konfigurieren Sie die Google Cloud CLI.
Stellen Sie sicher, dass Sie ein vom Nutzer verwaltetes Dienstkonto haben, und legen Sie dann das den entsprechenden Werten für Ihre vom Nutzer verwaltetes Dienstkonto:
CUSTOM_SA_PROJECT_ID: Die Projekt-ID des Projekts, das Ihren nutzerverwalteten Dienst enthält Konto.
CUSTOM_SA: Die E-Mail-Adresse Ihres nutzerverwalteten Dienstkontos.
Informationen zu Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.
Stellen Sie sicher, dass Sie einen Log-Bucket haben, der als Ziel von eine Logsenke und setzen Sie dann die folgenden Variablen auf Werte, die Ihrem Log-Bucket entsprechen. Erstellen Sie bei Bedarf einen Log-Bucket:
LOG_BUCKET_PROJECT_ID: Die Projekt-ID des Projekts, das Ihren Log-Bucket enthält.
LOCATION: Standort Ihres Log-Buckets.
BUCKET_NAME: der Name Ihres Log-Buckets.
Geben Sie den Namen des Logging-Dienstkontos an, das in dem Projekt vorhanden ist, in dem Sie die Logsenke erstellen möchten, und Legen Sie für die folgenden Variablen 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 in dem Projekt, das Ihr nutzerverwaltetes Dienstkonto enthält, darauf, dass der Boolesche Einschränkung der Organisationsrichtlinie
iam.disableCrossProjectServiceAccountUsage
wird nicht erzwungen. 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 zum Erstellen einer Senke beschrieben, die eine eines vom Nutzer verwalteten Dienstkontos.
Nutzerverwaltetem Dienstkonto erlauben, Logeinträge an das Senkenziel zu schreiben
Gewähren Sie dem nutzerverwalteten Dienstkonto die erforderlichen Berechtigungen Logeinträge an das Ziel der Senke schreiben, in der Sie erstellen nächsten Schritt folgt. 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 Cloud Logging-Standarddienstkonto in dem Google Cloud-Projekt existiert, Logsenken erstellen möchten, die das vom Nutzer verwaltete Dienstkonto verwenden.
Um die Identitätsübernahme für Dienstkonten zu konfigurieren, gewähren Sie den
Rolle "Dienstkonto-Token-Ersteller"
(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 zum Weiterleiten von Logs.
Weitere Informationen zur Rolle „Ersteller von Dienstkonto-Tokens“ Siehe Rollen für die Verwaltung und Identitätsübernahme von Dienstkonten: Dienstkonto Rolle „Tokenersteller“.
Weitere Informationen zur Übernahme der Identität von Dienstkonten finden Sie unter Identitätswechsel für Dienstkonten.
Vorgänge vom Hauptkonto als vom Nutzer verwaltetes 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. Haupt-IDs haben in der Regel das folgende Format:
PRINCIPAL-TYPE:ID
Beispiel:user:[email protected]
Eine vollständige Liste der Formate, diePRINCIPAL
haben kann, Siehe Haupt-IDs.
Führen Sie den
gcloud iam service-accounts add-iam-policy-binding
Befehl:
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:
Logsenke erstellen, die ein vom Nutzer verwaltetes Dienstkonto verwendet
Um eine Senke mit einem vom Nutzer verwalteten Dienstkonto zu erstellen, führen Sie den
gcloud logging sinks create
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 Logsenke.
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 Protokolle richtig 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 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. Zum Beispiel könnten Sie
Legen Sie dieses Feld auf
Führen Sie den folgenden Befehl aus, um den gerade erstellten 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.
Einen Überblick darüber, wie Logging Ihre Daten weiterleitet und speichert finden Sie unter Routing und Speicher – Übersicht.
Wenn beim Weiterleiten von Logs Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung bei Routinglogs
Informationen zum Aufrufen von weitergeleiteten Logs in ihren Zielen sowie zum Formatieren und Organisieren der Logs finden Sie unter Logs in Senkenzielen ansehen.