Créer et activer des comptes de service pour les instances

Cette page décrit comment créer et utiliser des comptes de service avec vos instances de machine virtuelle (VM). Un compte de service est un compte spécial dont les identifiants peuvent être utilisés dans le code de votre application pour accéder à d'autres services Google Cloud Platform.

Pour en savoir plus sur les comptes de service, consultez la section Présentation des comptes de service.

Avant de commencer

Créer un compte de service

Vous pouvez créer et configurer un compte de service à l'aide de Google Cloud Identity and Access Management (IAM). Après avoir créé un compte, attribuez-lui un ou plusieurs rôles IAM, puis autorisez une instance de machine virtuelle à s'exécuter en tant que compte de ce service.

Pour créer un compte de service :

  1. Créez un compte de service comme décrit dans la documentation sur les comptes de service IAM.

  2. Obtenez l'adresse e-mail du compte de service. Vous devez disposer de l'adresse e-mail pour pouvoir configurer une instance à exécuter en tant que compte de service. Vérifiez l'adresse e-mail du compte de service dans la console :

    1. Accédez à la page "Comptes de service" dans la console GCP.

      Accéder à la page "Comptes de service"

    2. Si vous y êtes invité, sélectionnez un projet.
    3. Recherchez le compte de service que vous avez créé et notez l'adresse e-mail associée.

    Généralement, l'adresse e-mail du compte de service est dérivée de l'ID du compte de service, selon le format suivant :

    [SERVICE-ACCOUNT-NAME]@[PROJECT_ID].iam.gserviceaccount.com
    
  3. Accordez des rôles IAM au compte de service. Si vous n'accordez aucun rôle, le compte de service n'a accès à aucun service. Pour obtenir la liste complète des rôles IAM, consultez la section Comprendre les rôles dans la documentation IAM.

  4. Ensuite, configurez une instance à exécuter en tant que compte de service. Pour ce faire, suivez les instructions ci-dessous.

Configurer une instance à exécuter en tant que compte de service

Après avoir créé un compte de service, vous pouvez créer des instances de machine virtuelle à exécuter en tant que compte de service. Si vous souhaitez affecter ou modifier un compte de service d'une instance existante, consultez la section Modifier le compte de service et les champs d'application d'accès d'une instance.

Vous pouvez activer plusieurs instances de machine virtuelle pour qu'elles utilisent le même compte de service ; toutefois une instance de machine virtuelle ne peut avoir qu'une seule identité de compte de service. Si vous attribuez le même compte de service à plusieurs instances de machine virtuelle, toute modification ultérieure apportée au compte de service affecte les instances utilisant le compte de service. Cela inclut toutes les modifications apportées aux rôles IAM qui sont accordés au compte de service. Par exemple, si vous supprimez un rôle, toutes les instances utilisant le compte de service perdent les autorisations accordées par ce rôle.

Vous pouvez configurer une instance à exécuter en tant que compte de service via la console Google Cloud Platform, l'outil de ligne de commande gcloud ou directement via l'API.

Console

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Sur la page Créer une instance, spécifiez les propriétés souhaitées pour votre instance.
  4. Dans la section Identité et accès à l'API, choisissez le compte de service que vous souhaitez utiliser dans la liste déroulante.
  5. Cliquez sur Créer pour créer l'instance.

gcloud

Pour créer une instance et autoriser son exécution en tant que compte de service personnalisé à l'aide de l'outil de ligne de commande gcloud, indiquez l'adresse e-mail du compte de service et les champs d'application d'accès souhaités pour l'instance. En règle générale, vous pouvez simplement définir le champ d'application d'accès cloud-platform. La combinaison des champs d'application d'accès accordés à l'instance de machine virtuelle et des rôles IAM accordés au compte de service détermine le niveau d'accès à un compte de service pour cette instance. Le compte de service ne peut exécuter des méthodes d'API que si elles sont autorisées à la fois par le champ d'application d'accès et le rôle IAM.

