Autoriza solicitudes a Compute Engine

Si usas la API de Compute Engine para administrar tus recursos de Compute Engine, puedes obtener las credenciales de una cuenta de servicio de Compute Engine para autenticar tus aplicaciones en la API. Las cuentas de servicio permiten que la aplicación se autentique en la API sin incorporar ninguna clave secreta en el código de la aplicación.

Recomendamos las cuentas de servicio para la mayoría de las situaciones en las que la aplicación debe autorizar solicitudes a la API. Sin embargo, si compilas herramientas de desarrollo o administración en las que los usuarios te otorgan acceso a sus recursos de Google Cloud, usa un flujo de autorización de usuarios en su lugar.

Para obtener credenciales de una cuenta de servicio, usa una biblioteca cliente de Compute Engine y credenciales predeterminadas de la aplicación. Estos paquetes permiten que tu aplicación obtenga credenciales de una de varias fuentes disponibles, según dónde se ejecute la aplicación.

Aplicaciones que se ejecutan en instancias de Compute Engine

Si ejecutas aplicaciones en tus instancias de Compute Engine, las credenciales predeterminadas de la aplicación pueden obtener credenciales mediante cuentas de servicio integradas. Para obtener información sobre cómo configurar tus instancias con estas cuentas de servicio integradas y ejecutar tu aplicación en una instancia de Compute Engine, consulta Autentica aplicaciones directamente con tokens de acceso.

Aplicaciones que se ejecutan fuera de Google Cloud

Si ejecutas aplicaciones en sistemas fuera de Google Cloud, tus aplicaciones pueden usar credenciales predeterminadas de la aplicación para obtener credenciales de variables de entorno en esos sistemas. Para obtener información sobre cómo configurar las variables de entorno con las credenciales necesarias, consulta Autentícate como cuenta de servicio.

Aplicaciones que están en desarrollo

Mientras desarrollas tus aplicaciones de forma local, puedes usar el comando gcloud auth application-default login a fin de obtener credenciales de usuario de forma temporal para tu aplicación. Este comando ayuda a proporcionar credenciales de usuario cuando desarrollas un código que normalmente usaría una cuenta de servicio, pero debes ejecutarlo en un entorno de desarrollo local. Las credenciales se aplicarán a todas las llamadas a la API que usen la biblioteca cliente de credenciales predeterminadas de la aplicación.

  1. Instala la CLI de gcloud en tus sistemas de desarrollo.

  2. Proporciona tus credenciales a la herramienta mediante el comando gcloud auth application-default login.

La aplicación obtiene credenciales de la herramienta. Más adelante, puedes implementar la aplicación en instancias de Compute Engine en las que la aplicación obtiene automáticamente credenciales de las cuentas de servicio integradas o de otros sistemas con credenciales especificadas en sus variables de entorno.

Ejemplo: autenticación mediante 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 buckets en un proyecto. En el ejemplo, se usa el siguiente procedimiento:

  1. 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
  2. Enumera los depósitos en Cloud Storage.

Puedes ejecutar esta muestra en una instancia que tenga acceso para administrar buckets en Cloud Storage, en tu máquina local después de ejecutar el comando gcloud beta auth application-default login o después de la configuración de una variable de entorno para usar las credenciales predeterminadas de la aplicación.


import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Obtén acceso a los recursos de Google Cloud que pertenecen a los usuarios de tu aplicación

Si compilas herramientas de desarrollo o administración en las que los usuarios te otorgan acceso a sus recursos de Google Cloud, obtén autorización a través de un proceso básico de OAuth 2.0. Este proceso requiere que tus usuarios te otorguen acceso a su información a través de un flujo de autorización de usuarios. Una vez que la aplicación tiene acceso, puede ver o modificar los recursos de Compute Engine en el proyecto de cada usuario.

En la solicitud, especifica un permiso de acceso que limite el acceso solo a los métodos y la información del usuario que requiere la aplicación. Por ejemplo, especifica el permiso compute.readonly cuando tu aplicación vea los recursos existentes de Compute Engine, pero no cree ni modifique ningún recurso para tus usuarios.

Compute Engine proporciona los siguientes alcances:

Permiso Significado
https://www.googleapis.com/auth/compute Acceso de lectura/escritura a los métodos de Compute Engine.
https://www.googleapis.com/auth/compute.readonly Acceso de solo lectura a los métodos de Compute Engine.
https://www.googleapis.com/auth/cloud-platform Visualiza y administra tus datos en la mayoría de los servicios de Google Cloud en el proyecto de Google Cloud especificado.

Si deseas obtener una lista completa de servicios y alcances obligatorios en Google Cloud, consulta Alcances de OAuth 2.0 para las APIs de Google.