Blog

Wie man sich mit gcloud-Anmeldedaten in Python authentifiziert

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 20, 2025
2 Minuten

Wenn Sie ein Python-Befehlszeilendienstprogramm für Google Cloud Platform erstellen möchten, wäre es großartig, wenn Sie die aktiven gcloud-Anmeldeinformationen in Python verwenden könnten. Leider unterstützen die Google Cloud Client-Bibliotheken die Verwendung der gcloud-Anmeldeinformationen nicht. In diesem Blog werde ich eine kleine Python-Bibliothek vorstellen, mit der Sie genau das tun können.

So verwenden Sie die gcloud-Anmeldeinformationen in Python

Es ist wirklich einfach. Sie installieren das Paket gcloud-config-helper und rufen die Funktion default auf, wie unten gezeigt:

import gcloud_config_helper
credentials, project = gcloud_config_helper.default()

Sie übergeben die Anmeldeinformationen wie folgt an einen Service-Client:

c = compute_v1.InstancesClient(credentials=credentials)
for zone, instances in c.aggregated_list(request={"project": project}):
    for instance in instances.instances:
        print(f'found {instance.name} in zone {zone}')

Das ist alles, was es zu sagen gibt! Sehen Sie sich das vollständige Beispiel für die Verwendung der von gcloud konfigurierten Anmeldedaten an.

Wie funktioniert das?

Die Bibliothek führt den Befehl gcloud config config-helper aus. Dieser Befehl liefert Authentifizierungs- und Konfigurationsdaten an externe Tools. Er gibt ein Zugriffstoken, ein id-Token, den Namen der aktiven Konfiguration und alle zugehörigen Konfigurationseigenschaften zurück (siehe unten):

    configuration:
      active_configuration: playground
      properties:
        core:
          account: markvanholsteijn@binx.io
          project: playground
        ...
    credential:
      access_token: ya12.YHYeGSG8flksArMeVRXsQB4HFQ8aodXiGdBgfEdznaVuAymcBGHS6pZSp7RqBMjSzHgET08BmH3TntQDOteVPIQWZNJmiXZDr1i99ELRqDxDAP8Jk1RFu1xew7XKeQTOTnm22AGDh28pUEHXVaXtRN8GZ4xHbOoxrTt7yBG3R7ff9ajGVYHYeGSG8flksArMeVRXsQB4HFQ8aodXiGdBgfEdznaVuAymcBGHS6pZSp7RqBMjSzHgET08BmH3TntQDOteVPIQWZNJmiXZDr1i99ELRqDxDAP8Jk1RFu1xew7XKeQTOTnm22AGDh28pUEHXVaXtRN8GZ4xHbOoxrTt7yBG3R7ff9ajGV
      id_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI5OTk5OTk5OTk5OS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6Ijk5OTk5OTk5OTk5LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTExMTExMTExMTEyMjIyMjIyMjIyMjIiLCJoZCI6ImJpbnguaW8iLCJlbWFpbCI6Im1hcmt2YW5ob2xzdGVpam5AYmlueC5pbyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoic2Rmc2prZGZqc2tkZnNrZGZqcyIsImlhdCI6MTU4ODcwMTY4MywiZXhwIjoxNTg4NzA1MjgzfQ.-iRKFf69ImE93bvUGBxn3Fa5aPBjhyzeWfLzuaNdIGI
      token_expiry: '2020-05-05T19:01:22Z'

Wenn das Token abläuft, ruft die Bibliothek den Helfer erneut auf, um es zu aktualisieren. Beachten Sie, dass Google nicht sicher ist, ob der config-helper eine gute Sache ist. Wenn Sie gcloud config config-helper --help lesen, werden Sie den folgenden Satz bemerken:

Dieser Befehl ist ein internes Implementierungsdetail und kann sich ohne Ankündigung ändern oder verschwinden.

Für die Entwicklung von Kommandozeilenprogrammen, die sich in das Google Cloud SDK-Ökosystem integrieren, wäre es wirklich praktisch, wenn Google einen offiziellen Weg zur Verfügung stellen würde, um die aktive gcloud-Konfiguration und die Anmeldedaten zu erhalten.

Fazit

Mit Hilfe dieser Bibliothek ist es möglich, ein Befehlszeilendienstprogramm in Python für die Google Cloud Platform zu erstellen, das die gcloud-Anmeldedaten in Python verwendet. Es ist bedauerlich, dass Google den config-helper als flüchtige Schnittstelle kennzeichnet. Angesichts der Einfachheit der Schnittstelle vertraue ich darauf, dass diese Bibliothek mit zukünftigen Änderungen zurechtkommt. Es wäre sogar noch besser, wenn Google offiziellen Support anbieten würde.

Wir haben auch eine Bibliothek für die Authentifizierung mit gcloud-Anmeldeinformationen in Go erstellt.

Bild von Kerstin Riemer aus Pixabay

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.