Vous pouvez également choisir de définir des champs d'application spécifiques autorisant l'accès aux méthodes particulières de l'API que le service peut appeler. Par exemple, pour appeler la méthode instances.insert, vous devez disposer d'une autorisation avec le champ d'application https://www.googleapis.com/auth/compute ou https://www.googleapis.com/auth/cloud-platform, ainsi qu'un rôle IAM qui accorde l'accès à cette méthode. Vous pouvez définir le champ d'application compute au lieu de cloud-platform : cela donne au service l'autorisation d'appeler des méthodes dans Compute Engine, mais aucune autorisation d'appeler des méthodes d'API en dehors de Compute Engine.

gcloud compute instances create [INSTANCE_NAME] \
    --service-account [SERVICE_ACCOUNT_EMAIL] \
    --scopes [SCOPES,...]

Où :

Exemple :

gcloud compute instances create example-vm \
    --service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \
    --scopes https://www.googleapis.com/auth/cloud-platform

L'outil gcloud offre également des alias de champs d'application au lieu d'URI plus longs. Par exemple, le champ d'application d'un accès complet à Google Cloud Storage est le suivant : https://www.googleapis.com/auth/devstorage.full_control. L'alias pour ce champ d'application est storage-full.

Vous pouvez afficher une liste des champs d'application et des alias sur la page instances create dans la description du paramètre --scopes. L'aide associée à la commande instances create répertorie également ces champs d'application et alias :

gcloud compute instances create --help

Spécifiez l'alias de la même manière que vous spécifiez l'URI de champ d'application. Par exemple :

gcloud compute instances create [INSTANCE_NAME] \
    --service-account [SERVICE_ACCOUNT_EMAIL] \
    --scopes cloud-platform

API

Dans l'API, définissez une requête normale pour créer une instance, mais incluez la propriété serviceAccounts. Obtenez l'adresse email de votre compte de service et incluez-la dans la propriété email, ainsi que les champs d'application d'accès souhaités pour l'instance. En règle générale, vous pouvez simplement définir le champ d'application d'accès cloud-platform. La combinaison des champs d'application d'accès et des rôles IAM accordés au compte de service détermine le niveau d'accès à un compte de service pour cette instance. Le compte de service ne peut exécuter des méthodes d'API que si elles sont autorisées à la fois par le champ d'application d'accès et le rôle IAM.

Vous pouvez également choisir de définir des champs d'application d'accès spécifiques autorisant l'accès aux méthodes particulières de l'API que le service peut appeler. Par exemple, pour appeler la méthode instances.insert, vous devez disposer d'une autorisation avec le champ d'application d'accès https://www.googleapis.com/auth/compute ou https://www.googleapis.com/auth/cloud-platform. Vous pouvez définir le champ d'application compute au lieu de cloud-platform : cela donne au service l'autorisation d'appeler des méthodes dans Compute Engine, mais aucune autorisation d'appeler des méthodes d'API en dehors de Compute Engine.

POST https://www.googleapis.com/compute/v1/projects/zones/[ZONE]/instances

{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "name": "[INSTANCE_NAME]",
  "serviceAccounts": [
   {
    "email": "[SERVICE_ACCOUNT_EMAIL]",
    "scopes": ["https://www.googleapis.com/auth/cloud-platform"]
   }
  ],
  ...
}

Après avoir configuré une instance à exécuter en tant que compte de service, vous pouvez utiliser les identifiants du compte de service à partir d'une instance de plusieurs manières :

Authentifier des applications à l'aide des identifiants du compte de service

Après avoir configuré une instance à exécuter en tant que compte de service, vous pouvez utiliser les identifiants du compte de service pour authentifier les applications en cours d'exécution sur l'instance.

Authentifier des applications avec une bibliothèque cliente

Les bibliothèques clientes peuvent utiliser les identifiants par défaut de l'application pour s'authentifier auprès des API Google et envoyer des requêtes à ces API. Les identifiants par défaut de l'application permettent aux applications d'obtenir des identifiants de plusieurs sources. Vous pouvez ainsi tester votre application localement, puis la déployer sur une instance Compute Engine sans modifier le code de l'application. Pendant que vous développez votre application localement, l'application peut s'authentifier à l'aide d'une variable d'environnement ou du SDK Google Cloud. Lorsque votre application s'exécute sur une instance, elle peut s'authentifier à l'aide du compte de service qui a été activé sur l'instance.

