Logsenken mit nutzerverwalteten Dienstkonten konfigurieren

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

  1. Installieren und konfigurieren Sie die Google Cloud CLI, um die Befehlszeilenbeispiele in dieser Anleitung zu verwenden.

  2. Prüfen Sie, ob Sie ein nutzerverwaltetes Dienstkonto haben. Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.

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

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

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

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

    Weitere Informationen zur Dienstkonto-Identitätsübernahme finden Sie unter Identitätswechsel für Dienstkonten.

  2. Weisen Sie dem Hauptkonto, das die Logsenken erstellt, die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) zu. Insbesondere benötigt ein Hauptkonto die Berechtigung iam.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.

    Weitere Informationen

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

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

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

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