es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mensaje de error de Terragrunt al intentar suplantar la cuenta

Estoy configurando Terragrunt en nuestro proyecto para poder planificar y aplicar múltiples módulos al mismo tiempo. Estamos en GCP. Terraform utiliza una cuenta de servicio dedicada a nuestra CI/CD (una por entorno) que se hará pasar por otra cuenta de servicio que tiene los derechos para acceder y administrar los recursos en nuestro entorno.

Para hacer eso, configuré dos variables de entorno:

  • GOOGLE_APPLICATION_CREDENTIALS -> enlace al archivo JSON que contiene las credenciales de la primera cuenta de servicio.
  • GOOGLE_IMPERSONATE_SERVICE_ACCOUNT -> correo electrónico de la cuenta de servicio a hacerse pasar.

Esta configuración funciona correctamente con Terraform. Sin embargo, al intentar inicializar Terragrunt (terragrunt init), Terragrunt intenta acceder a la ubicación del backend (recipiente donde se encuentra el archivo de estado) con la cuenta GOOGLE_APPLICATION_CREDENTIALS (que no tiene permisos para acceder al recipiente), ignorando la variable de entorno GOOGLE_IMPERSONATE_SERVICE_ACCOUNT. Para solucionar eso, especifiqué el argumento impersonate_service_account.

Este es mi archivo terragrunt.hcl:

remote_state {
  backend = "gcs"
  generate = {
    path = "backend.tf"
    if_exists = "overwrite"
  }
  config = {
    skip_bucket_creation = true
    bucket = "mi recipiente"
    prefix = "prefijo de estado"
    impersonate_service_account = "correo electrónico de mi cuenta de servicio"
  }
}

Ahora estoy obteniendo otro mensaje de error, en la línea de: “Impersonate: código de estado 403, la solicitud tenía ámbitos de autenticación insuficientes, motivo: ACCESS_TOKEN_SCOPE_INSUFFICIENT, dominio: googleapis.com”.

Nunca tuve problemas al hacerme pasar por otra cuenta con Terraform, utilizando las mismas cuentas y credenciales. ¿Es esto un límite de Terragrunt o una mala configuración por mi parte?

Gracias por tu ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que el mensaje de error que indica “La solicitud tenía ámbitos de autenticación insuficientes” se deba a una incorrecta configuración en el valor de impersonate_service_account. Verifique que el correo electrónico especificado sea correcto y tenga los permisos necesarios. Además, puede ser necesario agregar ámbitos adicionales para que la segunda cuenta de servicio pueda acceder al backend. Esto se puede hacer especificando el argumento scopes en el bloque config de la configuración de remote_state en el archivo terragrunt.hcl. Ejemplo:

    remote_state {
      backend = "gcs"
      generate = {
        path = "backend.tf"
        if_exists = "overwrite"
      }
      config = {
        skip_bucket_creation = true
        bucket = "mi cubeta"
        prefix = "prefijo de estado"
        impersonate_service_account = "correo de mi cuenta de servicio"
        scopes = ["https://www.googleapis.com/auth/devstorage.full_control"]
      }
    }
    

    En este ejemplo, el argumento scopes agrega el ámbito devstorage.full_control a la segunda cuenta de servicio. Reemplácelo con el ámbito adecuado para su caso de uso.

    Si el problema persiste, puede ser necesario verificar los registros para obtener más información sobre los ámbitos que faltan en la cuenta de servicio y ajustarlos en consecuencia.

Comments are closed.