Sie können mit API-Schlüsseln den Zugriff auf bestimmte oder alle Methoden in einer API einschränken. Auf dieser Seite wird beschrieben, wie Sie den API-Zugriff auf Clients mit einem API-Schlüssel einschränken und API-Schlüssel erstellen.
Der Extensible Service Proxy (ESP) verwendet Service ControlAPI, um einen API-Schlüssel und seine Verknüpfung mit der aktivierten API eines Projekts zu prüfen. Wenn Sie eine API-Schlüsselanforderung in Ihrer API festlegen, werden Anfragen an die geschützte Methode, Klasse oder API abgelehnt, es sei denn, sie haben einen Schlüssel, der in Ihrem Projekt oder in anderen Projekten von Entwicklern generiert wurde, denen Zugriff zum Aktivieren Ihrer API gewährt wurde. Das Projekt, in dem der API-Schlüssel erstellt wurde, wird nicht protokolliert und nicht in den Anfrage-Header eingefügt. Sie können jedoch das Google Cloud-Projekt, mit dem ein Client verknüpft ist, auf der Seite Endpoints > Dienste aufrufen. Eine Beschreibung hierzu finden Sie unter Nach einem bestimmten Nutzerprojekt filtern.
Informationen darüber, in welchem Google Cloud-Projekt ein API-Schlüssel erstellt werden sollte, finden Sie unter Durch einen API-Schlüssel geschützte APIs freigeben.
Standardmäßig ist in gRPC-Diensten für den Zugriff auf alle API-Methoden ein API-Schlüssel erforderlich. Sie können die API-Schlüsselanforderung für die gesamte API oder für bestimmte Methoden deaktivieren. Dazu fügen Sie Ihrer Dienstkonfiguration einen Nutzungsabschnitt hinzu und konfigurieren Regeln und Selektoren, wie in den folgenden Verfahren beschrieben.
Zugriff auf alle API-Methoden einschränken oder gewähren
So legen Sie fest, dass für den Zugriff auf Ihre API kein API-Schlüssel erforderlich ist:
Öffnen Sie die gRPC-Dienstkonfigurationsdatei Ihres Projekts in einem Texteditor und rufen Sie den Abschnitt
usage
auf oder fügen Sie ihn hinzu.Legen Sie im Abschnitt
usage
die Regelallow_unregistered_calls
fest. Der Platzhalter"*"
inselector
gibt an, dass die Regel für alle Methoden in der API gilt.usage: rules: # All methods can be called without an API Key. - selector: "*" allow_unregistered_calls: true
API-Schlüsseleinschränkung für eine Methode entfernen
So deaktivieren Sie die API-Schlüsselvalidierung für eine bestimmte Methode trotz eingeschränktem Zugriff auf die API:
Öffnen Sie die gRPC-Dienstkonfigurationsdatei Ihres Projekts in einem Texteditor und rufen Sie den Abschnitt
usage
auf oder fügen Sie ihn hinzu.Legen Sie im Abschnitt
usage
die Regelallow_unregistered_calls
fest. Der Eintragselector
gibt an, dass die Regel nur für die angegebene Methode gilt – in diesem FallListShelves
.usage: rules: # ListShelves method can be called without an API Key. - selector: endpoints.examples.bookstore.Bookstore.ListShelves allow_unregistered_calls: true
API mithilfe eines API-Schlüssels aufrufen
Wie APIs aufgerufen werden, hängt davon ab, ob der Aufruf von einem gRPC- oder HTTP-Client aus erfolgt.
gRPC-Clients
Wenn eine Methode einen API-Schlüssel erfordert, müssen gRPC-Clients den Schlüsselwert als x-api-key
Metadaten mit dem Methodenaufruf übergeben.
Python
Java
Go
Node.js
HTTP-Clients
Wenn Sie Cloud Endpoints für die HTTP-Transcodierung von gRPC verwenden, können HTTP-Clients den Schlüssel wie für OpenAPI-Dienste als Abfrageparameter senden.
Durch einen API-Schlüssel geschützte APIs freigeben
API-Schlüssel sind dem Google Cloud-Projekt zugeordnet, in dem sie erstellt wurden. Wenn Sie für Ihre API das Anfordern eines API-Schlüssels festgelegt haben, hängt das Google Cloud-Projekt, in dem der API-Schlüssel erstellt wird, von den Antworten auf die folgenden Fragen ab:
- Müssen Sie zwischen den Aufrufern Ihrer API unterscheiden, damit Sie Endpoints-Features wie Kontingente verwenden können?
- Haben alle Aufrufer Ihrer API eigene Google Cloud-Projekte?
- Müssen Sie verschiedene API-Schlüsseleinschränkungen einrichten?
Sie können sich am folgenden Entscheidungsbaum orientieren, um festzulegen, in welchem Google Cloud-Projekt der API-Schlüssel erstellt werden soll.
Berechtigung zum Aktivieren der API gewähren
Wenn Sie zwischen den Aufrufern Ihrer API unterscheiden müssen und jeder Aufrufer über ein eigenes Google Cloud-Projekt verfügt, können Sie Hauptkonten die Berechtigung erteilen, die API in ihren eigenen Google Cloud-Projekten zu aktivieren. Dadurch können Nutzer einen eigenen API-Schlüssel für die Verwendung mit Ihrer API erstellen.
Nehmen Sie als Beispiel ein Team, das eine API zur internen Verwendung durch verschiedene Clientprogramme in einem Unternehmen erstellt hat. Dabei gibt es für jedes Clientprogramm ein eigenes Google Cloud-Projekt. Zur Unterscheidung zwischen den Aufrufern der API muss der API-Schlüssel dann für jeden Aufrufer in einem anderen Google Cloud-Projekt erstellt werden. Den Mitarbeitern kann die Berechtigung zum Aktivieren der API in dem Google Cloud-Projekt, mit dem das Clientprogramm verknüpft ist, erteilt werden.
So ermöglichen Sie Nutzern, einen eigenen API-Schlüssel zu erstellen:
- Erteilen Sie jedem Nutzer im Google Cloud-Projekt, in dem die API konfiguriert ist, die Berechtigung zum Aktivieren Ihrer API.
- Teilen Sie den Nutzern mit, dass sie Ihre API im eigenen Google Cloud-Projekt aktivieren und einen API-Schlüssel erstellen können.
Separates Google Cloud-Projekt für jeden Aufrufer erstellen
Wenn Sie zwischen Aufrufern Ihrer API unterscheiden müssen und nicht alle Aufrufer über ein Google Cloud-Projekt verfügen, können Sie für jeden Aufrufer ein separates Google Cloud-Projekt und einen separaten API-Schlüssel erstellen. Überlegen Sie sich sinnvolle Projektnamen, bevor Sie die Projekte erstellen, damit Sie den Aufrufer, der mit dem jeweiligen Projekt verknüpft ist, einfach identifizieren können.
Beispiel: Ihre API wird von externen Kunden aufgerufen und Sie wissen nicht, wie die Clientprogramme, die Ihre API aufrufen, erstellt wurden. Einige Clients verwenden vielleicht Google Cloud-Dienste und haben ein Google Cloud-Projekt, andere aber nicht. Um zwischen den Aufrufern zu unterscheiden, müssen Sie für jeden Aufrufer ein separates Google Cloud-Projekt und einen separaten API-Schlüssel erstellen.
So erstellen Sie ein separates Google Cloud-Projekt und einen API-Schlüssel für jeden Aufrufer:
- Erstellen Sie ein separates Projekt für jeden Aufrufer.
- Aktivieren Sie die API in jedem Projekt und erstellen Sie einen API-Schlüssel.
- Geben Sie jedem Aufrufer den jeweiligen API-Schlüssel.
API-Schlüssel für jeden Aufrufer erstellen
Wenn Sie nicht zwischen Aufrufern Ihrer API unterscheiden müssen, aber Einschränkungen für API-Schlüssel einführen möchten, können Sie für jeden Aufrufer in demselben Projekt einen separaten API-Schlüssel erstellen.
So erstellen Sie einen API-Schlüssel für jeden Aufrufer im selben Projekt:
- Erstellen Sie in dem Projekt, in dem die API konfiguriert ist, oder in einem Projekt, in dem die API aktiviert ist, für jeden Kunden einen API-Schlüssel mit den gewünschten API-Schlüsseleinschränkungen.
- Geben Sie jedem Aufrufer den jeweiligen API-Schlüssel.
Einen einzigen API-Schlüssel für alle Aufrufer erstellen
Wenn Sie nicht zwischen den Aufrufern Ihrer API unterscheiden und keine API-Einschränkungen hinzufügen müssen, aber trotzdem einen API-Schlüssel voraussetzen möchten (um beispielsweise den anonymen Zugriff zu verhindern), können Sie einen API-Schlüssel erstellen, der von allen Aufrufern verwendet wird.
So erstellen Sie einen einzigen API-Schlüssel für alle Aufrufer:- Erstellen Sie entweder in dem Projekt, in dem die API konfiguriert ist, oder in einem Projekt, in dem die API aktiviert ist, einen API-Schlüssel für alle Aufrufer.
- Geben Sie jedem Aufrufer denselben API-Schlüssel.