Cet exemple utilise la bibliothèque cliente Python pour s'authentifier et faire une requête à l'API Cloud Storage pour répertorier les buckets d'un projet. L'exemple utilise la procédure suivante :

  1. Obtenez les identifiants nécessaires pour l'API Cloud Storage, et initialisez le service Cloud Storage à l'aide de la méthode build() et des identifiants.
  2. Répertoriez les buckets dans Cloud Storage.

Vous pouvez exécuter cet exemple sur une instance ayant accès à la gestion des buckets dans Google Cloud Storage.

import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Authentifier des applications directement avec les jetons d'accès

Pour certaines applications, vous devrez peut-être demander un jeton d'accès OAuth2 et l'utiliser directement, sans passer par une bibliothèque cliente ni utiliser les outils gcloud ou gsutil. Il existe plusieurs manières d'obtenir et d'utiliser ces jetons d'accès pour authentifier vos applications. Par exemple, vous pouvez utiliser curl pour créer une requête simple ou utiliser un langage de programmation tel que Python pour plus de flexibilité.

cURL

Pour utiliser curl pour demander un jeton d'accès et envoyer une requête à une API, procédez comme suit :

  1. Sur l'instance sur laquelle votre application s'exécute, interrogez le serveur de métadonnées pour obtenir un jeton d'accès en exécutant la commande suivante :

    $ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
    -H "Metadata-Flavor: Google"

    La requête renvoie une réponse semblable à celle-ci :

    {
          "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA",
          "expires_in":3599,
          "token_type":"Bearer"
     }
  2. Copiez la valeur de la propriété access_token à partir de la réponse et utilisez-la pour envoyer des requêtes à l'API. Par exemple, la requête suivante imprime une liste des instances de votre projet à partir d'une zone donnée :

    $ curl https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances \
    -H "Authorization":"Bearer [ACCESS_TOKEN]"
    

    où :

    • [PROJECT_ID] correspond à l'ID de projet pour cette requête.
    • [ZONE] correspond à la zone à partir de laquelle répertorier les instances.
    • [ACCESS_TOKEN] correspond à la valeur du jeton d'accès obtenue à l'étape 1.

    Pour plus d'informations sur les paramètres que vous pouvez définir dans votre requête, consultez la documentation relative aux paramètres.

Python

Cet exemple montre comment demander un jeton pour accéder à l'API Google Cloud Storage dans une application Python. L'exemple utilise la procédure suivante :

  1. Demande d'un jeton d'accès au serveur de métadonnées
  2. Récupération du jeton d'accès à partir de la réponse du serveur
  3. Utilisation du jeton d'accès pour envoyer une requête à Google Cloud Storage
  4. Impression de la réponse par le script en cas de requête recevable
import argparse

import requests

METADATA_URL = 'http://metadata.google.internal/computeMetadata/v1/'
METADATA_HEADERS = {'Metadata-Flavor': 'Google'}
SERVICE_ACCOUNT = 'default'

def get_access_token():
    url = '{}instance/service-accounts/{}/token'.format(
        METADATA_URL, SERVICE_ACCOUNT)

    # Request an access token from the metadata server.
    r = requests.get(url, headers=METADATA_HEADERS)
    r.raise_for_status()

    # Extract the access token from the response.
    access_token = r.json()['access_token']

    return access_token

def list_buckets(project_id, access_token):
    url = 'https://www.googleapis.com/storage/v1/b'
    params = {
        'project': project_id
    }
    headers = {
        'Authorization': 'Bearer {}'.format(access_token)
    }

    r = requests.get(url, params=params, headers=headers)
    r.raise_for_status()

    return r.json()

def main(project_id):
    access_token = get_access_token()
    buckets = list_buckets(project_id, access_token)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud project ID.')

    args = parser.parse_args()

    main(args.project_id)

Les jetons d'accès expirent après une courte période. Le serveur de métadonnées met en cache les jetons d'accès jusqu'à ce qu'il reste 60 secondes avant leur expiration. Vous pouvez demander de nouveaux jetons aussi souvent que vous le souhaitez ; cependant, vos applications doivent disposer d'un jeton d'accès valide pour que leurs appels d'API aboutissent.

