Autenticación para Terraform

En este documento, se describe cómo autenticarse en Google Cloud cuando se usa Terraform.

Las credenciales predeterminadas de la aplicación (ADC) son la forma recomendada de autenticarse en Google Cloud cuando se usa Terraform. ADC es una estrategia que usan las bibliotecas de autenticación para encontrar credenciales automáticamente según el entorno de la aplicación. Cuando usas ADC, Terraform puede ejecutarse en un entorno de producción o de desarrollo sin cambiar la forma en que se autentica en los servicios y las APIs de Google Cloud. Para obtener información sobre dónde ADC busca credenciales y en qué orden, consulta Cómo funcionan las credenciales predeterminadas de la aplicación.

Autentica cuando usas Terraform en un entorno de desarrollo local

Cuando usas Terraform en un entorno de desarrollo local, como una estación de trabajo de desarrollo, puedes autenticarte con las credenciales asociadas con tu cuenta de usuario o servicio..

Autentica con una Cuenta de Google

Para configurar ADC con una Cuenta de Google, usa Google Cloud CLI:

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

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    Aparecerá una pantalla de acceso. Después de acceder, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.

Autentica con una cuenta externa

Si deseas configurar ADC para una cuenta de usuario administrada por un proveedor de identidad externo, haz lo siguiente:

  1. Configura la federación de identidades de personal

  2. Configura gcloud CLI para usar la federación de identidades de personal.

  3. Configura ADC mediante la ejecución del siguiente comando:

    gcloud auth application-default login

    Aparecerá una pantalla de acceso. Después de acceder, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.

Autentica con identidad temporal como cuenta de servicio

Puedes usar la identidad temporal como cuenta de servicio para configurar un archivo ADC local. Terraform las usa automáticamente.

  1. Asegúrate de tener el rol de IAM de creador de tokens de cuentas de servicio (roles/iam.serviceAccountTokenCreator) en la cuenta de servicio que suplantas. Para obtener más información, consulta los Roles requeridos.

  2. Usa la identidad temporal como cuenta de servicio para crear un archivo de ADC local mediante la ejecución del siguiente comando:

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

Si deseas permitir que los usuarios usen una fuente de autenticación principal compartida y una cuenta de servicio variable por entorno, establece el campo impersonate_service_account en tu archivo de configuración de Terraform:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Autentica cuando ejecutas Terraform en Google Cloud

Cuando ejecutas Terraform en un entorno de desarrollo basado en la nube de Google Cloud, como Cloud Shell, la herramienta usa las credenciales que proporcionaste cuando accediste para la autenticación.

Cuando usas Terraform con servicios de Google Cloud, como Compute Engine, App Engine y las funciones de Cloud Run, puedes conectar una cuenta de servicio administrada por el usuario a los recursos. Por lo general, se admite la conexión de una cuenta de servicio cuando los recursos de ese servicio pueden ejecutarse o incluir el código de la aplicación. Cuando conectas una cuenta de servicio a un recurso, el código que se ejecuta en el recurso puede usar esa cuenta de servicio como su identidad.

Es preferible conectar una cuenta de servicio administrada por el usuario a fin de proporcionar credenciales a las ADC para el código de producción que se ejecuta en Google Cloud.

Para obtener ayuda sobre cómo determinar los roles que debes proporcionar a tu cuenta de servicio, consulta Elige roles predefinidos.

Para obtener información sobre los recursos a los que puedes conectar una cuenta de servicio y ayudar a conectar la cuenta de servicio al recurso, consulta la documentación de IAM sobre cómo conectar una cuenta de servicio.

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.iam.gserviceaccount.com" --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.iam.gserviceaccount.com --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

Autentica cuando ejecutas Terraform de forma local o en un proveedor de servicios en la nube diferente

Si ejecutas tu aplicación fuera de Google Cloud, debes proporcionar credenciales que Google Cloud reconozca para usar los servicios de Google Cloud.

Autentica mediante la federación de Workload Identity

La forma preferida de autenticarse con Google Cloud mediante credenciales de un IdP externo es usar la federación de Workload Identity. Puedes crear un archivo de configuración de credenciales y establecer la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para que apunte a él. Este enfoque es más seguro que crear una clave de cuenta de servicio. Si deseas obtener instrucciones para configurar la federación de Workload Identity para ADC, consulta Federación de Workload Identity con otras nubes.

Autentica con claves de cuenta de servicio

Cuando ejecutas Terraform en un entorno de desarrollo local, in situ o en un proveedor de servicios en la nube diferente, puedes crear una cuenta de servicio, otorgarle los roles de IAM que requiere tu aplicación y crear una clave para la extensión para la cuenta de servicio.

A fin de crear una clave de cuenta de servicio y hacer que esté disponible para las ADC, haz lo siguiente:

  1. Para crear una cuenta de servicio con los roles que necesita tu aplicación y una clave para esa cuenta de servicio, sigue las instrucciones en Crea una clave de cuenta de servicio.

    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.

Autentica en backends de Cloud Storage

Terraform te permite configurar Cloud Storage como un backend para almacenar archivos de estado de Terraform. Para autenticarte en un backend de Cloud Storage, usa cualquiera de los métodos descritos en esta página. Para obtener información sobre las variables de configuración relacionadas con la autenticación de los backends de Cloud Storage, consulta la página de backends de Terraform para Cloud Storage.

¿Qué sigue?