Monitoring-Agent autorisieren

In dieser Anleitung wird erläutert, wie Sie dafür sorgen, dass der Monitoring-Agent, den Sie auf Ihrer VM-Instanz installieren, berechtigt ist, Telemetriedaten an Monitoring zu senden.

Autorisierungsübersicht

Autorisierung ist der Vorgang, bei dem festgestellt wird, welche Berechtigungen ein authentifizierter Client bei einer Reihe von Ressourcen hat. Google Cloud autorisiert den Monitoring-Agent auf einer Compute Engine-VM-Instanz mithilfe von Standardanmeldedaten für Anwendungen.

Der Monitoring-Agent unterstützt ADC, der entweder das an eine VM angehängte Dienstkonto oder einen Dienstkontoschlüssel authentifiziert.

  • Ein angehängtes Dienstkonto bezieht sich auf ein Dienstkonto, das für eine bestimmte Ressource, z. B. eine VM, spezifisch ist. Das Dienstkonto hat eigene eindeutige Anmeldedaten. ADC ruft den Anmeldedaten eines Dienstes über den Metadatenserver der VM ab.
  • Ein Dienstkontoschlüssel ist ein privater Schlüssel, mit dem das Schlüsselpaar für ein Dienstkonto in einem Projekt autorisiert wird. Damit können Sie ein Zugriffstoken erstellen. Sie verwenden das Token, um eine Identität bereitzustellen, damit Sie im Namen des Dienstkontos mit Google Cloud APIs interagieren können.

Wir empfehlen, die ADC so zu konfigurieren, dass ein angehängtes Dienstkonto nach Möglichkeit authentifiziert wird, da der private Schlüssel lokalen Speicher erfordert und dieser Speicher manipuliert werden kann. Weitere Informationen zu Dienstkontoschlüsseln finden Sie unter Best Practices für die Verwaltung von Dienstkontoschlüsseln.

Bei AWS EC2-VM-Instanzen unterstützt der Monitoring-Agent die Authentifizierung nur mit der Methode des Dienstkontoschlüssels.

Hinweise

Lesen Sie diese Anleitung in folgenden Fällen:

  • Wenn Sie Compute Engine-Instanzen ausführen, die sehr alt sind, oder Zugriffsbereiche oder Dienstkontoeinstellungen für Ihre Compute Engine-Instanzen geändert haben, müssen Sie die Schritte in dieser Anleitung ausführen, bevor Sie den Agent installieren. Diese VMs haben möglicherweise nicht die erforderliche Dienstkontoschlüsseldatei. Informationen zum Prüfen der Zugriffsbereiche und Dienstkontoeinstellungen Ihrer Instanzen finden Sie unter Compute Engine-Anmeldedaten überprüfen.

    Bei neu erstellten Compute Engine-VM-Instanzen reichen die Zugriffsbereiche und Dienstkontoeinstellungen aus, um die Agents auszuführen.

  • Wenn Sie Amazon EC2-VM-Instanzen (AWS VC2) ausführen, führen Sie vor der Installation des Agents die folgenden Schritte aus:

    1. Ermitteln Sie das AWS-Hostingprojekt für das AWS-Konto mit Ihren EC2-Instanzen. Das Hostingprojekt ist ein Google Cloud-Projekt, dessen einziger Zweck darin besteht, die Messwerte und Logs aus den EC2-Instanzen in einem AWS-Konto zu speichern.

      Wenn Sie ein AWS-Verbindungsprojekt für ein AWS-Konto haben, ist das Verbindungsprojekt das AWS-Hostingprojekt.

      Wenn Sie kein AWS-Verbindungsprojekt für das Konto haben, suchen Sie in Ihren vorhandenen Google Cloud-Projekten, um festzustellen, ob Sie zuvor ein AWS-Hostingprojekt für das Konto erstellt haben. Wenn ein Hostingprojekt gefunden wurde, verwenden Sie es.

      Wenn Sie für das Konto kein AWS-Hostingprojekt finden, sollten Sie ein Google Cloud-Projekt erstellen, das als Hostingprojekt dient. Wenn Sie EC2-Instanzen in mehreren AWS-Konten haben, erstellen Sie für jedes Konto ein Google Cloud-Projekt. Wir empfehlen außerdem, für diese Projekte eine Namenskonvention zu verwenden oder Projektlabels zu verwenden, damit Sie Ihre Hostingprojekte identifizieren können. Es wird nicht empfohlen, ein vorhandenes Google Cloud-Projekt noch einmal zu verwenden, insbesondere wenn es Google Cloud-Ressourcen enthält.

    2. Führen Sie die Schritte zum Autorisieren des Agents mithilfe einer Dienstkonto-Schlüsseldatei aus.