Outils d'authentification sur une instance utilisant un compte de service

Certaines applications peuvent utiliser des commandes des outils gcloud et gsutil, qui sont inclus par défaut dans la plupart des images de Compute Engine. Ces outils reconnaissent automatiquement le compte de service d'une instance et les autorisations correspondantes accordées au compte de service. En particulier, si vous attribuez les rôles corrects au compte de service, vous pouvez utiliser les outils gcloud et gsutil à partir de vos instances sans avoir à utiliser gcloud auth login.

Cette reconnaissance de compte de service est effectuée automatiquement et ne s'applique qu'aux outils gcloud et gsutil inclus dans l'instance. Si vous créez des outils ou ajoutez des outils personnalisés, vous devez autoriser votre application à l'aide d'une bibliothèque cliente ou en utilisant des jetons d'accès directement dans votre application.

Pour tirer parti de la reconnaissance automatique des comptes de service, accordez les rôles IAM appropriés au compte de service et configurez une instance à exécuter en tant que compte de service. Par exemple, si vous accordez le rôle roles/storage.objectAdmin à un compte de service, l'outil gsutil peut gérer et accéder automatiquement aux objets Google Cloud Storage.

De même, si vous activez le rôle roles/compute.instanceAdmin.v1 pour le compte de service, l'outil gcloud compute peut gérer automatiquement les instances.

Modifier le compte de service et les champs d'application d'accès d'une instance

Si vous souhaitez exécuter la VM en tant qu'identité différente ou si l'instance a besoin d'un ensemble de champs d'application différent pour appeler les API requises, vous pouvez modifier le compte de service et les champs d'application d'accès d'une instance existante. Par exemple, vous pouvez modifier les champs d'application pour accorder l'accès à une nouvelle API, ou modifier une instance de sorte qu'elle s'exécute non pas en tant que compte de service par défaut de Compute Engine, mais comme un compte de service que vous avez créé.

Pour modifier le compte de service et les champs d'application d'accès d'une instance, l'instance doit être temporairement arrêtée. Pour arrêter l'instance, consultez la section Arrêter une instance. Après avoir modifié le compte de service ou les champs d'application d'accès, n'oubliez pas de redémarrer l'instance. Utilisez l'une des méthodes suivantes pour modifier le compte de service ou les champs d'application d'accès de l'instance arrêtée.

Console

  1. Accédez à la page "Instances de VM" dans Compute Engine.

    Accéder à la page "Instances de VM"

  2. Cliquez sur l'instance de VM pour laquelle vous souhaitez modifier le compte de service.
  3. Si l'instance n'est pas arrêtée, cliquez sur le bouton Arrêter. Attendez que l'instance soit arrêtée.
  4. Cliquez ensuite sur le bouton Modifier.
  5. Faites défiler jusqu'à la section Compte de service.
  6. Dans le menu déroulant, sélectionnez le compte de service souhaité.
  7. Pour modifier les champs d'application, définissez les valeurs appropriées dans la section Champs d'application de l'accès. Il est recommandé de ne spécifier que les champs d'application d'accès requis par votre instance de VM. Si vous ne savez pas quels champs d'application d'accès définir, choisissez Autoriser l'accès complet à l'ensemble des API Cloud, puis assurez-vous de restreindre l'accès en définissant les rôles IAM.
  8. Cliquez sur le bouton Enregistrer pour enregistrer vos modifications.

gcloud

Utilisez la commande instances set-service-account et indiquez le nom de l'instance, l'adresse e-mail du compte de service et les champs d'applications souhaités. Vous pouvez également supprimer le compte de service et les champs d'application d'accès à partir d'une instance ; cela empêche ainsi l'instance d'accéder aux services Google Cloud Platform :

gcloud compute instances set-service-account [INSTANCE_NAME] \
   [--service-account [SERVICE_ACCOUNT_EMAIL] | --no-service-account] \
   [--no-scopes | --scopes [SCOPES,...]]

