In dieser Anleitung wird erläutert, wie Sie dafür sorgen, dass der Ops-Agent, den Sie auf Ihrer VM-Instanz installieren, Telemetriedaten an Logging 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 mitgcloud 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 beim Erstellen Zugriffsbereiche zugewiesen. Neue Compute Engine-VMs haben ausreichende Zugriffsbereiche für den Ops-Agent, bei alten VMs oder solchen, bei denen Bereiche geändert wurden, ist das möglicherweise nicht der Fall. 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:
- 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
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:
-
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Compute Engine lautet.
- Klicken Sie falls nötig auf die Drop-down-Liste der Google Cloud-Projekte und wählen Sie den Namen Ihres Projekts aus.
- Wählen Sie im Navigationsmenü VM-Instanzen und dann den Tab Instanzen und anschließend den Namen der VM aus.
- Klicken Sie auf stop Beenden, um die VM herunterzufahren.
- Klicken Sie nach dem Beenden der VM auf edit Bearbeiten.
- Suchen Sie Zugriffsbereiche im Abschnitt Identität und API-Zugriff der Seite und wählen Sie Zugriff für jede API festlegen aus.
- Wählen Sie für die Einträge Stackdriver Logging API und Stackdriver Monitoring API Nur Schreibzugriff aus.
- Klicken Sie auf Speichern und starten Sie die VM neu. Dazu klicken Sie auf play_arrow 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:
-
Öffnen Sie in der Google Cloud Console die Seite IAM:
Rufen Sie IAM auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift IAM & Admin ist.
Klicken Sie falls nötig auf die Drop-down-Liste der Google Cloud-Projekte und wählen Sie den Namen Ihres Projekts aus.
Wenn Sie keine Liste von IAM-Hauptkonten (Nutzer und Dienstkonten) sehen, wählen Sie den Tab Berechtigungen aus.
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.
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.
- Klicken Sie im Eintrag für das Dienstkonto auf edit Bearbeiten.
- Klicken Sie auf Weitere Rolle hinzufügen, um fehlende Rollen hinzuzufügen.
- 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:
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.
Hängen Sie das Dienstkonto an die VM an, auf der der Agent ausgeführt wird.
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:
Übertragen Sie die Dienstkontoschlüsseldatei aus Ihrem lokalen System in die VM-Instanz:
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
Führen Sie die in der folgenden Tabelle gezeigten Schritte aus:
Compute Engine
-
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Compute Engine lautet.
Identifizieren Sie den INSTANCE_NAME und die INSTANCE_ZONE für Ihre VM.
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"
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 Kundenservicemitarbeiters sichtbar sein. Informationen zur Konfiguration finden Sie unterGOOGLE_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"
-
Die VM-Instanz hat jetzt die Dienstkontoschlüsseldatei, die der Agent benötigt. Installieren oder starten Sie den Agent als Nächstes:
Informationen zum Installieren des Agents finden Sie unter Agent installieren.
Informationen zum Neustarten des Agents finden Sie unter Agent neu starten.
Wie Sie die Dienstkontoschlüsseldatei prüfen, erfahren Sie unter Anmeldedaten mit privatem Schlüssel prüfen.
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
Bearbeiten Sie die folgende Konfigurationsdatei oder erstellen Sie die Datei, wenn sie nicht vorhanden ist:
/etc/systemd/system.conf
Fügen Sie der Datei folgendes hinzu:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
Laden Sie die Umgebungsvariablen neu:
sudo systemctl daemon-reload
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
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")
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