API-Schlüssel verwenden
Auf dieser Seite wird beschrieben, wie Sie API-Schlüssel in API Gateway verwenden.
Übersicht
Ein API-Schlüssel ist ein String, der einGoogle Cloud -Projekt zu Kontingent-, Abrechnungs- und Monitoringzwecken identifiziert. Entwickler generieren einen API-Schlüssel in einem Projekt in der Google Cloud -Console. Anschließend betten sie diesen Schlüssel in jeden Aufruf an Ihre API als Abfrageparameter oder in einen Anfrageheader ein.
Wenn Sie in Ihrer API-Konfiguration das Anfordern von API-Schlüsseln festlegen, verwendet API Gateway den API-Schlüssel, um das zugehörige Google Cloud -Projekt zu suchen. API Gateway lehnt Anfragen generell ab, es sei denn, der API-Schlüssel wurde in Ihrem Google Cloud -Projekt oder in anderenGoogle Cloud -Projekten generiert, in denen die API aktiviert wurde.
API-Schlüssel erstellen
Wenn Sie einen API-Schlüssel erstellen oder bereits verfügbare API-Schlüssel in Ihrem Google Cloud -Projekt ansehen möchten, rufen Sie die Seite APIs & Dienste > Anmeldedaten auf und folgen Sie der Anleitung unter API-Schlüssel erstellen.
API-Schlüsselauthentifizierung für API Gateway konfigurieren
Konfigurieren Sie die API-Schlüsselauthentifizierung für API Gateway, um den Zugriff auf Ihr Gateway mit einem API-Schlüssel zu sichern, wie in den folgenden Abschnitten beschrieben.
- Aktivieren Sie die API-Schlüsselunterstützung für Ihren Dienst.
Google Cloud Console
Gehen Sie dazu so vor:
- Rufen Sie in der Google Cloud Console die Seite APIs und Dienste > Bibliothek auf.
- Geben Sie in der Suchleiste den Namen des verwalteten Dienstes der API ein. Sie finden diesen Wert in der Spalte Verwalteter Dienst für Ihre API auf der Landing page der APIs. Beispiel:
my-api-123abc456def1.apigateway.my-project.cloud.goog
- Klicken Sie auf die Dienstkarte, um die Landingpage aufzurufen.
- Klicken Sie auf der Landing page für Ihren Dienst auf Aktivieren.
Google Cloud CLI
Geben Sie den folgenden Befehl ein, wobei MANAGED_SERVICE_NAME den Namen des verwalteten Dienstes angibt, der beim Bereitstellen der API erstellt wurde. Dies kann im Attribut "Verwalteter Dienst" angezeigt werden, das mit dem Befehl
gcloud api-gateway apis describeaufgelistet wird.gcloud services enable MANAGED_SERVICE_NAME
Beispiel:
gcloud services enable my-api-123abc456def1.apigateway.my-project.cloud.goog
- Ändern Sie die OpenAPI-Spezifikation, mit der Sie Ihre API-Konfiguration erstellt haben, um Anweisungen zur Durchsetzung einer Sicherheitsrichtlinie für die API-Schlüsselvalidierung für den gesamten Traffic aufzunehmen. Fügen Sie den Typ
securityundsecurityDefinitionsodersecuritySchemeswie gezeigt hinzu: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"
Die
securityDefinitionkonfiguriert die API so, dass ein API-Schlüssel als Abfrageparameter mit dem Namenkeyübergeben werden muss, wenn Zugriff auf alle in der Spezifikation definierten Pfade angefordert wird.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
Die
securitySchemeskonfiguriert die API so, dass ein API-Schlüssel als Abfrageparameter mit dem Namenkeyübergeben werden muss, wenn Zugriff auf alle in der Spezifikation definierten Pfade angefordert wird. - Erstellen Sie mit dem folgenden Befehl eine neue API-Konfiguration mit der geänderten OpenAPI-Beschreibung:
Beispiel: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
- Führen Sie den folgenden Befehl aus, um Ihr bestehendes Gateway mit der neuen API-Konfiguration zu aktualisieren:
Beispiel: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
API-Schlüssel einschränken
Standardmäßig sind API-Schlüssel uneingeschränkt, was sie anfällig für nicht autorisierte Verwendung macht. Fügen Sie nach Möglichkeit API-Einschränkungen hinzu. API-Einschränkungen geben an, welche APIs mit dem API-Schlüssel aufgerufen werden können. Für alle API-Schlüssel, die in Produktionsanwendungen verwendet werden, sollten API-Einschränkungen eingerichtet sein.
So fügen Sie API-Einschränkungen hinzu:
Suchen Sie nach dem Titel der API, wie in der API-Konfiguration angegeben. Im folgenden Beispiel lautet der API-Titel
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 ...
Rufen Sie in der Google Cloud Console die Seite APIs & Dienste > Anmeldedaten auf.
Wählen Sie den Namen des API-Schlüssels aus, den Sie für Ihre API verwenden möchten.
Klicken Sie auf der Detailseite des API-Schlüssels im Abschnitt API-Einschränkungen auf Schlüssel einschränken.
Wählen Sie aus der Drop-down-Liste der verfügbaren APIs die API aus, für die Ihr API-Schlüssel verwendet wird. Wählen Sie beispielsweise
My Example Configaus.Klicken Sie auf Speichern.
Die Einschränkung sollte in Kürze wirksam werden.
API-Schlüssel verwenden
Wenn Sie API Gateway-Funktionen wie Kontingente verwenden möchten, können Sie einen API-Schlüssel übergeben, damit API Gateway das Google Cloud -Projekt identifizieren kann, dem die Clientanwendung zugeordnet ist.
Sie können ihn beispielsweise mit dem Abfrageparameter key in einem curl-Aufruf übergeben:
https://GATEWAY_URL/hello?key=API_KEY