Où :

  • [SERVICE_ACCOUNT_EMAIL] correspond à l'adresse e-mail du compte de service que vous souhaitez utiliser. Par exemple : my-sa-123@my-project-123.iam.gserviceaccount.com.
  • [INSTANCE_NAME] est le nom de l'instance.
  • [SCOPES] correspond à une liste d'URI de champs d'application complets ou d'alias de champs d'application séparés par des virgules et fournis dans la description du paramètre --scopes. Si vous souhaitez supprimer tous les champs d'application de l'instance, utilisez plutôt le paramètre --no-scopes.

Par exemple, la commande suivante attribue le compte de service my-sa-123@my-project-123.iam.gserviceaccount.com à une instance appelée "example-instance" et définit les champs d'application d'accès sur cette instance. La commande autorise ainsi un accès en lecture/écriture à Compute Engine et un accès en lecture seule à Google Cloud Storage :

gcloud compute instances set-service-account example-instance \
   --service-account my-sa-123@my-project-123.iam.gserviceaccount.com \
   --scopes compute-rw,storage-ro

API

Dans l'API, envoyez une requête POST à la méthode setServiceAccount :

https://www.googleapis.com/compute/v1/projects[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setServiceAccount

Où :

  • [PROJECT_ID] correspond à l'ID de projet pour cette requête.
  • [ZONE] correspond à la zone où se trouve l'instance.
  • [INSTANCE_NAME] est le nom de l'instance.

Dans le corps de la requête, indiquez l'adresse e-mail du compte de service et les URI du champ d'application souhaités pour l'instance.

{
  "email": "[SERVICE_ACCOUNT_EMAIL]",
  "scopes": [
    "[SCOPE_URI]",
    "[SCOPE_URI]",
    ...
  ]
}

Par exemple, la requête suivante utilise l'adresse e-mail de compte de service my-sa-123@my-project-123.iam.gserviceaccount.com, et définit un champ d'application Google Cloud Storage et Google BigQuery :

{
  "email": "my-sa-123@my-project-123.iam.gserviceaccount.com",
  "scopes": [
    "https://www.googleapis.com/auth/bigquery",
    "https://www.googleapis.com/auth/devstorage.read_only"
  ]
}

Obtenir l'adresse e-mail d'un compte de service

Pour identifier un compte de service, vous devez disposer de l'adresse e-mail de ce dernier. Appliquez l'une des procédures suivantes pour obtenir l'adresse e-mail d'un compte de service :

Console

  1. Accédez à la page "Comptes de service" dans la console GCP.

    Accéder à la page "Comptes de service"

  2. Si vous y êtes invité, sélectionnez un projet. La page des comptes de service répertorie tous les comptes de service du projet et leurs adresses e-mail.

gcloud

Utilisez la commande gcloud compute instances describe à partir de votre machine locale :

gcloud compute instances describe [INSTANCE_NAME] --format json
{
      ...
      "serviceAccounts":[
         {
            "email":"123845678986-compute@developer.gserviceaccount.com",
            "scopes":[
               "https://www.googleapis.com/auth/devstorage.full_control"
            ]
         }
      ]
      ...
   }

Si l'instance n'utilise pas de compte de service, vous recevez une réponse sans la propriété serviceAccounts.

Serveur de métadonnées

Interrogez le serveur de métadonnées à partir de l'instance elle-même. Envoyez une requête à http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/ :

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \
-H "Metadata-Flavor: Google"

Si vous avez activé un ou plusieurs comptes de service lors de la création de l'instance, la commande curl renvoie une sortie semblable à la suivante :

123845678986-compute@developer.gserviceaccount.com/
default/

Si l'instance n'utilise pas de compte de service, vous recevez une réponse vide.

API

Envoyez une requête à l'API des comptes de service.

Utiliser le compte de service par défaut de Compute Engine

Si vous connaissez le compte de service par défaut de Compute Engine et que vous souhaitez utiliser ses identifiants au lieu de créer des comptes de service, vous pouvez accorder des rôles IAM au compte de service par défaut.

Par défaut, toutes les instances de Compute Engine peuvent être exécutées en tant que compte de service par défaut. Lorsque vous créez une instance à l'aide de l'outil de ligne de commande gcloud ou de la Console GCP et que vous ne définissez pas de spécification de compte de service, le compte de service par défaut est attribué à l'instance.

