Configura el control de acceso

El control de acceso determina quién tiene permiso para acceder a los servicios y recursos en un proyecto de Google Cloud . En App Engine, existen varios casos de uso diferentes para configurar el control de acceso:

  • Otorga a los miembros del equipo acceso a tu proyecto de Google Cloud para que puedan configurar servicios e implementar apps.

  • Otorga a la app acceso a servicios de Google Cloud, como Cloud Storage. Todos los servicios de Cloud requieren autenticación y autorización para cada llamada a la API, incluidas las llamadas que se originan en tu app de App Engine.

  • Otorgarles a los usuarios acceso a recursos de un proyecto de Google Cloud Si bien este caso de uso no es común, puede haber situaciones en las que la app necesite solicitar acceso a un recurso de Cloud en nombre de un usuario. Por ejemplo, es posible que tu app necesite acceder a datos que pertenecen a los usuarios.

En esta página, se proporciona una descripción general de la configuración del control de acceso en cada caso de uso.

Para obtener información general sobre cómo Google Cloud Platform maneja el control de acceso, consulta la Descripción general de la administración de identidades y accesos (IAM).

Otorga acceso a los miembros de tu equipo

Para otorgar acceso a un desarrollador a tu proyecto de Google Cloud , crea uno de estos elementos o ambos:

  • Una cuenta de usuario asociada con una Cuenta de Google, cuyo propósito es representar a una persona específica en tu proyecto

    Se puede usar una cuenta de usuario para autenticar desde las siguientes herramientas:

    • Google Cloud console
    • Google Cloud CLI
    • IDE y herramientas de compilación que usan gcloud CLI para implementar y probar apps de App Engine
  • Una cuenta de servicio, cuyo propósito no es representar a una persona sino a una aplicación o un proceso. Usa cuentas de servicio en tus procesos automatizados de compilación, de prueba y de implementación, especialmente si varios desarrolladores pueden ejecutar estos procesos.

    Se puede usar una cuenta de servicio para autenticar desde las siguientes herramientas:

    • gcloud CLI
    • IDE y herramientas de compilación que usan herramientas de gcloud CLI para implementar y probar apps de App Engine

Crea una cuenta de usuario

  1. Abre la página IAM en la consola de Google Cloud .

    Abrir la página IAM

  2. Haz clic en Seleccionar un proyecto, elige un proyecto y haz clic en Abrir.

  3. Haz clic en Agregar.

  4. Ingresa una dirección de correo electrónico.

  5. Selecciona funciones que otorguen acceso a las características de App Engine.

    Si el usuario también necesita acceder a otros servicios de Cloud, selecciona funciones que otorguen acceso a otros servicios de Cloud.

  6. Haz clic en Guardar.

Ahora el usuario puede acceder a la consola de Google Cloud y autorizar la CLI de gcloud.

También puedes crear cuentas de usuario desde gcloud, la API de REST o las bibliotecas cliente.

Crea una cuenta de servicio

  1. Abre la página Cuentas de servicio en la consola de Google Cloud .

    Abrir la página Cuentas de servicio

  2. Selecciona tu proyecto y haz clic en Abrir.

  3. Haz clic en Crear cuenta de servicio.

  4. Ingresa un nombre de cuenta de servicio. Debe ser un nombre fácil de usar para mostrar.

  5. Haz clic en Crear.

  6. Selecciona funciones que otorguen acceso a las características de App Engine.

    Si la cuenta de servicio también necesita acceder a otros servicios de Cloud, selecciona funciones que otorguen acceso a otros servicios de Cloud.

  7. Haz clic en Continuar.

  8. Si lo deseas, puedes especificar cuentas de usuario con la capacidad de administrar la cuenta de servicio. También puedes especificar cuentas de usuario con la capacidad de usar la cuenta de servicio para acceder indirectamente a todos los recursos a los que tiene acceso la cuenta de servicio.

  9. Haz clic en Guardar.

    Aparecerá una lista de las cuentas de servicio existentes.

  10. Si necesitas usar tu cuenta de servicio fuera deGoogle Cloud, sigue las instrucciones para crear una clave de cuenta de servicio (opcional).

Próximos pasos

  • Si usas la cuenta de servicio en tus procesos automatizados de compilación y de implementación, autoriza gcloud CLI con una cuenta de servicio.
  • Si usas la cuenta de servicio con un IDE, sigue las instrucciones que proporciona el IDE.
  • Si necesitas usar una identidad única para una versión de tu aplicación de App Engine cuando accedes a otros Google Cloud servicios o ejecutas tareas, puedes especificar una cuenta de servicio administrada por el usuario en App Engine.

Otórgale a tu app acceso a los servicios de Cloud

Cada llamada a un servicio de Cloud debe estar autenticada y autorizada, incluidas las llamadas provenientes de una aplicación de App Engine y destinadas a otros servicios de Cloud, como Cloud Storage.

De forma predeterminada, las llamadas de tu aplicación de App Engine a servicios pertenecientes al mismo proyecto están autorizadas. El flujo predeterminado funciona de la siguiente manera:

  1. Para iniciar llamadas a un servicio de Cloud, tu app crea un objeto cliente que contiene las credenciales y otros datos que tu app necesita para interactuar con el servicio. Si no especificas las credenciales en el constructor del cliente, este busca las credenciales en el entorno de la app.

    A continuación, se muestra un ejemplo de cómo crear un cliente para Cloud Storage:

    Go

    
    // implicit uses Application Default Credentials to authenticate.
    func implicit() {
    	ctx := context.Background()
    
    	// For API packages whose import path is starting with "cloud.google.com/go",
    	// such as cloud.google.com/go/storage in this case, if there are no credentials
    	// provided, the client library will look for credentials in the environment.
    	storageClient, err := storage.NewClient(ctx)
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer storageClient.Close()
    
    	it := storageClient.Buckets(ctx, "project-id")
    	for {
    		bucketAttrs, err := it.Next()
    		if err == iterator.Done {
    			break
    		}
    		if err != nil {
    			log.Fatal(err)
    		}
    		fmt.Println(bucketAttrs.Name)
    	}
    
    	// For packages whose import path is starting with "google.golang.org/api",
    	// such as google.golang.org/api/cloudkms/v1, use NewService to create the client.
    	kmsService, err := cloudkms.NewService(ctx)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	_ = kmsService
    }
    

    Java

    static void authImplicit() {
      // If you don't specify credentials when constructing the client, the client library will
      // look for credentials via the environment variable GOOGLE_APPLICATION_CREDENTIALS.
      Storage storage = StorageOptions.getDefaultInstance().getService();
    
      System.out.println("Buckets:");
      Page<Bucket> buckets = storage.list();
      for (Bucket bucket : buckets.iterateAll()) {
        System.out.println(bucket.toString());
      }
    }

    Node.js

    // Imports the Google Cloud client library.
    const {Storage} = require('