Authentification pour Terraform

Ce document explique comment s'authentifier auprès de Google Cloud lorsque vous utilisez Terraform.

Identifiants par défaut de l'application (ADC) sont la méthode recommandée pour s'authentifier auprès deGoogle Cloud lorsque vous utilisez Terraform. ADC est une stratégie utilisée par les bibliothèques d'authentification pour rechercher automatiquement des identifiants en fonction de l'environnement d'application. Lorsque vous utilisez ADC, Terraform peut s'exécuter dans un environnement de développement ou bien de production, sans modifier la manière dont il s'authentifie auprès des API et servicesGoogle Cloud . Pour en savoir plus sur l'emplacement des ADC (Identifiants par défaut de l'application) et l'ordre dans lequel ils sont consultés, consultez la section Fonctionnement des identifiants par défaut de l'application.

S'authentifier lorsque vous utilisez Terraform dans un environnement de développement local

Lorsque vous utilisez Terraform dans un environnement de développement local (par exemple, un poste de travail de développement), vous pouvez vous authentifier à l'aide des identifiants associés à votre compte utilisateur ou à votre compte de service.

S'authentifier avec un compte utilisateur

Pour configurer ADC avec un compte utilisateur, vous utilisez Google Cloud CLI :

  1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

    gcloud init

    Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  2. Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :

    gcloud auth application-default login

    Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.

    Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.

    Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC.

S'authentifier avec l'emprunt d'identité d'un compte de service

Vous pouvez utiliser l'emprunt d'identité d'un compte de service pour configurer un fichier ADC local. Terraform utilise automatiquement ces identifiants.

  1. Assurez-vous de disposer du rôle IAM "Créateur de jetons du compte de service" (roles/iam.serviceAccountTokenCreator) sur le compte de service que vous empruntez. Pour en savoir plus, consultez la section Rôles requis.

  2. Utilisez l'emprunt d'identité d'un compte de service pour créer un fichier ADC local en exécutant la commande suivante :

    gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
    

Si vous souhaitez autoriser les utilisateurs à utiliser une source d'authentification principale partagée et un compte de service variable par environnement, définissez le champ impersonate_service_account dans votre fichier de configuration Terraform :

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

S'authentifier lorsque vous exécutez Terraform sur Google Cloud

Lorsque vous exécutez Terraform sur un environnement de développement basé sur le cloud Google Cloud , tel que Cloud Shell, l'outil utilise les identifiants que vous avez fournis lors de votre connexion pour l'authentification.

Lorsque vous utilisez Terraform avec des services Google Cloud tels que Compute Engine, App Engine et les fonctions Cloud Run, vous pouvez associer un compte de service géré par l'utilisateur à des ressources. En règle générale, l'association d'un compte de service est acceptée lorsque les ressources de ce service peuvent exécuter ou inclure un code d'application. Lorsque vous associez un compte de service à une ressource, le code exécuté sur la ressource peut utiliser ce compte de service comme identité.

Associer un compte de service géré par l'utilisateur est la méthode privilégiée pour fournir des identifiants à ADC pour le code de production exécuté sur Google Cloud.

Pour déterminer le rôle que vous devez attribuer à votre compte de service, consultez la section Choisir des rôles prédéfinis.

Pour en savoir plus sur les ressources auxquelles vous pouvez associer un compte de service et sur l'association de ce compte de service, consultez la documentation IAM sur l'association d'un compte de service.

Configurez l'authentification :

  1. Assurez-vous de disposer des rôles IAM "Créateur de compte de service" (roles/iam.serviceAccountCreator) et "Administrateur IAM du projet" (roles/resourcemanager.projectIamAdmin). Découvrez comment attribuer des rôles.
  2. Créez le compte de service :

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner au compte de service.

  3. Pour accorder l'accès à votre projet et à vos ressources, attribuez un rôle au compte de service :

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service.
    • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
    • ROLE : rôle à accorder
  4. Pour attribuer un autre rôle au compte de service, exécutez la commande comme vous l'avez fait à l'étape précédente.
  5. Attribuez le rôle requis au compte principal qui associera le compte de service à d'autres ressources.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service.
    • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
    • USER_EMAIL : adresse e-mail d'un compte Google

S'authentifier lorsque vous exécutez Terraform sur site ou auprès d'un autre fournisseur de services cloud

Si vous exécutez votre application en dehors de Google Cloud, vous devez fournir des identifiants reconnus par Google Cloud pour utiliser les servicesGoogle Cloud .

S'authentifier à l'aide de la fédération d'identité de charge de travail

Le meilleur moyen de gérer l'authentification auprès de Google Cloud à l'aide des identifiants d'un IdP externe est d'utiliser la fédération d'identité de charge de travail. Vous pouvez créer un fichier de configuration des identifiants et définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle pointe vers celui-ci. Cette approche est plus sécurisée que la création d'une clé de compte de service. Pour obtenir des instructions sur la configuration de la fédération d'identité de charge de travail pour ADC, consultez la page Fédération d'identité de charge de travail avec d'autres clouds.

S'authentifier à l'aide de clés de compte de service

Lorsque vous exécutez Terraform dans un environnement de développement local, sur site ou auprès d'un autre fournisseur de services cloud, vous pouvez créer un compte de service, lui attribuer les rôles IAM requis par votre application et créer une clé pour ce compte.

Pour créer une clé de compte de service et la rendre disponible pour les ADC, procédez comme suit :

  1. Créez un compte de service avec les rôles dont votre application a besoin, ainsi qu'une clé pour ce compte de service, en suivant les instructions de la section Créer une clé de compte de service.

S'authentifier auprès des backends Cloud Storage

Terraform vous permet de configurer Cloud Storage en tant que backend pour stocker les fichiers d'état Terraform. Pour vous authentifier auprès d'un backend Cloud Storage, utilisez l'une des méthodes décrites sur cette page. Pour en savoir plus sur les variables de configuration liées à l'authentification pour les backends Cloud Storage, consultez la page Backends Terraform pour Cloud Storage.

Étapes suivantes