Avant d'attribuer des rôles IAM au compte de service par défaut, notez les points suivants :

  • L'attribution d'un rôle IAM au compte de service par défaut affecte toutes les instances exécutées en tant que compte de service par défaut. Par exemple, si vous accordez le rôle roles/storage.objectAdmin au compte de service par défaut, toutes les instances exécutées en tant que compte de service par défaut avec les champs d'application d'accès requis disposent des autorisations accordées par le rôle roles/storage.objectAdmin. De même, si vous limitez l'accès en omettant certains rôles, cela affecte toutes les instances exécutées en tant que compte de service par défaut.

  • Vous devez révoquer l'autorisation d'éditeur de projet pour le compte de service. Par défaut, le compte de service par défaut est ajouté aux projets en tant qu'éditeur de projet. Pour utiliser les rôles IAM, vous devez révoquer l'autorisation d'éditeur de projet.

Si vous n'êtes pas sûr de vouloir attribuer des rôles IAM au compte de service par défaut, vous devez créer un compte de service.

Suivez ces instructions pour accorder un rôle IAM au compte de service par défaut :

  1. Accédez à la page IAM dans la Console GCP.

    Accéder à la page IAM

  2. Si vous y êtes invité, sélectionnez un projet.
  3. Recherchez le compte de service nommé Compte de service Compute Engine par défaut.
  4. Dans la colonne Rôle(s), développez le menu déroulant "Compte de service Compute Engine par défaut".
  5. Supprimez l'accès d'éditeur et enregistrez vos modifications.
  6. Ensuite, accordez des rôles IAM au compte de service.

Toutes les instances de machine virtuelle en cours d'exécution en tant que compte de service par défaut ont désormais accès à d'autres API Google Cloud Platform, selon les rôles IAM que vous avez accordés au compte.

Si vous souhaitez configurer une nouvelle instance à exécuter en tant que compte de service par défaut, suivez ces instructions :

Console

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Sur la page Créer une instance, spécifiez les propriétés souhaitées pour votre instance.
  4. Dans la section Identité et accès à l'API, choisissez le Compte de service Compute Engine par défaut dans la liste déroulante.
  5. Cliquez sur Créer pour créer l'instance.

gcloud

Pour créer une instance et l'autoriser à accéder à tous les services Google Cloud Platform utilisant le compte de service par défaut :

gcloud compute instances create [INSTANCE_NAME] \
     --scopes cloud-platform

API

Dans l'API, définissez une requête normale pour créer une instance, mais incluez la propriété serviceAccounts. Obtenez l'ID de compte de service par défaut et incluez-le en tant que propriété email du compte de service. Ensuite, définissez un ou plusieurs champs d'application dans la propriété scopes.

POST https://www.googleapis.com/compute/v1/projects/zones/[ZONE]/instances

{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "name": "[INSTANCE_NAME]",
  "serviceAccounts": [
   {
    "email": "[DEFAULT_SERVICE_ACCOUNT_EMAIL]",
    "scopes": ["https://www.googleapis.com/auth/cloud-platform"]
   }
  ],
  ...
}

Bonnes pratiques

En général, Google recommande que chaque instance devant appeler une API Google s'exécute en tant que compte de service avec les autorisations minimales nécessaires pour que cette instance fonctionne selon vos attentes. En pratique, cela signifie que vous devez configurer les comptes de service de vos instances en procédant comme suit :

  1. Créez un compte de service plutôt que d'utiliser le compte de service Compute Engine par défaut.
  2. Accordez des rôles IAM à ce compte de service, pour les ressources dont il a besoin uniquement.
  3. Configurez l'instance à exécuter en tant que compte de service.
  4. Accordez le champ d'application https://www.googleapis.com/auth/cloud-platform à l'instance pour accorder un accès complet à toutes les API Google Cloud. Les autorisations IAM de l'instance sont ainsi entièrement déterminées par les rôles IAM du compte de service.

Évitez d'accorder un niveau d'accès plus élevé que nécessaire et vérifiez régulièrement les autorisations de votre compte de service pour vous assurer qu'elles sont à jour.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine