Blog

Wie man sich bei Google Cloud Platform mit der aktiven gcloud-Konfiguration in Go authentifiziert

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Wenn Sie ein Kommandozeilenprogramm für Google Cloud Platform erstellen möchten, wäre es toll, wenn Sie sich mit der aktiven gcloud-Konfiguration authentifizieren könnten. Leider unterstützt keine der Google Cloud Client-Bibliotheken die Verwendung der gcloud-Anmeldeinformationen. In diesem Blog werde ich Ihnen eine kleine Go-Bibliothek vorstellen, mit der Sie genau das tun können.

Wie benutzt man es?

Es ist wirklich einfach. Sie importieren das Paket github.com/binxio/gcloudconfig und rufen Sie die Funktion GetCredentials auf, wie unten gezeigt:

package main

import "github.com/binxio/gcloudconfig"

func main() {
    name := ""
    credentials, err := gcloudconfig.GetCredentials(name)
    ...
}

Der Name gibt die Konfiguration an, die Sie verwenden möchten, oder die aktuell aktive Konfiguration, wenn diese nicht angegeben ist. Die Anmeldeinformationen können bei der Erstellung eines Service-Clients übergeben werden, wie unten gezeigt:

    computeService, err := compute.NewService(ctx,
                                 option.WithCredentials(credentials))

Wenn die Eigenschaft core/project festgelegt wurde, ist sie auch in den Anmeldeinformationen verfügbar:

    project := credentials.ProjectId

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. Wenn Sie auf andere Einstellungen in der Konfiguration zugreifen möchten, verwenden Sie GetConfig.

Wie funktioniert das?

Die Funktion führt den Befehl gcloud config config-helper aus, der ein gcloud-Helfer für die Bereitstellung von Authentifizierungs- und Konfigurationsdaten für externe Tools ist. Sie gibt ein Zugriffstoken, ein id-Token, den Namen der aktiven Konfiguration und alle zugehörigen Konfigurationseigenschaften zurück:

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

Wenn das Token abgelaufen ist, 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 allerdings sehr 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 Kommandozeilenprogramm in Go für die Google Cloud Platform zu erstellen, das sich in das gcloud-Ökosystem integriert. Es ist bedauerlich, dass der config-helper als flüchtige Schnittstelle dokumentiert ist. 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 leisten würde.

Wir haben auch eine Bibliothek für die Authentifizierung mit gcloud-Anmeldeinformationen in Python 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.