Logsenken mit nutzerverwalteten Dienstkonten konfigurieren

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

  1. Installieren und konfigurieren Sie die Google Cloud CLI.

  2. 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.

  3. 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.

  4. 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.

  5. 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, die PRINCIPAL 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:

  1. 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.

  2. 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