In dieser Anleitung wird erläutert, wie Sie dafür sorgen, dass der Logging-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 Logging-Agent auf einer Compute Engine-VM-Instanz mithilfe von Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC).
Der Logging-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.
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 Logging-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, gehen Sie vor der Installation des Agents so vor:
Identifizieren Sie das AWS-Hostingprojekt für das AWS-Konto bei Ihren EC2-Instanzen. Das Hostingprojekt ist ein Google Cloud-Projekt, dessen einzige Aufgabe darin besteht, die Messwerte und Logs aus den EC2-Instanzen in einem AWS-Konto zu speichern.
Wenn Sie kein AWS-Hostingprojekt für das Konto finden, empfehlen wir Ihnen, ein Google Cloud-Projekt zu erstellen, das als Hostingprojekt dient. Wenn Sie EC2-Instanzen in mehreren AWS-Konten haben, erstellen Sie für jedes Konto ein Google Cloud-Projekt. Außerdem empfehlen wir, für diese Projekte eine Namenskonvention 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.
Führen Sie die Schritte zur Autorisierung des Agents mithilfe einer Dienstkonto-Schlüsseldatei aus.
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 für Amazon EC2-Instanzen das AWS-Hostingprojekt aus.
Wählen Sie im Drop-down-Menü Rolle die folgenden Rollen aus:
- Logging > Logautor. Dadurch wird der Logging-Agent berechtigt, Logs aufzunehmen.
- Monitoring > Monitoring-Messwert-Autor. Dadurch wird der Logging-Agent autorisiert, eigene Statusmesswerte aufzunehmen.
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 und Verwaltung 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 Logging-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 Logging-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 Logging-Agent mithilfe privater Dienstkontoschlüssel:
Ü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.An den folgenden Speicherorten erwartet der Kundenservicemitarbeiter 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: Ein beliebiger Speicherort, den Sie in der Umgebungsvariablen
GOOGLE_APPLICATION_CREDENTIALS
speichern. Diese Variable muss für den Prozess des Agents 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"
- Linux-VMs:
Amazon EC2
Identifizieren Sie für Ihre VM YOUR-INSTANCE'S-ID und YOUR-INSTANCE'S-AWS-REGION.
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 Regionus-east-1
befindet. Informationen zum Definieren der VariableINSTANCE
, wenn sich Ihre Instanz in der Regionus-east-1
befindet, finden Sie unter Von Amazon definierte Namenskonvention.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 Kundenservicemitarbeiter 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: Beliebiger Speicherort, den Sie in der Umgebungsvariablen
GOOGLE_APPLICATION_CREDENTIALS
speichern. Diese Variable muss für den Prozess des Agents 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/default/google-fluentd
Fügen Sie der Konfigurationsdatei den folgenden Abschnitt hinzu:
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
Starten Sie den Agent neu. Dazu führen Sie den folgenden Befehl auf der VM-Instanz aus:
sudo service google-fluentd restart
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 StackdriverLogging