Ce guide explique comment vous assurer que l'agent Monitoring, que vous installez sur votre instance de machine virtuelle (VM), est autorisé à envoyer des données de télémétrie à Monitoring.
Présentation des autorisations
L'autorisation fait référence au processus permettant de déterminer les autorisations dont dispose un client authentifié pour un ensemble de ressources. Google Cloud autorise l'agent Monitoring sur une instance de VM Compute Engine identifiants par défaut de l'application (ADC).
L'agent Monitoring est compatible avec l'ADC qui authentifient le compte de service associé à une VM, ou une clé de compte de service.
- Un compte de service associé fait référence à un compte de service spécifique à une ressource donnée, telle qu'une VM. Le compte de service possède ses propres identifiants uniques. Les ADC utilisent le serveur de métadonnées de la VM pour obtenir des identifiants pour un service.
- Une clé de compte de service fait référence à une clé privée utilisée pour autoriser la paire de clés sur un compte de service d'un projet, ce qui vous permet de créer un jeton d'accès. Ce jeton vous permet de fournir une identité afin de pouvoir interagir avec les API Google Cloud au nom du compte de service.
Nous vous recommandons de configurer les ADC pour authentifier un compte de service associé autant que possible, car la clé privée nécessite un stockage local, et ce stockage peut être compromis. Pour en savoir plus sur les clés de compte de service, consultez la page Bonnes pratiques de gestion des clés de compte de service.
Pour les instances de VM AWS EC2, l'agent Monitoring n'accepte l'authentification qu'à l'aide de la méthode de clé de compte de service.
Avant de commencer
Lisez ce guide si l'un des cas suivants s'applique à vous :
Si vous exécutez des instances Compute Engine très anciennes ou si vous avez modifié les niveaux d'accès ou les paramètres de compte de service de vos instances Compute Engine, vous devez suivre la procédure décrite dans ce guide avant d'installer l'agent. Ces VM peuvent ne pas posséder le fichier de clé de compte de service requis. Pour plus d'informations sur la vérification des niveaux d'accès et des paramètres de compte de service de vos instances, consultez la section Vérifier les identifiants Compute Engine.
Sur les nouvelles instances de VM Compute Engine, les niveaux d'accès et les paramètres de compte de service sont suffisants pour exécuter les agents.
Si vous exécutez des instances de VM Amazon EC2 (AWS VC2), procédez comme suit avant d'installer l'agent :
Identifiez le projet hôte AWS du compte AWS à l'aide de vos instances EC2. Le projet hôte est un projet Google Cloud dont l'objectif unique consiste à stocker les métriques et les journaux des instances EC2 dans un compte AWS.
Si vous ne trouvez pas de projet hôte AWS pour le compte, nous vous recommandons de créer un projet Google Cloud qui servira de projet hôte. Si vous disposez d'instances EC2 dans plusieurs comptes AWS, créez un projet Google Cloud pour chaque compte. Nous vous recommandons également d'utiliser une convention d'attribution de noms pour ces projets ou d'utiliser des libellés de projet, afin de pouvoir identifier vos projets hôtes. Nous vous déconseillons de réutiliser un projet Google Cloud existant, en particulier s'il contient des ressources Google Cloud.
Suivez la procédure pour autoriser l'agent à l'aide d'un fichier de clé de compte de service.
Pour vérifier les niveaux d'accès, procédez comme suit :
- Interrogez les niveaux d'accès en exécutant la commande suivante sur votre instance Compute Engine :
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
Dans le résultat de la commande, si le niveau d'accès
https://www.googleapis.com/auth/cloud-platform
est répertorié, vous disposez d'une autorisation suffisante.Si
https://www.googleapis.com/auth/cloud-platform
n'est pas répertorié, vous avez besoin de deux niveaux d'accès, l'un de chacune des paires "journalisation" et "surveillance" suivants :https://www.googleapis.com/auth/logging.write
ouhttps://www.googleapis.com/auth/logging.admin
https://www.googleapis.com/auth/monitoring.write
ouhttps://www.googleapis.com/auth/monitoring.admin
Pour modifier les niveaux d'accès, procédez comme suit :
-
Dans la console Google Cloud, accédez à la page Instances de VM :
Accéder à la page Instances de VM
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Compute Engine.
- Si nécessaire, cliquez sur la liste déroulante des projets Google Cloud et sélectionnez le nom de votre projet.
- Dans le menu de navigation, sélectionnez Instances de VM, puis cliquez sur l'onglet Instances et sur le nom de votre VM.
- Arrêtez la VM en cliquant sur stop Arrêter.
- Une fois la VM arrêtée, cliquez sur edit Modifier.
- Recherchez les niveaux d'accès dans la section Identité et accès à l'API de la page, puis sélectionnez Définir l'accès pour chaque API.
- Pour les entrées API Stackdriver Logging et API Stackdriver Monitoring, sélectionnez Écriture seule.
- Cliquez sur Enregistrer, puis redémarrez la VM en cliquant sur play_arrow Démarrer/Reprendre.
Utiliser un compte de service
L'authentification fait référence au processus permettant de déterminer l'identité d'un client. Pour l'authentification, nous vous recommandons d'utiliser un compte de service, un type de compte spécial généralement utilisé par une application ou une charge de travail, plutôt que par une personne. Pour en savoir plus, consultez la section Présentation des comptes de service.
Vous pouvez utiliser des comptes de service pour l'authentification, peu importe où le code s'exécute (sur Compute Engine, sur App Engine ou sur site). Pour en savoir plus, consultez la page Authentification chez Google.
Cette section explique comment créer un compte de service et lui attribuer les rôles nécessaires, et comment mettre à jour un compte de service existant s'il ne dispose pas des rôles nécessaires.
Créer un compte de service
Pour créer un compte de service, exécutez les procédures décrites à la section Créer un compte de service avec les informations suivantes :
Sélectionnez le projet Google Cloud dans lequel vous souhaitez créer le compte de service.
Pour les instances Compute Engine, sélectionnez le projet dans lequel vous avez créé l'instance.
Pour les instances Amazon EC2, sélectionnez le projet hôte AWS.
Dans le menu déroulant Rôle, sélectionnez les rôles suivants :
- Monitoring > Monitoring Metric Writer (Monitoring > Rédacteur de métriques de surveillance). Cette action active l'agent de surveillance.
Si vous installez également l'agent Logging, ajoutez le rôle suivant pour cet agent :
- Logging > Logs Writer (Logging > Rédacteur de journaux). Cela a pour effet d'autoriser l'agent Logging.
Si vous envisagez de vous authentifier à l'aide d'une clé de compte de service, sélectionnez JSON comme type de clé et cliquez sur Créer.
Lorsque vous cliquez sur Créer, un fichier contenant une clé de compte de service est téléchargé sur votre système local. Pour plus d'informations, consultez la page Créer et supprimer des clés de compte de service.
Ensuite, configurez votre compte de service et vos paramètres selon que vous autorisez avec des comptes de service associés ou avec des clés privées.
Vérifier et modifier les rôles d'un compte de service existant
Vous pouvez utiliser la console Google Cloud pour déterminer les rôles dont dispose un compte de service existant et ajouter les rôles nécessaires manquants :
-
Dans la console Google Cloud, accédez à la page IAM :
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.
Si nécessaire, cliquez sur la liste déroulante des projets Google Cloud et sélectionnez le nom de votre projet.
Si vous ne voyez pas la liste des comptes principaux IAM (utilisateurs et comptes de service), sélectionnez l'onglet Autorisations.
Dans la liste Afficher par Comptes principaux, localisez l'entrée du compte de service. La colonne Rôle répertorie les rôles attribués au compte de service.
Si votre compte de service ne dispose pas des rôles nécessaires pour l'agent Monitoring, procédez comme suit pour ajouter les rôles décrits dans la section Créer un compte de service :
- Cliquez sur edit Modifier dans l'entrée du compte de service.
- Cliquez sur Ajouter un autre rôle pour ajouter les rôles manquants.
- Cliquez sur Enregistrer.
Autoriser avec un compte de service associé
Pour autoriser l'agent Monitoring installé sur une instance de VM Compute Engine associée à un compte de service, procédez comme suit :
Assurez-vous d'avoir validé les niveaux d'accès de votre VM.
Attribuez à votre compte de service les rôles IAM offrant le niveau d'accès le plus faible possible. Pour connaître les rôles requis, consultez la section Créer un compte de service sur cette page.
Associez le compte de service à la VM sur laquelle l'agent s'exécute.
Si vous n'avez pas encore installé l'agent, installez-le. Pour en savoir plus sur l'installation de l'agent, consultez la page Installer l'agent.
Autoriser avec une clé de compte de service
Pour autoriser l'agent Monitoring installé sur une instance de VM à l'aide de clés privées de compte de service, procédez comme suit :
Transférez le fichier de clé de compte de service de votre système local vers votre instance de VM :
Créez une variable d'environnement pour qu'elle pointe vers le fichier de clé du compte de service sur votre système local. L'exemple suivant crée une variable appelée
CREDS
:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
Suivez les étapes indiquées dans le tableau suivant :
Compute Engine
-
Dans la console Google Cloud, accédez à la page Instances de VM :
Accéder à la page Instances de VM
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Compute Engine.
Identifiez les valeurs INSTANCE_NAME et INSTANCE_ZONE de votre VM.
Sur votre système local, exécutez une commande Google Cloud CLI pour copier le fichier de clé de votre système local sur votre instance de VM :
REMOTE_USER="$USER" INSTANCE="INSTANCE_NAME" ZONE="INSTANCE_ZONE" gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
Sur votre instance Compute Engine, déplacez le fichier de clé du compte de service de l'emplacement temporaire vers un emplacement permanent. Pour Linux, assurez-vous que le fichier de clé du compte de service n'est lisible que par
root
.Voici les emplacements où l'agent attend votre fichier de clé :
- VM Linux :
/etc/google/auth/application_default_credentials.json
- VM Linux : tous les emplacements que vous stockez dans la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
, qui doivent être visibles par le processus de l'agent. Pour obtenir des informations sur la configuration, consultez la page DéfinirGOOGLE_APPLICATION_CREDENTIALS
.
Par exemple, sous Linux, vous pouvez exécuter le script suivant pour déplacer le fichier de clé du compte de service vers l'emplacement par défaut, puis définir les autorisations appropriées :
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"
- VM Linux :
Amazon EC2
Pour votre VM, identifiez YOUR-INSTANCE'S-ID et YOUR-INSTANCE'S-AWS-REGION.
Sur votre système local, utilisez scp pour copier le fichier de clé du compte de service de votre système local vers votre instance de VM :
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"
La valeur de la variable d'environnement
INSTANCE
suppose que votre instance EC2 ne se trouve pas dans la régionus-east-1
. Pour savoir comment définir la variableINSTANCE
lorsque votre instance se trouve dans la régionus-east-1
, consultez la convention d'attribution de noms définie par Amazon.Sur votre instance EC2, déplacez le fichier de clé de compte de service de l'emplacement temporaire vers l'un des emplacements suivants. Pour Linux, assurez-vous que le fichier de clé de compte de service n'est lisible que par
root
.Voici les emplacements où l'agent attend votre fichier de clé :
VM Linux :
/etc/google/auth/application_default_credentials.json
VM Windows :
C:\ProgramData\Google\Auth\application_default_credentials.json
VM Linux et Windows : n'importe quel emplacement stocké dans la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
, qui doit être visible par le processus de l'agent. Pour obtenir des informations sur la configuration, consultez la page DéfinirGOOGLE_APPLICATION_CREDENTIALS
.
Par exemple, sous Linux, vous pouvez exécuter le script suivant pour déplacer le fichier de clé du compte de service vers l'emplacement par défaut, puis définir les autorisations appropriées :
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"
-
L'instance de VM contient désormais le fichier de clé de compte de service dont l'agent a besoin. Ensuite, installez ou redémarrez l'agent :
Pour en savoir plus sur l'installation de l'agent, consultez la page Installer l'agent.
Pour en savoir plus sur l'installation de l'agent, consultez la page Redémarrer l'agent.
Si vous souhaitez vérifier le fichier de clé du compte de service, consultez la section Vérifier les identifiants de clé privée.
Définir GOOGLE_APPLICATION_CREDENTIALS
Cette section explique comment définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
afin qu'elle soit visible par le processus de l'agent.
Linux
Modifiez le fichier de configuration suivant ou créez-le s'il n'existe pas :
/etc/default/stackdriver-agent
Ajoutez ce qui suit au fichier de configuration :
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE
Redémarrez l'agent en exécutant la commande suivante sur votre instance de VM.
sudo service stackdriver-agent restart
Windows
Dans PowerShell, exécutez les commandes suivantes en tant qu'administrateur pour définir la variable d'environnement système
GOOGLE_APPLICATION_CREDENTIALS
que l'agent Ops doit utiliser :[Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
Redémarrez l'agent en exécutant la commande suivante sur votre instance de VM.
Restart-Service -Name StackdriverMonitoring