Authentification pour Terraform

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

Les identifiants par défaut de l'application (ADC) sont la méthode recommandée pour s'authentifier auprès de Google 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 services Google 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 Google

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

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. Create local authentication credentials for your user account:

    gcloud auth application-default login

    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 un compte externe

Pour configurer les identifiants par défaut de l'application pour un compte utilisateur géré par un fournisseur d'identité externe, procédez comme suit :

  1. Configurer la fédération des identités des employés

  2. Configurez la gcloud CLI pour utiliser la fédération des identités des employés.

  3. Configurez ADC en exécutant la commande suivante :

    gcloud auth application-default login

    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 au code de production ADC 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.

Set up authentication:

  1. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  2. To provide access to your project and your resources, grant a role to the service account:

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

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • ROLE: the role to grant
  3. To grant another role to the service account, run the command as you did in the previous step.
  4. Grant the required role to the principal that will attach the service account to other resources.

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

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • USER_EMAIL: the email address for a Google Account

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 services Google 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.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

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.

Étape suivante