Clientbibliotheken erleichtern den Zugriff auf Google Cloud APIs mit einer unterstützten Sprache. Sie können Google Cloud APIs direkt verwenden, indem Sie Roh-Anfragen an den Server senden. Clientbibliotheken bieten jedoch Vereinfachungen, die den zu schreibenden Code erheblich reduzieren. Dies gilt insbesondere für die Authentifizierung, da die Clientbibliotheken Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC)unterstützen.
Wenn Sie Anmeldedatenkonfigurationen (JSON, Dateien oder Streams) von einer externen Quelle (z. B. einem Kunden) akzeptieren, lesen Sie die Sicherheitsanforderungen für die Verwendung von Anmeldedatenkonfigurationen aus externen Quellen.
Standardanmeldedaten für Anwendungen mit Clientbibliotheken verwenden
Wenn Sie Ihre Anwendung mit den Standardanmeldedaten für Anwendungen authentifizieren möchten, müssen Sie zuerst Standardanmeldedaten für Anwendungen für die Umgebung einrichten, in der Ihre Anwendung ausgeführt wird. Wenn Sie die Clientbibliothek zum Erstellen eines Clients verwenden, prüft die Clientbibliothek automatisch die Anmeldedaten, die Sie für ADC bereitgestellt haben, und verwendet sie, um die von Ihrem Code verwendeten APIs zu authentifizieren. Ihre Anwendung muss Tokens nicht explizit authentifizieren oder verwalten. Diese Anforderungen werden automatisch von den Authentifizierungsbibliotheken verwaltet.
Für eine lokale Entwicklungsumgebung können Sie ADC mit Ihren Nutzeranmeldedaten oder mit der Identitätsübernahme des Dienstkontos einrichten. Verwenden Sie dazu die gcloud CLI. In Produktionsumgebungen richten Sie ADC ein, indem Sie ein Dienstkonto anhängen.
Beispiel für die Clienterstellung
In den folgenden Codebeispielen wird ein Client für den Cloud Storage-Dienst erstellt. Ihr Code benötigt wahrscheinlich andere Clients. Diese Beispiele sollen nur zeigen, wie Sie einen Client erstellen und ihn ohne Code zur expliziten Authentifizierung verwenden können.
Bevor Sie die folgenden Beispiele ausführen können, müssen Sie die folgenden Schritte ausführen:
Go
Java
Node.js
PHP
Python
Ruby
API-Schlüssel mit Clientbibliotheken verwenden
Sie können API-Schlüssel nur mit Clientbibliotheken für APIs verwenden, die API-Schlüssel akzeptieren. Außerdem darf der API-Schlüssel keine API-Einschränkung haben, die seine Verwendung für die API verhindert.
Weitere Informationen zu API-Schlüsseln, die im Expressmodus erstellt wurden, finden Sie in den FAQs zum Google Cloud-Expressmodus.
In diesem Beispiel wird die Cloud Natural Language API verwendet, die API-Schlüssel akzeptiert, um zu zeigen, wie Sie einen API-Schlüssel für die Bibliothek bereitstellen.
C#
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
C++
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
Go
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
Node.js
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
Python
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
Ruby
Sie müssen die Natural Language-Clientbibliothek installieren, um dieses Beispiel auszuführen.
Wenn Sie API-Schlüssel in Ihren Anwendungen verwenden, achten Sie darauf, dass sie sowohl beim Speichern als auch bei der Übertragung sicher sind. Wenn Sie Ihre API-Schlüssel öffentlich freigeben, kann dies zu unerwarteten Kosten in Ihrem Konto führen. Weitere Informationen finden Sie unter Best Practices für die Verwaltung von API-Schlüsseln.
Sicherheitsanforderungen für die Verwendung von Anmeldedatenkonfigurationen aus externen Quellen
In der Regel generieren Sie Anmeldedatenkonfigurationen mit gcloud CLI Befehlen oder über die Google Cloud Console. Mit der gcloud CLI können Sie beispielsweise eine lokale ADC-Datei oder eine Anmeldekonfigurationsdatei generieren. Ebenso können Sie über die Google Cloud Console einen Dienstkontoschlüssel erstellen und herunterladen.
In einigen Anwendungsfällen werden Ihnen jedoch Anmeldedatenkonfigurationen von einer externen Entität zur Verfügung gestellt. Diese Anmeldedatenkonfigurationen sollen zur Authentifizierung bei Google APIs verwendet werden.
Einige Arten von Anmeldedatenkonfigurationen enthalten Endpunkte und Dateipfade, die von den Authentifizierungsbibliotheken zum Abrufen eines Tokens verwendet werden. Wenn Sie Anmeldedatenkonfigurationen von einer externen Quelle akzeptieren, müssen Sie die Konfiguration validieren, bevor Sie sie verwenden. Wenn Sie die Konfiguration nicht validieren, kann ein böswilliger Akteur die Anmeldedaten verwenden, um Ihre Systeme und Daten zu kompromittieren.
Anmeldedatenkonfigurationen aus externen Quellen validieren
Wie Sie Ihre externen Anmeldedaten validieren müssen, hängt davon ab, welche Arten von Anmeldedaten Ihre Anwendung akzeptiert.
Dienstkontoschlüssel validieren
Wenn Ihre Anwendung nur Dienstkontoschlüssel akzeptiert, verwenden Sie einen Anmeldedaten-Loader, der speziell für Dienstkontoschlüssel entwickelt wurde, wie in den folgenden Beispielen gezeigt. Der typspezifische Anmeldedaten-Loader parst nur die Felder, die für Dienstkontoschlüssel vorhanden sind, und deckt keine Sicherheitslücken auf.
C#
var saCredential = CredentialFactory.FromStream<ServiceAccountCredential>(stream);
C++
auto cred = google::cloud::MakeServiceAccountCredentials(json)
Java
ServiceAccountCredentials credentials =
ServiceAccountCredentials.fromStream(credentialsStream);
Node.js
const keys = JSON.parse(json_input)
const authClient = JWT.fromJSON(keys);
PHP
$cred = new Google\Auth\Credentials\ServiceAccountCredentials($scope, $jsonKey);
Python
cred = service_account.Credentials.from_service_account_info(json_data)
Ruby
creds = Google::Auth::ServiceAccountCredentials.make_creds(json_key_io: json_stream)
Wenn Sie keinen typspezifischen Anmeldedaten-Loader verwenden können, validieren Sie die Anmeldedaten, indem Sie bestätigen, dass der Wert für das Feld type service_account ist. Wenn der Wert für das Feld type ein anderer Wert ist, verwenden Sie den Dienstkontoschlüssel nicht.
Andere Anmeldedatenkonfigurationen validieren
Wenn Ihre Anwendung jede Art von Anmeldedaten außer einem Dienstkontoschlüssel akzeptiert, müssen Sie eine zusätzliche Überprüfung durchführen. Beispiele für andere Arten von Anmeldedatenkonfigurationen sind ADC-Anmeldedatendateien, Anmeldedatendateien für die Workload Identity-Föderation, oder Anmeldekonfigurationsdateien für die Mitarbeiteridentitätsföderation.
In der folgenden Tabelle sind die Felder aufgeführt, die Sie validieren müssen, wenn sie in Ihren Anmeldedaten vorhanden sind. Nicht alle diese Felder sind für alle Anmeldedatenkonfigurationen vorhanden.
| Feld | Zweck | Erwarteter Wert |
|---|---|---|
service_account_impersonation_url |
Die Authentifizierungsbibliotheken verwenden dieses Feld, um auf einen Endpunkt zuzugreifen, um ein Zugriffstoken für das Dienstkonto zu generieren, dessen Identität übernommen wird. | https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/service account email:generateAccessToken |
token_url |
Die Authentifizierungsbibliotheken senden ein externes Token an diesen Endpunkt, um es gegen ein föderiertes Zugriffstoken auszutauschen. | https://sts.googleapis.com/v1/token |
credential_source.file |
Die Authentifizierungsbibliotheken lesen ein externes Token aus der Datei am
Speicherort, der durch dieses Feld angegeben wird, und senden es an den
token_url Endpunkt.
|
Der Pfad zu einer Datei, die ein externes Token enthält. Sie sollten diesen Pfad kennen. |
credential_source.url |
Ein Endpunkt, der ein externes Token zurückgibt. Die Authentifizierungsbibliotheken
senden eine Anfrage an diese URL und senden die Antwort an den
token_url Endpunkt.
|
Einer der folgenden Werte:
|
credential_source.executable.command |
Wenn die GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
Umgebungsvariable auf 1 gesetzt ist, führen die Authentifizierungs
Bibliotheken diesen Befehl oder diese ausführbare Datei aus.
|
Eine ausführbare Datei oder ein Befehl, der ein externes Token zurückgibt. Sie sollten diesen Befehl kennen und prüfen, ob er sicher ist. |
credential_source.aws.url |
Die Authentifizierungsbibliotheken senden eine Anfrage an diese URL, um ein AWS-Sicherheitstoken abzurufen. |
Einer der folgenden genauen Werte:
|
credential_source.aws.region_url |
Die Authentifizierungsbibliotheken senden eine Anfrage an diese URL, um die aktive AWS-Region abzurufen. |
Einer der folgenden genauen Werte:
|
credential_source.aws.imdsv2_session_token_url |
Die Authentifizierungsbibliotheken senden eine Anfrage an diese URL, um das AWS-Sitzungstoken abzurufen. |
Einer der folgenden genauen Werte:
|
Nächste Schritte
- Erfahren Sie mehr über Standardanmeldedaten für Anwendungen.
- Weitere Informationen zu API-Schlüsseln.
- Übersicht über Authentifizierungsmethoden