Autoriser l'agent Ops

Ce guide explique comment vous assurer que l'agent Ops que vous installez sur votre instance de machine virtuelle (VM) est autorisé à envoyer des données de télémétrie à Logging.

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 Ops sur une instance de VM Compute Engine à l'aide des identifiants par défaut de l'application (ADC, Application Default Credentials).

L'agent Ops accepte les identifiants par défaut de l'application qui authentifient le compte de service associé d'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.
  • L'agent Ops n'est pas compatible avec l'autorisation à l'aide de gcloud auth. Pour éviter tout comportement indésirable, vous devez revoke les identifiants créés à l'aide de gcloud auth.

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.

Vérifier vos niveaux d'accès

Les instances de VM Compute Engine se voient attribuer des niveaux d'accès lorsque vous les créez. Les nouvelles VM Compute Engine disposent de niveaux d'accès appropriés pour l'agent Ops, mais ce n'est peut-être pas le cas des anciennes VM ou des VM sur lesquelles des champs d'application ont été modifiés. Pour en savoir plus sur les niveaux d'accès et les comptes de service, consultez la section Autorisation de la documentation Compute Engine.

Pour vérifier les niveaux d'accès, procédez comme suit :

  1. 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
  2. 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 ou
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write ou
      https://www.googleapis.com/auth/monitoring.admin

Pour modifier les niveaux d'accès, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Compute Engine, puis Instances de VM :

    Accéder à la page Instances de VM

  2. Si nécessaire, cliquez sur la liste déroulante des projets Google Cloud et sélectionnez le nom de votre projet.
  3. Dans le menu de navigation, sélectionnez Instances de VM, puis cliquez sur l'onglet Instances et sur le nom de votre VM.
  4. Arrêtez la VM en cliquant sur  Arrêter.
  5. Une fois la VM arrêtée, cliquez sur  Modifier.
  6. 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.
  7. Pour les entrées API Stackdriver Logging et API Stackdriver Monitoring, sélectionnez Écriture seule.
  8. Cliquez sur Enregistrer, puis redémarrez la VM en cliquant sur  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 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.

  • 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).

    • Logging > Logs Writer (Logging > Rédacteur de journaux).

  • 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 :

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM :

    Accéder à IAM

  2. Si nécessaire, cliquez sur la liste déroulante des projets Google Cloud et sélectionnez le nom de votre projet.

  3. Si vous ne voyez pas la liste des comptes principaux IAM (utilisateurs et comptes de service), sélectionnez l'onglet Autorisations.

  4. 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.

  5. Si votre compte de service ne dispose pas des rôles nécessaires pour l'agent Ops, procédez comme suit pour ajouter les rôles décrits dans la section Créer un compte de service :

    1. Cliquez sur  Modifier dans l'entrée du compte de service.
    2. Cliquez sur Ajouter un autre rôle pour ajouter les rôles manquants.
    3. Cliquez sur Enregistrer.

Autoriser avec un compte de service associé

Pour autoriser l'agent Ops installé sur une instance de VM Compute Engine associée à un compte de service, procédez comme suit:

  1. Assurez-vous d'avoir validé les niveaux d'accès de votre VM.

  2. 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.

  3. Associez le compte de service à la VM sur laquelle l'agent s'exécute.

  4. 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 Ops installé sur une instance de VM à l'aide de clés privées de compte de service, procédez comme suit :

  1. Transférez le fichier de clé de compte de service de votre système local vers votre instance de VM :

    1. 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
      
    2. Suivez les étapes indiquées dans le tableau suivant :

      Compute Engine

      1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Compute Engine, puis  Instances de VM :

        Accéder à la page Instances de VM

        Identifiez les valeurs INSTANCE_NAME et INSTANCE_ZONE de votre VM.

      2. 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"
        
      3. 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.

        Vous devez également définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS de sorte qu'elle pointe vers l'emplacement du fichier de clé du compte de service, et celle-ci doit être visible par le processus de l'agent. Pour en savoir plus sur la configuration, consultez la section Définir GOOGLE_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"
        

  2. 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 :

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

  1. Modifiez le fichier de configuration suivant ou créez-le s'il n'existe pas :

    /etc/systemd/system.conf
    
  2. Ajoutez ce qui suit au fichier de configuration :

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. Actualisez les variables d'environnement :

    sudo systemctl daemon-reload
    
  4. Redémarrez l'agent en exécutant la commande suivante sur votre instance de VM.

    sudo systemctl restart google-cloud-ops-agent
    

Windows

  1. 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")
    
  2. Redémarrez l'agent en exécutant la commande suivante sur votre instance de VM.

    Restart-Service -Name google-cloud-ops-agent -Force