Führen Sie die folgenden Schritte aus, um die Zugriffsbereiche zu überprüfen:

  1. Fragen Sie die Zugriffsbereiche ab, indem Sie den folgenden Befehl auf der Compute Engine-Instanz ausführen:
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. Wenn in der Befehlsausgabe der Zugriffsbereich https://www.googleapis.com/auth/cloud-platform aufgeführt ist, haben Sie eine ausreichende Autorisierung.

    Wenn https://www.googleapis.com/auth/cloud-platform nicht aufgeführt ist, benötigen Sie zwei Zugriffsbereiche, einen aus jedem der folgenden „Logging“- und „Monitoring“-Paare:

    • https://www.googleapis.com/auth/logging.write oder
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write oder
      https://www.googleapis.com/auth/monitoring.admin

So ändern Sie Ihre Zugriffsbereiche:

  1. Wählen Sie im Navigationsbereich der Google Cloud Console Compute Engine und dann VM-Instanzen aus:

    Zu Seite VM-Instanzen

  2. Klicken Sie falls nötig auf die Drop-down-Liste der Google Cloud-Projekte und wählen Sie den Namen Ihres Projekts aus.
  3. Wählen Sie im Navigationsmenü VM-Instanzen und dann den Tab Instanzen und anschließend den Namen der VM aus.
  4. Klicken Sie auf  Beenden, um die VM herunterzufahren.
  5. Klicken Sie nach dem Beenden der VM auf  Bearbeiten.
  6. Suchen Sie Zugriffsbereiche im Abschnitt Identität und API-Zugriff der Seite und wählen Sie Zugriff für jede API festlegen aus.
  7. Wählen Sie für die Einträge Stackdriver Logging API und Stackdriver Monitoring API Nur Schreibzugriff aus.
  8. Klicken Sie auf Speichern und starten Sie die VM neu. Dazu klicken Sie auf  Starten/Fortsetzen.

Dienstkonto verwenden

Bei der Authentifizierung wird die Identität eines Clients bestimmt. Zur Authentifizierung empfehlen wir die Verwendung eines Dienstkontos. Dies ist eine spezielle Art von Konto, das normalerweise von einer Anwendung oder einer Arbeitslast anstelle einer Person verwendet wird. Weitere Informationen finden Sie unter Dienstkontenübersicht.

Sie können Dienstkonten zur Authentifizierung verwenden, unabhängig davon, wo Ihr Code ausgeführt wird – in Compute Engine, App Engine oder lokal. Weitere Informationen finden Sie unter Authentifizierung bei Google.

In diesem Abschnitt wird beschrieben, wie Sie ein neues Dienstkonto erstellen und ihm die erforderlichen Rollen zuweisen und wie Sie ein vorhandenes Dienstkonto aktualisieren, wenn es nicht die erforderlichen Rollen hat.

Dienstkonto erstellen

Folgen Sie zum Erstellen eines Dienstkontos der Anleitung unter Dienstkonto erstellen unter Beachtung der folgenden Informationen:

  • Wählen Sie das Google Cloud-Projekt aus, in dem das Dienstkonto erstellt werden soll.

    • Wählen Sie bei Compute Engine-Instanzen das Projekt aus, in dem Sie die Instanz erstellt haben.

    • Wählen Sie für Amazon EC2-Instanzen das AWS-Hostingprojekt aus.

  • Wählen Sie im Drop-down-Menü Rolle die folgenden Rollen aus:

    • Monitoring > Monitoring-Messwert-Autor. Dadurch wird der Monitoring-Agent autorisiert.

    Wenn Sie auch den Logging-Agent installieren, fügen Sie die folgende Rolle für diesen Agent hinzu:

    • Logging > Log-Autor. Dadurch wird der Logging-Agent autorisiert.
  • Wenn Sie sich mit einem Dienstkontoschlüssel authentifizieren möchten, wählen Sie als Schlüsseltyp JSON aus und klicken Sie auf Erstellen.

    Wenn Sie auf Erstellen klicken, wird eine Datei mit einem Dienstkontoschlüssel auf Ihr lokales System heruntergeladen. Weitere Informationen finden Sie unter Dienstkontoschlüssel erstellen und löschen.

