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 enGoogle 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 desarrollo o de producción sin cambiar la forma en que se autentica en los servicios y las APIs deGoogle 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.
Autenticación cuando se usa 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 cuenta de servicio.
Autentica con una cuenta de usuario
Para configurar ADC con una cuenta de usuario, usa Google Cloud CLI:
-
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.
-
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 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.
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.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 quieres permitir que los usuarios usen una fuente de autenticación principal compartida y una cuenta de servicio variable por entorno, configura el campo impersonate_service_account
en tu archivo de configuración de Terraform:
provider "google" {
impersonate_service_account = "SERVICE_ACCT_EMAIL"
}
Autenticación cuando se ejecuta Terraform en Google Cloud
Cuando ejecutas Terraform en un Google Cloud entorno de desarrollo basado en la nube, como Cloud Shell, la herramienta usa las credenciales que proporcionaste cuando accediste para la autenticación.
Cuando usas Terraform con Google Cloud servicios como Compute Engine, App Engine y Cloud Run Functions, 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:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
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 accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
Autenticación cuando se ejecuta 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 deGoogle Cloud .
Autentica mediante la federación de Workload Identity
La forma preferida de autenticarse con Google Cloud usando credenciales de un IdP externo es usar la federación de identidades para cargas de trabajo. 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. Para obtener instrucciones sobre cómo configurar la federación de identidades para cargas de trabajo para ADC, consulta Federación de identidades para cargas de trabajo 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:
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 que se describen en esta página. Para obtener información sobre las variables de configuración relacionadas con la autenticación para los backends de Cloud Storage, consulta la página de backends de Terraform para Cloud Storage.
¿Qué sigue?
- Revisa la guía de inicio rápido de Terraform para Google Cloud
- Obtén información sobre los comandos básicos de Terraform.