Ops-Agent autorisieren

In dieser Anleitung wird erläutert, wie Sie dafür sorgen, dass der Ops-Agent, den Sie auf Ihrer VM-Instanz installieren, Telemetriedaten an Google Cloud Observability senden darf.

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 Ops-Agent auf einer Compute Engine-VM-Instanz mithilfe von Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC).

Der Ops-Agent unterstützt ADC, die entweder das angehängte Dienstkonto einer VM oder einen Dienstkontoschlüssel authentifizieren.

  • 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.
  • Der Ops-Agent unterstützt keine Autorisierung mit gcloud auth. Um unerwünschtes Verhalten zu vermeiden, müssen Sie alle mit gcloud auth erstellten Anmeldedaten widerrufen.

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.

Zugriffsbereiche überprüfen

Compute Engine-VM-Instanzen werden bei der Erstellung Zugriffsbereiche zugewiesen. Neue Compute Engine-VMs haben ausreichende Zugriffsbereiche für den Ops-Agent. Alte VMs oder solche, auf denen Bereiche geändert wurden, möglicherweise jedoch nicht. Weitere Informationen zu Zugriffsbereichen und Dienstkonten finden Sie in der Compute Engine-Dokumentation unter Autorisierung.

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. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    Zu Seite VM-Instanzen

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Compute Engine ist.

  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 im Drop-down-Menü Rolle die folgenden Rollen aus:

    • Monitoring > Monitoring-Messwert-Autor.

    • Logging > Logautor.

  • 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. Öffnen Sie in der Google Cloud Console die Seite IAM:

    Rufen Sie IAM auf.

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM & Verwaltung ist.

  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 Ops-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 Ops-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 Ops-Agent mithilfe von privaten Dienstkontoschlüsseln:

  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. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

        Zu Seite VM-Instanzen

        Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Compute Engine ist.

        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.

        Sie müssen auch die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festlegen, um auf den Speicherort der Dienstkontoschlüsseldatei zu verweisen. Die Variable muss für den Prozess des Agents sichtbar sein. Weitere 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/systemd/system.conf
    
  2. Fügen Sie der Datei folgendes hinzu:

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. Laden Sie die Umgebungsvariablen neu:

    sudo systemctl daemon-reload
    
  4. Starten Sie den Agent neu. Dazu führen Sie den folgenden Befehl auf der VM-Instanz aus:

    sudo systemctl restart google-cloud-ops-agent
    

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 google-cloud-ops-agent -Force