En este documento, se describe cómo autenticar Cloud Storage de manera programática. La forma de autenticarte en Cloud Storage depende de la interfaz que uses para acceder a la API y del entorno en el que se ejecuta tu código.
- En esta página, se aborda la autenticación que se basa en tokens de OAuth 2.0. Las solicitudes de Cloud Storage realizadas a través de la API de XML
admiten el uso de tokens o
firmas de OAuth 2.0 en el encabezado
Authorizationde una solicitud. - En esta página, se aborda la autenticación que usa claves RSA como credenciales. Las solicitudes de Cloud Storage realizadas a través de la API de XML admiten claves RSA y claves HMAC como credenciales.
Para obtener más información sobre la Google Cloud autenticación, consulta los Métodos de autenticación.
Acceso a la API
Cloud Storage admite el acceso programático. Puedes acceder a la API en las siguientes maneras:
Bibliotecas cliente
Las bibliotecas cliente de Cloud Storage proporcionan una compatibilidad de lenguaje de alto nivel con el fin de autenticarse en Cloud Storage de manera programática. Para autenticar las llamadas a las Google Cloud APIs de, 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 la CLI de gcloud para acceder a Cloud Storage, te autenticas en Google Cloud como principal, lo 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 Autenticación para gcloud CLI. Para obtener más información para usar gcloud CLI con Cloud Storage, consulta las páginas de referencia de gcloud CLI.
REST
Puedes autenticarte en las APIs de Cloud Storage con tus credenciales de gcloud CLI o con las credenciales predeterminadas de la aplicación. Para obtener más información sobre la autenticación en solicitudes de REST consulta Autentícate para usar REST.
Credenciales de usuario y ADC para Cloud Storage
Una forma de proporcionar credenciales a ADC es usar la gcloud CLI para insertar las credenciales de los usuarios en un archivo de credenciales. Este archivo se ubica en tu sistema de archivos local, donde ADC lo pueda encontrar. Luego, ADC usa las credenciales del usuario proporcionadas para autenticar solicitudes. Este método se suele usar para el desarrollo local.
Si usas este método, es posible que aparezca un error de autenticación cuando intentes autenticarte en Cloud Storage. Para obtener más información sobre este error y cómo abordarlo, consulta Las credenciales de usuario no funcionan.
Configura la autenticación para Cloud Storage
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 más utilizadas. 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:
- Credenciales de usuario para bibliotecas cliente o herramientas de terceros
- Credenciales de usuario para solicitudes de REST desde la línea de comandos
- Identidad temporal como cuenta de servicio
Bibliotecas cliente o herramientas de terceros
Configura las credenciales predeterminadas de la aplicación (ADC) en tu entorno local:
-
Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
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 muestra un error de autenticación y usas un proveedor de identidad externo (IdP), confirma que accediste a 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.
Solicitudes REST desde la línea de comandos
Cuando realizas una solicitud REST desde la línea de comandos, puedes usar tus credenciales de gcloud si incluyes gcloud auth print-access-token como parte del comando que envía la solicitud.
En el siguiente ejemplo, se enumeran las cuentas de servicio para el proyecto especificado. Puedes usar el mismo patrón para cualquier solicitud de REST.
Antes de usar cualquiera de los datos de solicitud presentes a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Tu Google Cloud ID del proyecto.
Para enviar tu solicitud, expande una de estas opciones:
Para obtener más información sobre la autenticación con REST y gRPC, consulta Autentica para usar REST. Si deseas obtener información sobre la diferencia entre tus credenciales locales de ADC y tus credenciales de gcloud CLI, consulta Configuración de autenticación de gcloud CLI y de ADC.
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:
-
Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Configura la autenticación:
-
Asegúrate de tener el rol de IAM de creador de cuentas de servicio
(
roles/iam.serviceAccountCreator) y el rol de IAM de administrador de proyectos (roles/resourcemanager.projectIamAdmin). Obtén información para otorgar roles. -
Crea la cuenta de servicio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Reemplaza
SERVICE_ACCOUNT_NAMEpor un nombre para la cuenta de servicio. -
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 servicioPROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicioROLE: el rol a otorgar
- Para otorgar otro rol a la cuenta de servicio, ejecuta el comando como lo hiciste en el paso anterior.
-
Otorga el rol necesario al 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 servicioPROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicioUSER_EMAIL: la dirección de correo electrónico de una Cuenta de Google
-
Asegúrate de tener el rol de IAM de creador de cuentas de servicio
(
-
Crea el recurso que ejecutará tu código y conecta la cuenta de servicio a ese recurso. Por ejemplo, si usas Compute Engine:
Crea una instancia de Compute Engine. Configúrala como se indica a continuación:-
Reemplaza
INSTANCE_NAMEpor el nombre de instancia que prefieras. -
Establece la marca
--zoneen la zona en la que deseas crear tu instancia. -
Establece la marca
--service-accounten 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
-
Reemplaza
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 Cloud Storage
Después de autenticarte en Cloud Storage, debes tener autorización para acceder a los Google Cloud recursos. Cloud Storage usa Identity and Access Management (IAM) para la autorización.
Para obtener más información sobre los roles de Cloud Storage, consulta Descripción general del control de acceso. Para obtener más información sobre IAM y la autorización, consulta Descripción general de IAM.
Autoriza con credenciales de cuenta de servicio
Para la mayoría de los entornos de desarrollo y producción, la práctica recomendada es usar las credenciales predeterminadas de la aplicación (ADC). El uso de ADC mantiene las credenciales fuera del código de la aplicación y los archivos de configuración, lo que reduce los riesgos de seguridad.
Sin embargo, si deseas usar credenciales de una fuente que no sea ADC, pasa un objeto de credenciales directamente al cliente. Por ejemplo, puedes recuperar claves de cuentas de servicio de un almacén de secretos en la memoria o de un flujo de configuración. Luego, usas estas claves para inicializar el cliente de forma dinámica.
En el siguiente ejemplo, se muestra cómo usar la biblioteca cliente de Cloud Storage para Python para autenticarte con credenciales de cuenta de servicio en la memoria:
from google.cloud import storage from google.oauth2 import service_account # Replace with your in-memory service account JSON key info service_account_info = { "type": "service_account", "project_id": "your-project-id", # ... other service account private key fields ... } # Create credentials from the in-memory dictionary credentials = service_account.Credentials.from_service_account_info(service_account_info) # Initialize the Storage client with the custom credentials storage_client = storage.Client( project=service_account_info["project_id"], credentials=credentials ) # Use the client to list buckets, for example buckets = storage_client.list_buckets() for bucket in buckets: print(bucket.name)
Para obtener detalles sobre otros lenguajes y requisitos de seguridad cuando se controlan credenciales externas, consulta Autentica con bibliotecas cliente.
¿Qué sigue?
- Obtén información sobre las descargas basadas en el navegador mediante la autenticación de cookies.
- Obtén más información sobre los permisos de OAuth 2.0 de Cloud Storage.
- Explora los casos de uso de credenciales de cuentas de usuario.
- Obtén más información sobre los Google Cloud métodos de autenticación.
- Consulta una lista de casos de uso de autenticación.