Utilizzo di chiavi API
Questa pagina descrive come utilizzare le chiavi API in API Gateway.
Una chiave API è una stringa che identifica un Google Cloud progetto ai fini di quota, fatturazione e monitoraggio. Gli sviluppatori generano una chiave API in un progetto nella console Google Cloud . e la incorporano in ogni chiamata all'API come parametro di query o in un'intestazione della richiesta.
Se specifichi un requisito della chiave API nella configurazione dell'API, API Gateway utilizza la chiave API per cercare il progetto Google Cloud associato. API Gateway rifiuta le richieste, a meno che la chiave API non sia stata generata nel tuo progetto Google Cloud o in altri progettiGoogle Cloud in cui l'API è stata abilitata.
Per creare una chiave API o visualizzare le chiavi API già disponibili nel tuo progetto Google Cloud , vai alla pagina API e servizi > Credenziali.
Utilizzare una chiave API
Per utilizzare le funzionalità di API Gateway, ad esempio le quote, puoi inserire una chiave API in modo che API Gateway possa identificare il Google Cloud progetto a cui è associata l'applicazione client.
Configurare l'autenticazione con chiave API per API Gateway
Per proteggere l'accesso al gateway utilizzando una chiave API:
- Attiva il supporto delle chiavi API per il tuo servizio. Inserisci il seguente comando, dove:
- MANAGED_SERVICE_NAME specifica il nome del servizio gestito creato durante il deployment dell'API. Puoi visualizzarlo nella proprietà Servizio gestito elencata con il comando
gcloud api-gateway apis describe. - PROJECT_ID specifica il nome del tuo progetto Google Cloud .
Ad esempio:gcloud services enable MANAGED_SERVICE_NAME.apigateway.PROJECT_ID.cloud.goog
gcloud services enable my-api-123abc456def1.apigateway.my-project.cloud.goog
- MANAGED_SERVICE_NAME specifica il nome del servizio gestito creato durante il deployment dell'API. Puoi visualizzarlo nella proprietà Servizio gestito elencata con il comando
- Modifica la specifica OpenAPI utilizzata per creare la configurazione API in modo da includere le istruzioni per applicare un criterio di sicurezza per la convalida della chiave API su tutto il traffico. Aggiungi il tipo
securityesecurityDefinitionsosecuritySchemescome mostrato di seguito:OpenAPI 2.0
# openapi2-functions.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloGET security: - api_key: [] responses: '200': description: A successful response schema: type: string securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query"
securityDefinitionconfigura l'API in modo che richieda una chiave API trasmessa come parametro di query denominatokeyquando viene richiesto l'accesso a tutti i percorsi definiti nella specifica.OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backend: functions_backend: address: https://GATEWAY_LOCATION-PROJECT_ID.cloudfunctions.net/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend components: # This section configures basic authentication with an API key. securitySchemes: google_api_key: type: apiKey name: x-api-key in: header security: - google_api_key: [] paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
securitySchemesconfigura l'API in modo che richieda una chiave API trasmessa come parametro di query denominatokeyquando viene richiesto l'accesso a tutti i percorsi definiti nella specifica. - Crea una nuova configurazione API con la descrizione OpenAPI modificata utilizzando questo comando:
Ad esempio:gcloud api-gateway api-configs create NEW_CONFIG_ID \ --api=API_ID --openapi-spec=NEW_API_DEFINITION \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
gcloud api-gateway api-configs create my-config-key \ --api=my-api --openapi-spec=openapi-functions.yaml \ --project=my-project --backend-auth-service-account=0000000000000compute@developer.gserviceaccount.com
- Esegui questo comando per aggiornare il gateway esistente con la nuova configurazione API:
Ad esempio:gcloud api-gateway gateways update GATEWAY_ID \ --api=API_ID --api-config=NEW_CONFIG_ID \ --location=GATEWAY_LOCATION --project=PROJECT_ID
gcloud api-gateway gateways update my-gateway \ --api=my-api --api-config=my-config-key \ --location=us-central1 --project=my-project
Limitazione delle chiavi API
Per impostazione predefinita, le chiavi API non sono soggette a restrizioni, il che le rende vulnerabili all'utilizzo non autorizzato. Aggiungi limitazioni API quando possibile. Le restrizioni delle API specificano quali API possono essere chiamate utilizzando la chiave API. Tutte le chiavi API utilizzate dalle applicazioni di produzione devono avere limitazioni API.
Per aggiungere limitazioni dell'API:
Trova il titolo dell'API come indicato nella configurazione API. Nel seguente esempio, il titolo dell'API è
My Example Config:OpenAPI 2.0
# openapi.yaml swagger: '2.0' info: title: My Example Config description: Sample API on API Gateway version: 1.0.0 ...
OpenAPI 3.x
# openapi.yaml openapi: 3.0.4 info: title: My Example Config description: Sample API on API Gateway version: 1.0.0 ...
Nella console Google Cloud , vai alla pagina API e servizi > Credenziali.
Seleziona il nome della chiave API che vuoi utilizzare per la tua API.
Nella sezione Restrizioni delle API della pagina dei dettagli della chiave API, fai clic su Limita chiave.
Seleziona l'API a cui la tua chiave API verrà utilizzata per accedere dall'elenco a discesa delle API disponibili. Ad esempio, seleziona
My Example Config.Fai clic su Salva.
La limitazione dovrebbe essere applicata a breve.