Utilizzare le chiavi API

Questa pagina descrive come utilizzare le chiavi API in API Gateway.

Panoramica

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.

Crea una chiave API

Per creare una chiave API o visualizzare le chiavi API già disponibili nel tuo progetto Google Cloud , vai alla pagina API e servizi > Credenziali e completa i passaggi descritti in Creare una chiave API.

Vai a credenziali

Configurare l'autenticazione con chiave API per API Gateway

Configura l'autenticazione con chiave API per API Gateway per proteggere l'accesso al gateway utilizzando una chiave API, come descritto nelle sezioni seguenti.

  1. Attiva il supporto delle chiavi API per il tuo servizio.

    ConsoleGoogle Cloud

    Segui questi passaggi:

    1. Nella console Google Cloud , vai ad API e servizi > Libreria.

      Vai alla libreria API e servizi

    2. Nella barra di ricerca, inserisci il nome del servizio gestito dell'API. Puoi trovare questo valore nella colonna Servizio gestito per la tua API nella home page delle API. Ad esempio:
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. Fai clic sulla scheda del servizio per visualizzare la pagina di destinazione.
    4. Nella pagina di destinazione del servizio, fai clic su Attiva.

    Google Cloud CLI

    Inserisci questo 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.

    gcloud services enable MANAGED_SERVICE_NAME

    Ad esempio:

    gcloud services enable my-api-123abc456def1.apigateway.my-project.cloud.goog
  2. 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 security e securityDefinitions o securitySchemes come mostrato:

    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"

    securityDefinition configura l'API in modo che richieda una chiave API trasmessa come parametro di query denominato key quando 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:
      backends:
        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

    securitySchemes configura l'API in modo che richieda una chiave API trasmessa come parametro di query denominato key quando viene richiesto l'accesso a tutti i percorsi definiti nella specifica.

  3. Crea una nuova configurazione API con la descrizione OpenAPI modificata utilizzando questo comando:
    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
    Ad esempio:
    gcloud api-gateway api-configs create