Konfigurieren Sie als Nächstes das Dienstkonto und die Einstellungen abhängig davon, ob Sie die Autorisierung über angehängte Dienstkonten oder private Schlüssel für Dienstkonten durchführen.

Rollen eines vorhandenen Dienstkontos prüfen und ändern

Mit der Google Cloud Console können Sie feststellen, welche Rollen ein vorhandenes Dienstkonto hat, und alle erforderlichen Rollen hinzufügen:

  1. Wählen Sie im Navigationsbereich der Google Cloud Console IAM aus:

    Zu IAM

  2. Klicken Sie falls nötig auf die Drop-down-Liste der Google Cloud-Projekte und wählen Sie den Namen Ihres Projekts aus.

  3. Wenn Sie keine Liste von IAM-Hauptkonten (Nutzer und Dienstkonten) sehen, wählen Sie den Tab Berechtigungen aus.

  4. Suchen Sie in der Liste Ansicht nach Hauptkonten den Eintrag für das Dienstkonto. In der Spalte Rolle werden die Rollen aufgelistet, die dem Dienstkonto zugewiesen wurden.

  5. Wenn Ihr Dienstkonto nicht die erforderlichen Rollen für den Monitoring-Agent hat, führen Sie die folgenden Schritte aus, um die unter Dienstkonto erstellen beschriebenen Rollen hinzuzufügen:

    1. Klicken Sie im Eintrag für das Dienstkonto auf  Bearbeiten.
    2. Klicken Sie auf Weitere Rolle hinzufügen, um fehlende Rollen hinzuzufügen.
    3. Klicken Sie auf Speichern.

Mit einem angehängten Dienstkonto autorisieren

So autorisieren Sie den Monitoring-Agent, der auf einer Compute Engine-VM-Instanz mit einem angehängten Dienstkonto installiert ist:

  1. Prüfen Sie die Zugriffsbereiche Ihrer VM.

  2. Gewähren Sie dem Dienstkonto die IAM-Rollen mit den geringstmöglichen Berechtigungen. Informationen zu den erforderlichen Rollen finden Sie im Abschnitt Dienstkonto erstellen auf dieser Seite.

  3. Hängen Sie das Dienstkonto an die VM an, auf der der Agent ausgeführt wird.

  4. Installieren Sie den Agent, falls noch nicht geschehen. Informationen zum Installieren des Agents finden Sie unter Agent installieren.

Mit einem Dienstkontoschlüssel autorisieren

