Administra claves de API (original) (raw)

En esta página, se describe cómo crear, editar y restringir claves de API. Para obtener información sobre cómo usar claves de API para acceder a las APIs de Google, consulta Cómo usar claves de API para acceder a las APIs.

Existen dos tipos de claves de API: las estándar y las que se vincularon a una cuenta de servicio.

Las claves de API estándar proporcionan una forma de asociar una solicitud con un proyecto para fines de facturación y cuota. Cuando usas una clave de API estándar (una clave de API que no se vinculó a una cuenta de servicio) para acceder a una API, esta no identifica un principal. Sin un principal, la solicitud no puede usar Identity and Access Management (IAM) para verificar si el emisor tiene autorización para realizar la operación solicitada.

Las claves de API estándar se pueden usar con cualquier API que acepte claves de API, a menos que se hayan agregado restricciones de API a la clave. Las claves de API estándar no se pueden usar con servicios que no las aceptan, incluso en elmodo exprés.

Las claves de API vinculadas a una cuenta de servicio proporcionan la identidad y la autorización de la cuenta de servicio a una solicitud. Cuando usas una clave de API que se vinculó a una cuenta de servicio para acceder a una API, tu solicitud se procesa como si usaras la cuenta de servicio vinculada para realizarla.

Una restricción predeterminada de la política de la organización impide la vinculación de claves a una cuenta de servicio. Para cambiar esto, consultaHabilita la vinculación de claves a cuentas de servicio.

Una clave de API tiene los siguientes componentes, que te permiten administrar y usar la clave:

Completa las siguientes tareas para usar las muestras de esta página.

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

gcloud

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, aCloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

C++

Para usar las muestras de C++ de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

  1. Install the Google Cloud CLI.
  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
  3. To initialize the gcloud CLI, run the following command:
    gcloud init
  4. If you're using a local shell, then create local authentication credentials for your user account:
    gcloud auth application-default login
    You don't need to do this if you're using Cloud Shell.
    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

Java

Para usar las muestras de Java de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

  1. Install the Google Cloud CLI.
  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
  3. To initialize the gcloud CLI, run the following command:
    gcloud init
  4. If you're using a local shell, then create local authentication credentials for your user account:
    gcloud auth application-default login
    You don't need to do this if you're using Cloud Shell.
    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

Python

Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

  1. Install the Google Cloud CLI.
  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
  3. To initialize the gcloud CLI, run the following command:
    gcloud init
  4. If you're using a local shell, then create local authentication credentials for your user account:
    gcloud auth application-default login
    You don't need to do this if you're using Cloud Shell.
    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Google Cloud .

REST

Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

After installing the Google Cloud CLI,initialize it by running the following command:

gcloud init

If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para administrar las claves de API, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Habilita la vinculación de claves a cuentas de servicio

Antes de poder vincular una clave de API a una cuenta de servicio, primero debes configurar la restricción de la política de la organización constraints/iam.managed.disableServiceAccountApiKeyCreation en false. Para cambiar la política de la organización, se requiere un recurso de organización asociado. No se admiten proyectos sin una organización.

Para cambiar la restricción de la política, completa las siguientes instrucciones.

Console

  1. En la consola de Google Cloud , ve a la página Políticas de la organización.
    Ir a Políticas de la organización
  2. Cambia a la organización, la carpeta o el proyecto para el que deseas cambiar las políticas.
  3. En el cuadro Filtro, ingresa Block service y, luego, haz clic en el nombre del filtro Bloquear vinculaciones de claves de la API de la cuenta de servicio.
  4. Haz clic en Administrar política.
  5. En la sección Fuente de la política, selecciona Anular la política del elemento superior.
  6. Haz clic en Agregar una regla y establece Aplicación en Desactivada.
  7. Haz clic en Listo.
  8. Opcional: Haz clic en Probar cambios para obtener estadísticas sobre cómo la política propuesta podría causar interrupciones o incumplimientos de cumplimiento.
  9. Haz clic en Establecer política.

gcloud

  1. Crea un archivo llamado spec.yaml con el siguiente contenido:
name: SCOPE/SCOPE_ID/policies/iam.managed.disableServiceAccountApiKeyCreation  
spec:  
  rules:  
  - enforce: false  

Ingresa los siguientes valores:

  1. Ejecuta el siguiente comando gcloud para permitir la vinculación de claves de API a las cuentas de servicio:
gcloud org-policies set-policy spec.yaml \  
    --update-mask spec  

Crea una clave de API

Para crear una clave de API, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú.
  3. Opcional: Para vincular la clave de API a una cuenta de servicio, selecciona la casilla de verificación Autenticar las llamadas a la API a través de una cuenta de servicio y, luego, haz clic en Seleccionar una cuenta de servicio para seleccionar la cuenta de servicio que deseas vincular a la clave.
    Para obtener más información, consulta Claves de API vinculadas a una cuenta de servicio.
  4. Agrega restricciones de clave de API.
    Se recomienda restringir las claves de API. Para obtener más información, consulta Aplica restricciones de clave de API.
  5. Haz clic en Crear. Se mostrará la cadena de la clave recién creada en el cuadro de diálogo Se creó la clave de API.

gcloud

Usa elcomando gcloud services api-keys create para crear una clave de API.

Reemplaza DISPLAY_NAME por un nombre descriptivo para tu clave.

 gcloud services api-keys create \
     --display-name=DISPLAY_NAME

Opcional: Para vincular la clave de API a una cuenta de servicio, usa gcloud beta en su lugar, con la marca --service-account:

 gcloud beta services api-keys create \
     --display-name=DISPLAY_NAME \
     --service-account=SERVICE_ACCOUNT_EMAIL_ADDRESS

Para obtener más información, consulta Claves de API vinculadas a una cuenta de servicio.

C++

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

Usarás elmétodo keys.createpara crear una clave de API. Esta solicitud muestra una operación de larga duración. Debes consultar la operación para obtener la información de la clave nueva.

Reemplaza los siguientes valores:

curl -X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d {'"displayName" : "DISPLAY_NAME"'}
"https://apikeys.googleapis.com/v2/projects/PROJECT/locations/global/keys"

Opcional: Para vincular la clave de API a una cuenta de servicio, usa el siguiente comando:

curl -X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d {'"displayName" : "DISPLAY_NAME", "serviceAccountEmail" : "SERVICE_ACCOUNT_EMAIL"'}
"https://apikeys.googleapis.com/v2/projects/PROJECT/locations/global/keys"

Para obtener más información, consulta Claves de API vinculadas a una cuenta de servicio.

Para obtener más información sobre cómo crear claves de API con la API de REST, consulta Crea una clave de API en la documentación de la API de claves de API.

Aplica restricciones de claves de API

Las claves de API no están restringidas de forma predeterminada. Las claves no restringidas son inseguras porque cualquier persona puede usarlas desde cualquier lugar. Para las aplicaciones de producción, debes establecer restricciones de aplicaciones y restricciones de API.

Agrega restricciones de aplicaciones

Las restricciones de aplicaciones especifican qué sitios web, direcciones IP o apps pueden usar una clave de API.

Solo puedes aplicar un tipo de restricción de aplicación a la vez. Elige el tipo de restricción según el tipo de tu aplicación:

Opción Tipo de aplicación Notas
URL de referencia HTTP Aplicaciones web Especifica los sitios web que pueden usar la clave.
Direcciones IP Aplicaciones llamadas por servidores específicos Especifica los servidores o los trabajos cron que pueden usar la clave. Esta es la única restricción disponible si vinculas tu clave de API a una cuenta de servicio.
Apps para Android Aplicaciones para Android Especifica la aplicación para Android que puede usar la clave.
Apps para iOS Aplicaciones para iOS Especifica los paquetes de iOS que pueden usar la clave.

