Anfragen an Google Compute Engine autorisieren

Wenn Sie die Compute Engine API zur Verwaltung Ihrer Compute Engine-Ressourcen verwenden, können Sie die Anwendungen bei der API authentifizieren, indem Sie Anmeldedaten von einem Compute Engine-Dienstkonto anfordern. Mit Dienstkonten kann die Anwendung bei der API authentifiziert werden, ohne geheime Schlüssel in den Anwendungscode einzubetten.

Dienstkonten werden meist empfohlen, wenn die Anwendung Anfragen an die API autorisieren muss. Wenn Sie jedoch Entwicklungs- oder Verwaltungstools erstellen, bei denen Nutzer den Zugriff auf ihre Google Cloud-Ressourcen erlauben, verwenden Sie eine Nutzerautorisierung.

Die Compute Engine-Clientbibliothek und die Standardanmeldedaten für Anwendungen bieten die einfachste Möglichkeit, Anmeldedaten von einem Dienstkonto abzurufen. Mit diesen Paketen kann die Anwendung Anmeldedaten von verschiedenen verfügbaren Quellen anfordern, je nachdem, wo die Anwendung ausgeführt wird.

Auf Compute Engine-Instanzen ausgeführte Anwendungen

Bei der Ausführung von Anwendungen auf Compute Engine-Instanzen können Standardanmeldedaten von Anwendungen die Anmeldedaten über integrierte Dienstkonten anfordern. Unter Dienstkonten für Instanzen erstellen und aktivieren wird beschrieben, wie Sie Instanzen mit diesen integrierten Dienstkonten konfigurieren und die Anwendung auf einer Compute Engine-Instanz ausführen können.

Außerhalb der Google Cloud Platform ausgeführte Anwendungen

Bei der Ausführung von Anwendungen auf Systemen außerhalb der Google Cloud Platform können Sie Standardanmeldedaten von Anwendungen verwenden, um Anmeldedaten über Umgebungsvariablen auf diesen Systemen anzufordern. Unter Funktionsweise von Standardanmeldedaten für Anwendungen wird beschrieben, wie Umgebungsvariablen mit den erforderlichen Anmeldedaten konfiguriert werden.

Anwendungen im Entwicklungsstadium

Sie haben die Möglichkeit, während der lokalen Entwicklung von Anwendungen vorübergehend Nutzeranmeldedaten für Ihre Anwendung abzurufen. Dazu verwenden Sie die Daten von auth application-default login im gcloud-Tool. Dieser Befehl ist nützlich, wenn Sie Code entwickeln, der normalerweise ein Dienstkonto verwenden würde, Sie den Code aber in einer lokalen Entwicklungsumgebung ausführen müssen und es einfacher ist, Nutzeranmeldeinformationen bereitzustellen. Die Anmeldedaten gelten für alle API-Aufrufe, die die Clientbibliothek der Standardanmeldedaten für Anwendungen verwenden.

  1. Installieren Sie das gcloud-Tool auf den Entwicklungssystemen.

  2. Stellen Sie Ihre Anmeldedaten für das Tool mit dem Befehl gcloud auth application-default login bereit.

Die Anwendung ruft Anmeldedaten vom Tool ab. Später können Sie die Anwendung auf Compute Engine-Instanzen bereitstellen, bei denen die Anwendung die Anmeldedaten automatisch von den integrierten Dienstkonten anfordert, oder auf anderen Systemen, wo die Anmeldedaten in den Umgebungsvariablen angegeben werden.

Beispiel: Authentifizierung über Standardanmeldedaten für Anwendungen

Dieses Beispiel verwendet die Python-Clientbibliothek zum Authentifizieren und zum Stellen einer Anfrage an die Cloud Storage-API, damit die Buckets in einem Projekt aufgelistet werden. In diesem Beispiel wird das folgende Verfahren angewendet:

  1. Rufen Sie die erforderlichen Anmeldedaten zur Authentifizierung für die Cloud Storage API ab und initialisieren Sie den Cloud Storage-Dienst mit der Methode build() und den Anmeldedaten.
  2. Listen Sie Buckets in Cloud Storage auf.

Sie können dieses Beispiel auf einer Instanz ausführen, die Zugriff auf die Verwaltung von Buckets in Google Cloud Storage hat, auf Ihrem lokalen Computer nach Ausführung des Befehls gcloud auth application-default login oder nach dem Setzen einer Umgebungsvariable für die Verwendung von Standardanmeldedaten für Anwendungen.

import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Zugriff auf Google Cloud-Ressourcen anfordern, die Nutzern der Anwendung gehören

Wenn Sie Entwicklungs- oder Verwaltungstools erstellen, bei denen Nutzer den Zugriff auf ihre Google Cloud-Ressourcen erlauben, fordern Sie die Autorisierung über einen Standard-OAuth 2.0-Prozess an. Dabei müssen die Nutzer den Zugriff auf ihre Informationen über eine Nutzerautorisierung erlauben. Nachdem Ihre Anwendung Zugriff hat, kann sie die Compute Engine-Ressourcen im Projekt jedes Nutzers anzeigen oder ändern.

Begrenzen Sie in der Anfrage den Zugriffsbereich auf die Methoden und Nutzerinformationen, die die Anwendung benötigt. Geben Sie z. B. den Bereich compute.readonly an, wenn die Anwendung vorhandene Compute Engine-Ressourcen anzeigt, aber keine Ressourcen für die Nutzer erstellt oder ändert.

Bereich Bedeutung
https://www.googleapis.com/auth/cloud-platform Vollzugriff auf alle Ressourcen und Dienste im angegebenen Cloud Platform-Projekt
https://www.googleapis.com/auth/compute Lese-/Schreibzugriff auf Google Compute Engine-Methoden
https://www.googleapis.com/auth/compute.readonly Lesezugriff auf Google Compute Engine-Methoden
Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation