Log-Ablaufstellen mit nutzerverwalteten Dienstkonten konfigurieren

Auf dieser Seite wird beschrieben, wie Logs weitergeleitet werden, indem konfigurierte Senken erstellt werden. mit nutzerverwalteten Dienstkonten. Standardmäßig verwendet Logging ein Logging-Dienstkonto für alle Senken in einer Ressource. Sie können jedoch Wenn sich Ihre Logsenken in verschiedenen Projekten befinden, können Sie Ihr eigenes, von Nutzern verwaltetes Dienstkonto, mit dem Sie Identity and Access Management-Berechtigungen aus dem Projekt, das Ihre nutzerverwalteten Dienstkonto.

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. Im Beispiel in diesem Dokument wird gezeigt, wie Sie einen Abfluss einrichten, der ein nutzerverwaltetes Dienstkonto verwendet, wobei das Ziel ein Log-Bucket ist.

Hinweis

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Achten Sie darauf, dass Sie ein nutzerverwaltetes Dienstkonto haben, und legen Sie dann die folgenden Variablen auf die entsprechenden Werte für Ihr nutzerverwaltetes Dienstkonto fest:

    • CUSTOM_SA_PROJECT_ID: Die Projekt-ID des Projekts, das Ihr nutzerverwaltetes Dienstkonto enthält.

    • CUSTOM_SA: Die E-Mail-Adresse Ihres nutzerverwalteten Dienstkontos.

    Informationen zu Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.

  3. Achten Sie darauf, dass Sie einen Log-Bucket haben, der als Ziel einer Log-Senke dienen kann. Legen Sie dann die folgenden Variablen auf Werte fest, die für Ihren Log-Bucket geeignet sind. Erstellen Sie gegebenenfalls einen Log-Bucket:

    • LOG_BUCKET_PROJECT_ID: Die Projekt-ID des Projekts, das Ihren Protokoll-Bucket enthält.

    • LOCATION: Der Speicherort Ihres Log-Buckets.

    • BUCKET_NAME: der Name Ihres Log-Buckets.

  4. Ermitteln Sie den Namen des Logging-Dienstkontos, das im Projekt vorhanden ist, in dem Sie den Log-Sink 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 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 darauf, dass die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage der Organisationsrichtlinie im Projekt mit Ihrem nutzerverwalteten Dienstkonto nicht erzwungen wird. 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 für das Erstellen eines Sinks beschrieben, der ein benutzerverwaltetes Dienstkonto verwendet.

Vom Nutzer verwaltetes Dienstkonto darf Logeinträge in das Senkenziel schreiben

Weisen Sie dem vom Nutzer verwalteten Dienstkonto die Berechtigungen zu, die zum Schreiben von Protokolleinträgen in das Ziel der Senke erforderlich sind, die Sie in einem nachfolgenden Schritt erstellen. 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 Standarddienstkonto für Cloud Logging muss in dem Google Cloud-Projekt vorhanden sein, in dem Sie Log-Sinks erstellen möchten, die das nutzerverwaltete Dienstkonto verwenden.

Um die Identitätsübernahme für Dienstkonten zu konfigurieren, gewähren Sie den Rolle „Service Account Token Creator“ (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 Berechtigungen zum Weiterleiten von Protokollen.

Weitere Informationen zur Rolle „Ersteller von Dienstkontotokens“ finden Sie unter Rollen zum Verwalten und Impersonieren von Dienstkonten: Rolle „Ersteller von Dienstkontotokens“.

Weitere Informationen zur Übernahme der Identität von Dienstkonten finden Sie unter Identitätswechsel für Dienstkonten.

Hauptkonto Vorgänge als nutzerverwaltetes 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. Hauptkonto-IDs haben in der Regel das folgende Format: PRINCIPAL-TYPE:ID Beispiel: user:my-user@example.com Eine vollständige Liste der Formate für PRINCIPAL finden Sie unter Hauptkonto-Kennungen.

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“ Siehe Rollen für die Verwaltung und Identitätsübernahme von Dienstkonten: Dienstkonto Nutzerrolle:

Log-Senke mit einem vom Nutzer verwalteten Dienstkonto erstellen

Wenn Sie einen Abfluss mit einem nutzerverwalteten Dienstkonto erstellen möchten, führen Sie den Befehl gcloud logging sinks create aus 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 Log-Senke.

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 Logs korrekt 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 gcloud logging write Befehl:

    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