URL de referencia HTTP

Para restringir los sitios web que pueden usar tu clave de API, agrega una o más restricciones de referente HTTP.

Puedes reemplazar un carácter comodín (*) por el subdominio o la ruta, pero no puedes insertar un carácter comodín en el medio de la URL. Por ejemplo, *.example.com es válido y acepta todos los sitios que terminan en .example.com. Sin embargo, mysubdomain*.example.com no es una restricción válida.

Los números de puerto se pueden incluir en las restricciones de referente HTTP. Si incluyes un número de puerto, solo se detectarán coincidencias con las solicitudes que usen ese puerto. Si no especificas un número de puerto, las solicitudes de cualquier número de puerto coincidirán.

En la siguiente tabla, se muestran algunos ejemplos de situaciones y restricciones de navegador:

Situación Restricciones
Permite una URL específica Agrega una URL con una ruta de acceso exacta. Por ejemplo: www.example.com/path www.example.com/path/path Algunos navegadores implementan una política de referencia que envía solo la URL de origen para las solicitudes de origen cruzado. Los usuarios de estos navegadores no pueden usar claves con restricciones de URL específicas de una página.
Permitir cualquier URL en tu sitio Debes establecer dos URLs en la lista allowedReferers. Es la URL para el dominio, sin un subdominio, y con un comodín en la ruta de acceso. Por ejemplo:example.com/* Una segunda URL que incluye un comodín para el subdominio y un comodín para la ruta. Por ejemplo:*.example.com/*
Permitir cualquier URL en un solo subdominio o dominio simple Debes establecer dos URLs en la lista allowedReferers para permitir un dominio completo: Es la URL del dominio sin una barra diagonal final. Por ejemplo: www.example.com sub.example.com example.com Una segunda URL para el dominio que incluye un comodín en la ruta de acceso. Por ejemplo: www.example.com/\* sub.example.com/* example.com/*

Para restringir tu clave de API a sitios web específicos, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas restringir.
  3. En la sección Restricciones de aplicaciones, selecciona URL de referencia HTTP.
  4. Para cada restricción que desees agregar, haz clic en Agregar un elemento, ingresa la restricción y haz clic en Listo.
  5. Haz clic en Guardar para guardar los cambios y volver a la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa el comando gcloud services api-keys update para agregar restricciones de referentes HTTP a una clave de API.
    Reemplaza los siguientes valores:
    • KEY_ID: Es el ID de la clave que deseas restringir.
    • ALLOWED_REFERRER_1: Es la restricción de referente HTTP.
      Puedes agregar tantas restricciones como sea necesario. Usa comas para separar las restricciones. Debes proporcionar todas las restricciones de referencia con el comando update. Las restricciones de referencia que se proporcionan reemplazan cualquier restricción de referencia existente en la clave.
      gcloud services api-keys update KEY_ID \
      --allowed-referrers="ALLOWED_REFERRER_1"

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list. El ID se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el ID o el nombre de tu Google Cloud proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
  2. Usa el método keys.patch para agregar restricciones de referentes HTTP a la clave de API.
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • ALLOWED_REFERRER_1: Es la restricción de referente HTTP.
      Puedes agregar tantas restricciones como sea necesario. Usa comas para separar las restricciones. Debes proporcionar todas las restricciones de referencia con la solicitud. Las restricciones de referencia que se proporcionan reemplazan cualquier restricción de referencia existente en la clave.
    • PROJECT_ID: El nombre o el ID de tu proyecto de Google Cloud .
    • KEY_ID: Es el ID de la clave que deseas restringir.
      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      --data '{
      "restrictions" : {
      "browserKeyRestrictions": {
      "allowedReferrers": ["ALLOWED_REFERRER_1"]
      }
      }
      }' \
      "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"

Para obtener más información sobre cómo agregar restricciones de referentes HTTP a una clave mediante la API de REST, consulta Agrega restricciones de navegador en la documentación de la API de claves de API.

Direcciones IP

Puedes especificar una o más direcciones IP de los emisores, como un servidor web o un trabajo cron, que tienen permiso para usar tu clave de API. Puedes especificar las direcciones IP en cualquiera de los siguientes formatos:

El uso de localhost no es compatible con las restricciones del servidor.

Para restringir tu clave de API a direcciones IP específicas, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas restringir.
  3. En la sección Restricciones de aplicaciones, selecciona Direcciones IP.
  4. Por cada dirección IP que desees agregar, haz clic en Agregar un elemento, ingresa la dirección y haz clic en Listo.
  5. Haz clic en Guardar para guardar los cambios y volver a la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa el comando gcloud services api-keys update para agregar restricciones de servidor (dirección IP) a una clave de API.
    Reemplaza los siguientes valores:
    • KEY_ID: Es el ID de la clave que deseas restringir.
    • ALLOWED_IP_ADDR_1: La dirección IP permitida.
      Puedes agregar tantas direcciones IP como sea necesario. Usa comas para separar las direcciones.
      gcloud services api-keys update KEY_ID \
      --allowed-ips="ALLOWED_IP_ADDR_1"

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list. El ID se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el Google Cloud ID o nombre del proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
  2. Usa el método keys.patch para agregar restricciones de servidor (dirección IP) a una clave de API.
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • ALLOWED_IP_ADDR_1: La dirección IP permitida.
      Puedes agregar tantas direcciones IP como sea necesario. Usa comas para separar las restricciones. Debes proporcionar todas las direcciones IP con la solicitud. Las restricciones de referente proporcionadas reemplazan cualquier restricción de dirección IP existente en la clave.
    • PROJECT_ID: El nombre o el ID de tu proyecto de Google Cloud .
    • KEY_ID: Es el ID de la clave que deseas restringir.
      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      --data '{
      "restrictions" : {
      "serverKeyRestrictions": {
      "allowedIps": ["ALLOWED_IP_ADDR_1"]
      }
      }
      }' \
      "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"

Para obtener más información sobre cómo agregar restricciones de direcciones IP a una clave mediante la API de REST, consulta Agrega restricciones de servidores en la documentación de la API de claves de API.

Apps para Android

Puedes restringir el uso de una clave de API a apps para Android específicas. Debes proporcionar el nombre del paquete y la huella digital del certificado SHA-1 de 20 bytes para cada app.

Cuando usas la clave de API en una solicitud, debes especificar el nombre del paquete y la huella digital del certificado con los siguientes encabezados HTTP:

Para restringir tu clave de API a una o más apps para Android, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas restringir.
  3. En la sección Restricciones de aplicaciones, selecciona Apps para Android.
  4. Por cada app para Android que desees agregar, haz clic en Agregar un elemento y, luego, ingresa el nombre del paquete y la huella digital del certificado SHA-1. Luego, haz clic en Listo.
  5. Haz clic en Guardar para guardar los cambios y volver a la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa el comando gcloud services api-keys update para especificar las apps para Android que pueden usar una clave de API.
    Reemplaza los siguientes valores:
    • KEY_ID: Es el ID de la clave que deseas restringir.
    • SHA1_FINGERPRINT y PACKAGE_NAME: Es la información de una app de Android que puede usar la clave.
      Puedes agregar tantas apps como sea necesario. Usa marcas --allowed-application adicionales.
      gcloud services api-keys update KEY_ID \
      --allowed-application=sha1_fingerprint=SHA1_FINGERPRINT_1,package_name=PACKAGE_NAME_1 \
      --allowed-application=sha1_fingerprint=SHA1_FINGERPRINT_2,package_name=PACKAGE_NAME_2

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list. El ID se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el ID o el nombre de tu Google Cloud proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
  2. Usa el método keys.patch para especificar las apps para Android que pueden usar una clave de API.
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • SHA1_FINGERPRINT_1 y PACKAGE_NAME_1: Es la información de una app de Android que puede usar la clave.
      Puedes agregar la información para tantas aplicaciones como sea necesario. Usa comas para separar los objetos AndroidApplication. Debes proporcionar todas las aplicaciones con la solicitud. Las aplicaciones proporcionadas reemplazan cualquier aplicación permitida existente en la clave.
    • PROJECT_ID: El nombre o el ID de tu proyecto de Google Cloud .
    • KEY_ID: Es el ID de la clave que deseas restringir.
      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      --data '{
      "restrictions" : {
      "androidKeyRestrictions": {
      "allowedApplications": [
      {
      "sha1Fingerprint": "SHA1_FINGERPRINT_1",
      "packageName": "PACKAGE_NAME_1"
      },
      ]
      }
      }
      }' \
      "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"

Para obtener más información sobre cómo agregar restricciones de apps para Android a una clave mediante la API de REST, consulta Agrega restricciones de Android en la documentación de la API de claves de API.

Apps para iOS

Puedes restringir el uso de una clave de API a apps para iOS específicas si proporcionas el ID del paquete de cada app.

Cuando usas la clave de API en una solicitud, debes especificar el ID del paquete con el encabezado HTTP X-Ios-Bundle-Identifier.

Para restringir tu clave de API a una o más apps para iOS, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas restringir.
  3. En la sección Restricciones de aplicaciones, selecciona Apps para iOS.
  4. Por cada app para iOS que desees agregar, haz clic en Agregar un elemento, ingresa el ID del paquete y, luego, haz clic en Listo.
  5. Haz clic en Guardar para guardar los cambios y volver a la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa el método gcloud services api-keys update para especificar las apps para iOS que pueden usar la clave.
    Reemplaza los siguientes valores:
    • KEY_ID: Es el ID de la clave que deseas restringir.
    • ALLOWED_BUNDLE_ID: El ID del paquete de una app para iOS que deseas que pueda usar esta clave de API.
      Puedes agregar tantos ID del paquete como sea necesario. Usa comas para separar los IDs.
      gcloud services api-keys update KEY_ID \
      --allowed-bundle-ids=ALLOWED_BUNDLE_ID_1,ALLOWED_BUNDLE_ID_2

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list. El ID se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el ID o el nombre de tu Google Cloud proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
  2. Usa el método keys.patch para especificar las apps para iOS que pueden usar una clave de API.
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • ALLOWED_BUNDLE_ID: El ID del paquete de una app para iOS que puede usar la clave.
      Puedes agregar la información para tantas aplicaciones como sea necesario. Usa comas para separar los ID del paquete. Debes proporcionar todos los ID del paquete con la solicitud. Los ID del paquete proporcionados reemplazan cualquier aplicación permitida existente en la clave.
    • PROJECT_ID: El nombre o el ID de tu proyecto de Google Cloud .
    • KEY_ID: Es el ID de la clave que deseas restringir.
      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      --data '{
      "restrictions" : {
      "iosKeyRestrictions": {
      "allowedBundleIds": ["ALLOWED_BUNDLE_ID_1","ALLOWED_BUNDLE_ID_2"]
      }
      }
      }' \
      "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"

Para obtener más información sobre cómo agregar restricciones de apps para iOS a una clave mediante la API de REST, consulta Agrega restricciones de iOS en la documentación de la API de claves de API.

Agrega restricciones de API

Las restricciones de API especifican a qué API se puede llamar mediante la clave de API.

Para agregar restricciones de API, usa una de las siguientes opciones:

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas restringir.
  3. En la sección Restricciones de API, haz clic en Restringir clave .
  4. Selecciona todas las APIs a las que se usará tu clave de API para acceder.
  5. Haz clic en Guardar para guardar los cambios y volver a la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa el comando gcloud services api-keys update para especificar en qué servicios se puede usar una clave de API para acceder.
    Reemplaza los siguientes valores:
    • KEY_ID: Es el ID de la clave que deseas restringir.
    • SERVICE_1, SERVICE_2…: Los nombres de los servicios de las APIs a las que se puede acceder la clave.
      Debes proporcionar todos los nombres de los servicios con el comando update. Los nombres de los servicios proporcionados reemplazan cualquier servicio existente en la clave.
      Para encontrar el nombre del servicio, busca la API en el panel de la API. Los nombres de servicios son strings como bigquery.googleapis.com.
      gcloud services api-keys update KEY_ID \
      --api-target=service=SERVICE_1 --api-target=service=SERVICE_2

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

Python

Para ejecutar esta muestra, debes instalar labiblioteca cliente de claves de API.

REST

  1. Obtén el ID de la clave que deseas restringir.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list. El ID se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el ID o el nombre de tu Google Cloud proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
  2. Usa el método keys.patch para especificar en qué servicios se puede usar una clave de API para acceder.
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • SERVICE_1, SERVICE_2…: Los nombres de los servicios de las APIs a las que se puede acceder la clave.
      Debes proporcionar todos los nombres de servicios con la solicitud. Los nombres de los servicios proporcionados reemplazan cualquier servicio existente en la clave.
      Para encontrar el nombre del servicio, busca la API en el panel de la API. Los nombres de servicios son strings como bigquery.googleapis.com.
    • PROJECT_ID: El nombre o el ID de tu proyecto de Google Cloud .
    • KEY_ID: Es el ID de la clave que deseas restringir.
      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      --data '{
      "restrictions" : {
      "apiTargets": [
      {
      "service": "SERVICE_1"
      },
      {
      "service" : "SERVICE_2"
      },
      ]
      }
      }' \
      "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"

Para obtener más información sobre cómo agregar restricciones de API a una clave mediante la API de REST, consulta Agrega restricciones de API en la documentación de la API de claves de API.

Obtén información del proyecto a partir de una string de clave

Puedes determinar con qué Google Cloud proyecto se asocia una clave de API desde su cadena.

Reemplaza KEY_STRING por la string de clave para la que necesitas información del proyecto.

Crea una copia de una clave de API

Si necesitas una clave de API nueva con las mismas restricciones que una clave de API existente, puedes crear una copia de la clave de API existente. Esta operación crea una clave de API nueva con una cadena de clave y un ID únicos, con las restricciones de la clave de API existente.

La operación de copia solo está disponible en la consola de Google Cloud . Para usar otros métodos, sigue los pasos para crear una clave de API y, luego, aplica las mismas restricciones de clave de API a la clave de API generada recientemente.

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas copiar.
    Se abrirá la página de detalles de la clave de API.
  3. Haz clic en Crear una copia.
  4. Ingresa un nombre para la nueva clave de API y confirma que las restricciones sean correctas.
  5. Haz clic en Crear.

Rota una clave de API

Si rotas tus claves de API de forma periódica, puedes limitar el impacto de las claves de API vulneradas.

Cuando rotas una clave de API, creas una nueva con las mismas restricciones que la clave anterior y actualizas tus aplicaciones para que usen la nueva. Después de actualizar todas tus aplicaciones, borra la clave anterior.

La operación de rotación solo está disponible en la consola de Google Cloud . Para usar otros métodos, sigue los pasos para crear una clave de API y, luego, aplica las mismas restricciones de clave de API a la clave de API generada recientemente. Después de actualizar tus aplicaciones para que usen la clave nueva, borra la clave anterior.

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en el nombre de la clave de API que deseas rotar para abrir su página de detalles.
  3. Haz clic en Rotar clave.
  4. Ingresa un nombre para la nueva clave de API y confirma que las restricciones sean correctas.
  5. Haz clic en Crear.
  6. Copia la cadena de clave y actualiza tus aplicaciones para que usen la nueva.
  7. Después de actualizar todas las aplicaciones para que usen la clave nueva, vuelve a la página de detalles de la clave nueva. En la sección Clave anterior, haz clic en Borrar la clave anterior para borrar la clave anterior.
    Si descubres que borraste la clave anterior antes de tiempo, puedes deshacer la acción.

Recuperar una clave de API

Si borras una clave de API por error, puedes recuperarla (en un plazo de 30 días después de borrarla). Después de 30 días, no puedes recuperar la clave de API.

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
  2. Haz clic en Restablecer credenciales borradas.
  3. Busca la clave de API borrada que deseas recuperar y haz clic en Restablecer.
    La recuperación de una clave de API puede tardar unos minutos en propagarse. Después de la propagación, la clave de API recuperada se muestra en la lista de claves de API.

gcloud

  1. Obtén el ID de la clave que deseas reperar.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list --show-deleted para enumerar las claves de tu proyecto.
  2. Usa elcomando gcloud services api-keys undeletepara recuperar una clave de API.
    gcloud services api-keys undelete KEY_ID
    Reemplaza los siguientes valores:
    • KEY_ID: El ID de la clave que deseas restringir.

Java

Para ejecutar esta muestra, debes instalar la biblioteca cliente google-cloud-apikeys.

REST

  1. Obtén el ID de la clave que deseas reperar.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el método keys.list y el parámetro de consulta showDeleted configurado como true. El ID de clave se enumera en el campo uid de la respuesta.
    Reemplaza PROJECT_ID por el ID o el nombre de tu Google Cloud proyecto.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys?showDeleted=true"
  2. Usa el método undelete para recuperar la clave de API.
    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID:undelete"
    Esta solicitud muestra una operación de larga duración. Debes sondear la operación para saber cuándo se completa y obtener su estado.
    Reemplaza los siguientes valores:
    • PROJECT_ID: El nombre o el ID de tu Google Cloud proyecto.
    • KEY_ID: Es el ID de la clave que deseas restringir.

Determina el tipo de clave de API

Puedes inspeccionar la clave para determinar si está vinculada a una cuenta de servicio.

Console

  1. En la Google Cloud consola, ve a la página Credenciales:
    Ir a Credenciales
    Si la clave de API está vinculada a una cuenta de servicio, se muestra el identificador de la cuenta de servicio.

gcloud

  1. Obtén el ID de la clave.
    El ID no es el mismo que el nombre visible o la string de clave. Puedes obtener el ID mediante el comando gcloud services api-keys list para enumerar las claves de tu proyecto.
  2. Usa elcomando gcloud services api-keys describepara describir la clave de API.
    gcloud services api-keys describe KEY_ID
    Si la clave de API está vinculada a una cuenta de servicio, se muestra el campo serviceAccountEmail.

Sondea operaciones de larga duración

Los métodos de API de la clave de API usan operaciones de larga duración. Si usas la API de REST para crear y administrar claves de API, se muestra un objeto de operación a partir de la solicitud del método inicial. Usa el nombre de la operación para sondear la operación de larga duración. Cuando se completa la solicitud de larga duración, el sondeo de la operación muestra los datos de la solicitud de larga duración.

Para sondear una operación de API de claves de API de larga duración, usa el método operations.get.

Reemplaza OPERATION_NAME por el nombre de la operación que muestra la operación de larga duración. Por ejemplo, operations/akmf.p7-358517206116-cd10a88a-7740-4403-a8fd-979f3bd7fe1c.

curl -X GET
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
"https://apikeys.googleapis.com/v2/OPERATION_NAME"

Límites de las claves de API

Puedes crear hasta 300 claves de API por proyecto. Este es un límite del sistema y no se puede cambiar mediante una solicitud de aumento de cuota. Si se necesitan más claves de API, debes usar más de un proyecto.

Puedes agregar hasta 1,200 restricciones de aplicación a una clave de API.

¿Qué sigue?