So autorisieren Sie den auf einer VM-Instanz installierten Monitoring-Agent mit privaten Schlüsseln für Dienstkonten:

  1. Übertragen Sie die Dienstkontoschlüsseldatei aus Ihrem lokalen System in die VM-Instanz:

    1. Erstellen Sie eine Umgebungsvariable, die auf die Dienstkontoschlüsseldatei auf Ihrem lokalen System verweist. Im folgenden Beispiel wird eine Variable namens CREDS erstellt:

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. Führen Sie die in der folgenden Tabelle gezeigten Schritte aus:

      Compute Engine

      1. Wählen Sie im Navigationsbereich der Google Cloud Console Compute Engine und dann VM-Instanzen aus:

        Zu Seite VM-Instanzen

        Identifizieren Sie den INSTANCE_NAME und die INSTANCE_ZONE für Ihre VM.

      2. Führen Sie auf Ihrem lokalen System einen Google Cloud CLI-Befehl aus, um die Schlüsseldatei von Ihrem lokalen System in Ihre VM-Instanz zu kopieren:

        REMOTE_USER="$USER"
        INSTANCE="INSTANCE_NAME"
        ZONE="INSTANCE_ZONE"
        gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
        
      3. Verschieben Sie auf Ihrer Compute Engine-Instanz die Dienstkonto-Schlüsseldatei vom temporären Speicherort an einen permanenten Speicherort. Unter Linux muss die Dienstkonto-Schlüsseldatei nur für root lesbar sein.

        An den folgenden Speicherorten erwartet der Agent Ihre Schlüsseldatei:

        • Linux-VMs: /etc/google/auth/application_default_credentials.json
        • Linux-VMs: Jeder Speicherort, den Sie in der Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS speichern, die für den Agent-Prozess sichtbar sein muss. Informationen zur Konfiguration finden Sie unter GOOGLE_APPLICATION_CREDENTIALS festlegen.

        Unter Linux können Sie beispielsweise das folgende Skript ausführen, das die Dienstkontoschlüsseldatei an den Standardspeicherort verschiebt und dann die entsprechenden Berechtigungen festlegt:

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

      Amazon EC2

      1. Identifizieren Sie für Ihre VM YOUR-INSTANCE'S-ID und YOUR-INSTANCE'S-AWS-REGION.

      2. Kopieren Sie auf Ihrem lokalen System mit scp die Schlüsseldatei des Dienstkontos von Ihrem lokalen System in die VM-Instanz:

        KEY="YOUR-SSH-KEY-PAIR-FILE"
        INSTANCE="ec2-YOUR-INSTANCE'S-ID.YOUR-INSTANCE'S-AWS-REGION.compute.amazonaws.com"
        # The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
        REMOTE_USER="EC2-USER"
        scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"
        

        Der Wert der Umgebungsvariablen INSTANCE geht davon aus, dass sich Ihre EC2-Instanz nicht in der Region us-east-1 befindet. Informationen zum Definieren der Variable INSTANCE, wenn sich Ihre Instanz in der Region us-east-1 befindet, finden Sie unter Von Amazon definierte Namenskonvention.

      3. Verschieben Sie auf Ihrer EC2-Instanz die Dienstkonto-Schlüsseldatei vom temporären Speicherort an einen der folgenden Speicherorte und stellen Sie unter Linux sicher, dass die Dienstkonto-Schlüsseldatei nur von root lesbar ist.

        An den folgenden Speicherorten erwartet der Agent Ihre Schlüsseldatei:

        • Linux-VMs: /etc/google/auth/application_default_credentials.json

        • Windows-VMs: C:\ProgramData\Google\Auth\application_default_credentials.json

        • Linux- und Windows-VMs: Jeder Speicherort, den Sie in der Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS speichern, die für den Agent-Prozess sichtbar sein muss. Informationen zur Konfiguration finden Sie unter GOOGLE_APPLICATION_CREDENTIALS festlegen.

        Unter Linux können Sie beispielsweise das folgende Skript ausführen, das die Dienstkontoschlüsseldatei an den Standardspeicherort verschiebt und dann die entsprechenden Berechtigungen festlegt:

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

  2. Die VM-Instanz hat jetzt die Dienstkontoschlüsseldatei, die der Agent benötigt. Installieren oder starten Sie den Agent als Nächstes:

GOOGLE_APPLICATION_CREDENTIALS festlegen

In diesem Abschnitt wird gezeigt, wie Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so festlegen, dass sie für den Prozess des Agents sichtbar ist.

Linux

  1. Bearbeiten Sie die folgende Konfigurationsdatei oder erstellen Sie die Datei, wenn sie nicht vorhanden ist:

    /etc/default/stackdriver-agent
    
  2. Fügen Sie der Konfigurationsdatei den folgenden Abschnitt hinzu:

    GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
    
  3. Starten Sie den Agent neu. Dazu führen Sie den folgenden Befehl auf der VM-Instanz aus:

    sudo service stackdriver-agent restart
    

Windows

  1. Führen Sie in PowerShell die folgenden Befehle als Administrator aus, um die Systemumgebungsvariable GOOGLE_APPLICATION_CREDENTIALS für den Ops-Agent festzulegen:

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. Starten Sie den Agent neu. Dazu führen Sie den folgenden Befehl auf der VM-Instanz aus:

    Restart-Service -Name StackdriverMonitoring