Autenticación para Terraform

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

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

Autenticarse al usar 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 a tu cuenta de usuario o a tu cuenta de servicio.

Autenticar con una cuenta de usuario

Para configurar ADC con una cuenta de usuario, usa la CLI de Google Cloud:

  1. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  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.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Aparecerá una pantalla de inicio de sesión. Después de iniciar sesión, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.

Autenticar con la suplantación de identidad de una cuenta de servicio

Puedes usar la suplantación de identidad de la cuenta de servicio para configurar un archivo ADC local. Terraform usa esas credenciales automáticamente.

  1. Debes tener el rol de gestión de identidades y accesos Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en la cuenta de servicio que estés suplantando. Para obtener más información, consulta Roles obligatorios.

  2. Usa la suplantación de identidad de la cuenta de servicio para crear un archivo ADC local ejecutando el siguiente comando:

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

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

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Autenticar al ejecutar Terraform en Google Cloud

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

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

Asociar una cuenta de servicio gestionada por el usuario es la forma preferida de proporcionar credenciales a ADC para el código de producción que se ejecuta en Google Cloud.

Para obtener ayuda a la hora de determinar los roles que debe proporcionar a su cuenta de servicio, consulte Elegir roles predefinidos.

Para obtener información sobre los recursos a los que puedes adjuntar una cuenta de servicio y ayuda para adjuntarla, consulta la documentación de gestión de identidades y accesos sobre cómo adjuntar una cuenta de servicio.

Set up authentication:

  1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
  2. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  3. 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
  4. To grant another role to the service account, run the command as you did in the previous step.
  5. 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

Autenticarse al ejecutar Terraform on-premise o en otro proveedor de servicios en la nube

Si ejecutas tu aplicación fuera de Google Cloud, debes proporcionar credenciales reconocidas por Google Cloud para usar los servicios deGoogle Cloud .

Autenticarse mediante la federación de identidades de cargas de trabajo

La forma preferida de autenticarte en Google Cloud con credenciales de un IdP externo es usar Federación de identidades de carga de trabajo. Puedes crear un archivo de configuración de credenciales y definir la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para que apunte a él. Este método es más seguro que crear una clave de cuenta de servicio. Para obtener instrucciones sobre cómo configurar la federación de identidades de cargas de trabajo para ADC, consulta Federación de identidades de cargas de trabajo con otras nubes.

Autenticarse mediante claves de cuentas de servicio

Cuando ejecutas Terraform en un entorno de desarrollo local, en las instalaciones o en otro proveedor de servicios en la nube, puedes crear una cuenta de servicio, concederle los roles de IAM que necesite tu aplicación y crear una clave para la cuenta de servicio.

Para crear una clave de cuenta de servicio y que esté disponible para ADC, sigue estos pasos:

  1. Crea una cuenta de servicio con los roles que necesite tu aplicación y una clave para esa cuenta de servicio. Para ello, sigue las instrucciones que se indican en el artículo Crear 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.

Autenticar en back-ends de Cloud Storage

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

Siguientes pasos