En esta página, se describe cómo usar las cuentas de servicio para habilitar las apps que se ejecutan en tus instancias de máquina virtual (VM) para autenticarte en las APIs de Google Cloud y autorizar el acceso a los recursos.
Si quieres usar cuentas de servicio para la autenticación, primero debes asegurarte de que tu VM esté configurada para usar una cuenta de servicio. Para ello, completa uno de los siguientes procedimientos:
- Para configurar la cuenta de servicio durante la creación de la VM, consulta Crea una VM que use una cuenta de servicio administrada por el usuario.
- Para configurar una cuenta de servicio en una VM existente, consulta Cambia la cuenta de servicio conectada.
Antes de comenzar
- Revisa la Descripción general de las cuentas de servicio.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Para obtener más información, consulta Set up authentication for a local development environment.
Descripción general
Después de configurar una instancia de VM para que se ejecute con una cuenta de servicio, una aplicación que se ejecuta en la instancia de VM puede usar uno de los siguientes métodos de autenticación:
- Para la mayoría de las aplicaciones, elige una de las siguientes opciones:
- Para las aplicaciones que requieren un token de acceso de OAuth2, solicita y usa tokens de acceso directamente desde el servidor de metadatos.
Autentica aplicaciones mediante credenciales de cuenta de servicio
Después de configurar una instancia con el fin de que se ejecute como una cuenta de servicio, puedes usar las credenciales de la cuenta de servicio para autenticar las aplicaciones que se ejecutan en la instancia.
Autentica aplicaciones con una biblioteca cliente
Las bibliotecas cliente pueden usar las credenciales predeterminadas de la aplicación para autenticarse con las API de Google y enviar solicitudes a esas API. Las credenciales predeterminadas de la aplicación permiten que las aplicaciones obtengan de forma automática credenciales de múltiples fuentes para que puedas probar tu aplicación de forma local y, luego, implementarla en una instancia de Compute Engine sin cambiar el código de la aplicación.
Para obtener información sobre la configuración de las credenciales predeterminadas de la aplicación, consulta Proporciona credenciales para las credenciales predeterminadas de la aplicación.
En este ejemplo, se usa la biblioteca cliente de Python para autenticar y realizar una solicitud a la API de Cloud Storage con el fin de generar una lista de los depósitos en un proyecto. En el ejemplo, se usa el siguiente procedimiento:
- Obtener las credenciales de autenticación necesarias para la API de Cloud Storage y, a continuación, inicializar el servicio de Cloud Storage con el método
build()
y las credenciales - Enumerar los depósitos en Cloud Storage
Puedes ejecutar este ejemplo en una instancia que tenga acceso para administrar depósitos en Cloud Storage.
.Autentica aplicaciones directamente con tokens de acceso
Para la mayoría de las aplicaciones, puedes autenticarte con las credenciales predeterminadas de la aplicación, que encuentra las credenciales y administra los tokens por ti. Sin embargo, si la aplicación requiere que proporciones un token de acceso de OAuth2, Compute Engine te permite obtener un token de acceso del servidor de metadatos para usarlo en la aplicación.
Hay varias opciones para obtener y usar estos tokens de acceso con el objetivo de autenticar tus aplicaciones. Por ejemplo, puedes usar curl
para crear una solicitud simple o usar un lenguaje de programación, como Python, para lograr una mayor flexibilidad.
cURL
Para usar curl
con el fin de solicitar un token de acceso y enviar una solicitud a una API, sigue estos pasos:
En la instancia donde se ejecuta tu aplicación, usa el siguiente comando para realizar una consulta al servidor de metadatos con el fin de obtener un token de acceso:
$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google"
La solicitud muestra una respuesta similar a la siguiente:
{ "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA", "expires_in":3599, "token_type":"Bearer" }
Para las solicitudes a la API, debes incluir el valor
access_token
, no toda la respuesta. Si tienes instalado el procesador JSON de la línea de comandos de jq, puedes usar el siguiente comando para extraer el valor del token de acceso de la respuesta:$ ACCESS_TOKEN=`curl \ "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ -H "Metadata-Flavor: Google" | jq -r '.access_token'`
Copia el valor de la propiedad
access_token
de la respuesta y úsalo para enviar solicitudes a la API. Por ejemplo, la siguiente solicitud imprime una lista de instancias de tu proyecto desde una zona determinada:$ curl https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances \ -H "Authorization":"Bearer ACCESS_TOKEN"
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de esta solicitud.ZONE
: la zona desde la cual se enumeran las VMs.ACCESS_TOKEN
: el valor del token de acceso que obtuviste en el paso anterior.
Para obtener información sobre los parámetros que puedes configurar en tu solicitud, consulta el documento de los parámetros del sistema.
Python
En este ejemplo, se muestra cómo solicitar un token para acceder a la API de Cloud Storage en una aplicación de Python. En el ejemplo, se usa el siguiente procedimiento:
- Solicitar un token de acceso al servidor de metadatos
- Extrae el token de acceso de la respuesta del servidor.
- Usa el token de acceso para realizar una solicitud a Cloud Storage.
- Si la solicitud es exitosa, la secuencia de comandos imprime la respuesta
Los tokens de acceso vencen después de un período corto. El servidor de metadatos almacena en caché los tokens de acceso hasta que queden 5 minutos de tiempo restante antes de que venzan. Si los tokens no se pueden almacenar en caché, es posible que se limite la frecuencia de las solicitudes que superen las 50 consultas por segundo. Tus aplicaciones deben tener un token de acceso válido para que sus llamadas a la API tengan éxito.
Autentica herramientas en una instancia mediante una cuenta de servicio
Algunas aplicaciones pueden usar comandos de gcloud CLI que está incluido de forma predeterminada en la mayoría de las imágenes de Compute Engine. gcloud CLI reconoce de forma automática la cuenta de servicio de una instancia y los permisos relevantes otorgados a la cuenta de servicio. De manera específica, si otorgas los roles correctos a la cuenta de servicio, podrás usar gcloud CLI desde de tus instancias sin necesidad de emplear gcloud auth login
.
Este reconocimiento de cuenta de servicio se realiza automáticamente y se aplica solo a gcloud CLI que se incluye con la instancia. Si creas herramientas nuevas o agregas herramientas personalizadas, debes autorizar tu aplicación mediante una biblioteca cliente o mediante tokens de acceso directamente en tu aplicación.
Para aprovechar el reconocimiento automático de la cuenta de servicio, otorga los roles de IAM adecuados a esa cuenta y conecta la cuenta de servicio a la instancia.
Por ejemplo, si otorgas el rol roles/storage.objectAdmin
a una cuenta de servicio, gcloud CLI puede administrar y acceder automáticamente a los objetos de Cloud Storage.
Del mismo modo, si habilitas roles/compute.instanceAdmin.v1
en la cuenta de servicio, la herramienta de gcloud compute
podrá administrar las instancias de forma automática.
¿Qué sigue?
- Autentica cargas de trabajo en otras cargas de trabajo a través de mTLS.
- Obtén más información sobre cuentas de servicio.
- Obtén más información sobre los roles y permisos de IAM de Compute Engine.
- Obtén más información sobre las prácticas recomendadas para trabajar con cuentas de servicio.
Pruébalo tú mismo
Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de Compute Engine en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
Probar Compute Engine gratis