Autoriser des requêtes pour Compute Engine

Si vous utilisez l'API Compute Engine pour gérer vos ressources Compute Engine, vous pouvez authentifier vos applications sur l'API en obtenant des identifiants depuis un compte de service Compute Engine. Les comptes de service permettent à votre application de s'authentifier auprès de l'API sans intégrer de clé secrète dans son code.

Les comptes de service sont recommandés dans la plupart des situations où votre application doit autoriser les requêtes à l'API. Toutefois, si vous créez des outils de développement ou d'administration dans lesquels les utilisateurs vous accordent l'accès à leurs ressources Google Cloud, utilisez plutôt un flux d'autorisations utilisateur.

Pour obtenir des identifiants à partir d'un compte de service, utilisez une bibliothèque cliente Compute Engine et les identifiants par défaut de l'application. Ces packages permettent à votre application d'obtenir des identifiants de l'une des nombreuses sources disponibles, en fonction de l'environnement d'exécution de l'application.

Applications exécutées sur des instances Compute Engine

Si vous exécutez des applications sur vos instances Compute Engine, les identifiants par défaut de l'application peuvent vous permettre d'obtenir des identifiants via des comptes de service intégrés. Pour savoir comment configurer vos instances avec ces comptes de service intégrés et exécuter votre application sur une instance Compute Engine, consultez Authentifier des applications directement avec des jetons d'accès.

Applications s'exécutant en dehors de Google Cloud

Si vous exécutez des applications sur des systèmes en dehors de Google Cloud, celles-ci peuvent utiliser les identifiants par défaut de l'application afin d'obtenir des identifiants à partir des variables d'environnement de ces systèmes. Pour en savoir plus sur la configuration de vos variables d'environnement avec les identifiants nécessaires, consultez Authentification en tant que compte de service.

Applications en cours de développement

Pendant que vous développez vos applications en local, vous pouvez utiliser la commande gcloud auth application-default login afin d'obtenir des identifiants utilisateur temporaires pour votre application. Cette commande permet de spécifier des identifiants utilisateur lorsque vous développez du code qui utiliserait normalement un compte de service, mais que vous devez exécuter le code dans un environnement de développement local. Les identifiants s'appliqueront à tous les appels d'API utilisant la bibliothèque cliente des identifiants par défaut de l'application.

  1. Installez gcloud CLI sur vos systèmes de développement.

  2. Spécifiez vos identifiants dans l'outil à l'aide de la commande gcloud auth application-default login.

L'application obtient alors les identifiants de l'outil. Vous pouvez ensuite déployer votre application sur des instances Compute Engine, dans lesquelles elle va obtenir automatiquement les identifiants des comptes de service intégrés. Vous pouvez également déployer votre application sur d'autres systèmes pour lesquels les identifiants sont spécifiés dans leurs variables d'environnement.

Exemple : s'authentifier à l'aide des identifiants par défaut de l'application

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 Cloud Storage, sur votre ordinateur local après l'exécution de la commande gcloud beta auth application-default login ou après la définition d'une variable d'environnement pour qu'elle utilise les identifiants par défaut de l'application.


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)

Obtenir l'accès aux ressources Google Cloud appartenant aux utilisateurs de votre application

Si vous créez des outils de développement ou d'administration dans lesquels les utilisateurs vous accordent l'accès à leurs ressources Google Cloud, obtenez une autorisation via un processus OAuth 2.0 de base. Pour que vous puissiez utiliser ce processus, vos utilisateurs doivent vous accorder l'accès à leurs informations via un flux d'autorisations utilisateur. Une fois l'accès accordé pour votre application, celle-ci peut afficher ou modifier les ressources Compute Engine dans le projet de chaque utilisateur.

Dans votre requête, spécifiez un champ d'application d'accès qui limite votre accès aux seules méthodes et informations utilisateur requises par votre application. Par exemple, spécifiez le champ d'application compute.readonly si votre application est censée afficher les ressources Compute Engine existantes, mais qu'elle ne crée ni ne modifie aucune ressource pour vos utilisateurs.

Compute Engine propose les champs d'application suivants :

Niveau d'accès Signification
https://www.googleapis.com/auth/compute Accès en lecture-écriture aux méthodes Google Compute Engine.
https://www.googleapis.com/auth/compute.readonly Accès en lecture seule aux méthodes Compute Engine.
https://www.googleapis.com/auth/cloud-platform Affichage et gestion des données sur la plupart des services Google Cloud du projet Google Cloud spécifié.

Pour obtenir la liste complète des services et des champs d'application requis pour l'ensemble de Google Cloud, consultez la page Champs d'application OAuth 2.0 pour les API Google.