En esta página se describe cómo puedes usar bibliotecas de cliente para acceder a las APIs de Google.
Las bibliotecas de cliente facilitan el acceso a las Google Cloud APIs con un lenguaje compatible. Puedes usar las APIs de Google Cloud directamente haciendo solicitudes sin formato al servidor, pero las bibliotecas de cliente ofrecen simplificaciones que reducen significativamente la cantidad de código que tienes que escribir. Esto es especialmente cierto en el caso de la autenticación, ya que las bibliotecas de cliente admiten las credenciales predeterminadas de la aplicación (ADC).
Si aceptas configuraciones de credenciales (JSON, archivos o flujos) de una fuente externa (por ejemplo, un cliente), consulta los requisitos de seguridad al usar configuraciones de credenciales de una fuente externa.
Usar credenciales de aplicación predeterminadas con bibliotecas de cliente
Para usar las credenciales de aplicación predeterminadas y autenticar tu aplicación, primero debes configurar las ADC en el entorno en el que se ejecuta tu aplicación. Cuando usas la biblioteca de cliente para crear un cliente, la biblioteca de cliente comprueba automáticamente las credenciales que has proporcionado a ADC y las usa para autenticarse en las APIs que usa tu código. Tu aplicación no necesita autenticarse explícitamente ni gestionar tokens. Las bibliotecas de autenticación se encargan de estos requisitos automáticamente.
En un entorno de desarrollo local, puedes configurar ADC con tus credenciales de usuario o con la suplantación de identidad de una cuenta de servicio mediante la CLI de gcloud. En los entornos de producción, la ADC se configura asociando una cuenta de servicio.
Ejemplo de creación de un cliente
En los siguientes ejemplos de código se crea un cliente para el servicio Cloud Storage. Es probable que tu código necesite diferentes clientes. Estos ejemplos solo tienen como objetivo mostrar cómo puedes crear un cliente y usarlo sin ningún código para autenticarte explícitamente.
Antes de ejecutar los siguientes ejemplos, debes completar estos pasos:
Go
Java
Node.js
PHP
Python
Ruby
Usar claves de API con bibliotecas de cliente
Solo puedes usar claves de API con bibliotecas de cliente de APIs que acepten claves de API. Además, la clave de API no debe tener una restricción de API que impida que se use en la API.
Para obtener más información sobre las claves de API creadas en el modo Exprés, consulta las preguntas frecuentes sobre el modo Exprés de Google Cloud.
En este ejemplo se usa la API Cloud Natural Language, que acepta claves de API, para mostrar cómo se proporciona una clave de API a la biblioteca.
C#
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
C++
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
Go
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
Node.js
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
Python
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
Ruby
Para ejecutar este ejemplo, debes instalar la biblioteca de cliente de Natural Language.
Cuando uses claves de API en tus aplicaciones, asegúrate de que se mantengan protegidas tanto durante el almacenamiento como durante la transmisión. Si expones públicamente tus claves de API, es posible que se apliquen cargos inesperados a tu cuenta. Para obtener más información, consulta las prácticas recomendadas para gestionar las claves de API.
Requisitos de seguridad al usar configuraciones de credenciales de una fuente externa
Normalmente, las configuraciones de credenciales se generan mediante comandos de la CLI de gcloud o con la Google Cloud consola. Por ejemplo, puedes usar la CLI de gcloud para generar un archivo ADC local o un archivo de configuración de inicio de sesión. Del mismo modo, puedes usar la consola de Google Cloud para crear y descargar una clave de cuenta de servicio.
Sin embargo, en algunos casos de uso, una entidad externa te proporciona configuraciones de credenciales. Estas configuraciones se deben usar para autenticarte en las APIs de Google.
Algunos tipos de configuraciones de credenciales incluyen endpoints y rutas de archivos, que las bibliotecas de autenticación usan para adquirir un token. Cuando aceptes configuraciones de credenciales de una fuente externa, debes validar la configuración antes de usarla. Si no valida la configuración, un agente malintencionado podría usar la credencial para poner en peligro sus sistemas y datos.
Validar las configuraciones de credenciales de fuentes externas
La forma en que debes validar tus credenciales externas depende de los tipos de credenciales que acepte tu aplicación.
Validar claves de cuenta de servicio
Si tu aplicación solo acepta claves de cuenta de servicio, usa un cargador de credenciales específico para claves de cuenta de servicio, como se muestra en los siguientes ejemplos. El cargador de credenciales específico del tipo solo analiza los campos presentes en las claves de cuentas de servicio, que no exponen ninguna vulnerabilidad.
C#
var saCredential = ServiceAccountCredential.FromServiceAccountData(stream);
C++
auto cred = google::cloud::MakeServiceAccountCredentials(json)
Java
ServiceAccountCredentials credentials =
ServiceAccountCredentials.fromStream(credentialsStream);
Node.js
const keys = JSON.parse(json_input)
const authClient = JWT.fromJSON(keys);
PHP
cred = new Google\Auth\Credentials\ServiceAccountCredentials($scope, $jsonKey);
Python
cred = service_account.Credentials.from_service_account_info(json_data)
Ruby
creds = Google::Auth::ServiceAccountCredentials.make_creds(json_key_io: json_stream)
Si no puedes usar un cargador de credenciales específico de un tipo, valida la credencial
confirmando que el valor del campo type
es service_account
. Si el valor del campo type
es otro, no uses la clave de la cuenta de servicio.
Validar otras configuraciones de credenciales
Si tu aplicación acepta cualquier tipo de credencial además de una clave de cuenta de servicio, debes realizar una verificación adicional. Entre los ejemplos de otros tipos de configuraciones de credenciales se incluyen los archivos de credenciales de ADC, los archivos de credenciales de federación de identidades de cargas de trabajo o los archivos de configuración de inicio de sesión de federación de identidades de Workforce.
En la siguiente tabla se indican los campos que debe validar, si están presentes en sus credenciales. No todos estos campos están presentes en todas las configuraciones de credenciales.
Campo | Finalidad | Valor previsto |
---|---|---|
service_account_impersonation_url |
Las bibliotecas de autenticación usan este campo para acceder a un endpoint y generar un token de acceso para la cuenta de servicio cuya identidad se está suplantando. | https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/service account email:generateAccessToken |
token_url |
Las bibliotecas de autenticación envían un token externo a este endpoint para intercambiarlo por un token de acceso federado. | https://sts.googleapis.com/v1/token |
credential_source.file |
Las bibliotecas de autenticación leen un token externo del archivo ubicado en la
ubicación especificada en este campo y lo envían al endpoint de
token_url .
|
Ruta de un archivo que contiene un token externo. Deberías reconocer esta ruta. |
credential_source.url |
Un endpoint que devuelve un token externo. Las bibliotecas de autenticación envían una solicitud a esta URL y envían la respuesta al endpoint token_url .
|
Uno de los siguientes elementos:
|
credential_source.executable.command |
Si la variable de entorno GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
tiene el valor 1 , las bibliotecas de autenticación
ejecutan este comando o archivo ejecutable.
|
Un archivo ejecutable o un comando que devuelve un token externo. Deberías reconocer este comando y validar que es seguro. |
credential_source.aws.url |
Las bibliotecas de autenticación envían una solicitud a esta URL para obtener un token de seguridad de AWS. |
Cualquiera de estos valores exactos:
|
credential_source.aws.region_url |
Las bibliotecas de autenticación envían una solicitud a esta URL para obtener la región de AWS activa. |
Cualquiera de estos valores exactos:
|
credential_source.aws.imdsv2_session_token_url |
Las bibliotecas de autenticación envían una solicitud a esta URL para obtener el token de sesión de AWS. |
Cualquiera de estos valores exactos:
|
Siguientes pasos
- Consulta más información sobre las credenciales predeterminadas de la aplicación.
- Más información sobre las claves de API
- Consulta una descripción general de los métodos de autenticación.