Autentícate en Firestore

En este documento, se describe cómo autenticarte en Firestore de manera programática. La forma en que te autenticas en Firestore depende de la interfaz que usas para acceder a la API y del entorno en el que se ejecuta tu código.

La información de esta página se aplica cuando usas las bibliotecas cliente del servidor y las APIs de REST y RPC. Si usas bibliotecas cliente para clientes web o para dispositivos móviles, la autenticación se administra con una combinación de reglas de seguridad de Firestore y Firebase Auth. Para obtener más información, consulta Protege datos de los clientes web o dispositivos móviles.

Para obtener más información sobre la autenticación de Google Cloud , consulta los Métodos de autenticación.

Acceso a la API

Firestore admite el acceso programático. Puedes acceder a la API de las siguientes maneras:

Bibliotecas cliente

Las bibliotecas cliente de Firestore proporcionan compatibilidad de lenguaje de alto nivel para la autenticación en Firestore de manera programática. Para autenticar las llamadas a las APIs de Google Cloud , las bibliotecas cliente admiten las Credenciales predeterminadas de la aplicación (ADC). Las bibliotecas buscan credenciales en un conjunto de ubicaciones definidas y las usan en la autenticación de solicitudes a la API. Con ADC, puedes hacer que las credenciales estén disponibles para tu aplicación en una variedad de entornos, como el de desarrollo o producción local, sin necesidad de modificar el código de la aplicación.

Google Cloud CLI

Cuando usas gcloud CLI para acceder a Firestore, accedes a gcloud CLI con una cuenta de usuario, que proporciona las credenciales que usan los comandos de gcloud CLI.

Si las políticas de seguridad de tu organización impiden que las cuentas de usuario tengan los permisos necesarios, puedes usar la identidad temporal como cuenta de servicio.

Para obtener más información, consulta Autentícate para usar gcloud CLI. Para obtener más información sobre el uso de gcloud CLI con Firestore, consulta las páginas de referencia de gcloud CLI.

Configura la autenticación para Firestore

La forma de configurar la autenticación dependerá del entorno en el que se ejecuta tu código.

Las siguientes opciones para configurar la autenticación son las de uso más frecuente. Para obtener más información y opciones de autenticación, consulta Métodos de autenticación.

Para un entorno de desarrollo local

Puedes configurar las credenciales de un entorno de desarrollo local de las siguientes maneras:

Bibliotecas cliente o herramientas de terceros

Configura las credenciales predeterminadas de la aplicación (ADC) en tu entorno local:

  1. Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  2. Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:

    gcloud auth application-default login

    No es necesario que lo hagas si usas Cloud Shell.

    Si se devuelve un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.

    Aparecerá una pantalla de acceso. Después de acceder, tus credenciales se almacenan en el archivo de credenciales local que usa ADC.

Para obtener más información sobre cómo trabajar con ADC en un entorno local, consulta Configura ADC para un entorno de desarrollo local.

Identidad temporal como cuenta de servicio

En la mayoría de los casos, puedes usar tus credenciales de usuario para autenticarte desde un entorno de desarrollo local. Si eso no es posible o si necesitas probar los permisos asignados a una cuenta de servicio, puedes usar la identidad temporal como cuenta de servicio. Debes tener el permiso de iam.serviceAccounts.getAccessToken, que viene incluido en el rol de IAM (roles/iam.serviceAccountTokenCreator) de la cuenta de servicio creadora de tokens.

Puedes configurar gcloud CLI para usar la identidad temporal como cuenta de servicio con el comando gcloud config set:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Para los lenguajes seleccionados, puedes usar la identidad temporal como cuenta de servicio y crear un archivo ADC local con el objetivo de que lo usen las bibliotecas cliente. Este enfoque solo es compatible con las bibliotecas cliente de Go, Java, Node.js y Python (no es compatible con los otros lenguajes). Para configurar un archivo ADC local con la identidad temporal como cuenta de servicio, usa la marca --impersonate-service-account con el comando gcloud auth application-default login:

gcloud auth application-default login --impersonate-service-account=SERVICE_ACCT_EMAIL

Para obtener más información sobre el uso de identidad temporal como cuenta de servicio, consulta Uso de la identidad temporal como cuenta de servicio.

En Google Cloud

Para autenticar una carga de trabajo que se ejecuta en Google Cloud, debes usar las credenciales de la cuenta de servicio conectada al recurso de procesamiento en el que se ejecuta tu código, como una instancia de máquina virtual (VM) de Compute Engine. Este enfoque es el método de autenticación preferido para el código que se ejecuta en un recurso de Google Cloud de procesamiento.

En la mayoría de los servicios, debes conectar la cuenta de servicio cuando crees el recurso que ejecutará el código; no puedes agregar o reemplazar la cuenta de servicio más adelante. Compute Engine es una excepción: te permite conectar una cuenta de servicio a una instancia de VM en cualquier momento.

Usa gcloud CLI para crear una cuenta de servicio y conectarla a tu recurso:

  1. Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  2. Configura la autenticación:

    1. Asegúrate de tener los roles de IAM de creador de cuentas de servicio (roles/iam.serviceAccountCreator) y administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin). Obtén más información para otorgar roles.
    2. Crea la cuenta de servicio:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Reemplaza SERVICE_ACCOUNT_NAME por un nombre para la cuenta de servicio.

    3. Para proporcionar acceso a tu proyecto y tus recursos, otorga un rol a la cuenta de servicio:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      Reemplaza lo siguiente:

      • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio
      • PROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicio
      • ROLE: el rol a otorgar
    4. Para otorgar otro rol a la cuenta de servicio, ejecuta el comando como lo hiciste en el paso anterior.
    5. Otorga el rol requerido a la principal que conectará la cuenta de servicio a otros recursos.

      gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

      Reemplaza lo siguiente:

      • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio
      • PROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicio
      • USER_EMAIL: La dirección de correo electrónico de una Cuenta de Google
  3. Crea el recurso que ejecutará tu código y conecta la cuenta de servicio a ese recurso. Por ejemplo, si usas Compute Engine:

    Crear una instancia de Compute Engine Configura la instancia de la siguiente manera:
    • Reemplaza INSTANCE_NAME por el nombre de instancia que desees.
    • Establece la marca --zone en la zona en la que deseas crear tu instancia.
    • Establece la marca --service-account en la dirección de correo electrónico de la cuenta de servicio que creaste.
    gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL

Para obtener más información acerca de la autenticación en las APIs de Google, consulta Métodos de autenticación.

Local o en un proveedor de servicios en la nube diferente

El método preferido para configurar la autenticación desde fuera de Google Cloud es usar la federación de identidades para cargas de trabajo. Para obtener más información, consulta Configura ADC para un entorno local o con otro proveedor de servicios en la nube en la documentación de autenticación.

Control de acceso para Firestore

Después de autenticarte en Firestore, debes tener autorización para acceder a los recursos de Google Cloud . Firestore usa Identity and Access Management (IAM) para la autorización.

Para obtener más información sobre los roles de Firestore, consulta Seguridad para las bibliotecas cliente del servidor. Para obtener más información sobre IAM y la autorización, consulta Descripción general de IAM.

¿Qué sigue?